--- title: 测试基础 date: 2023-04-11 18:55:28.668 updated: 2023-04-11 18:55:28.668 url: /archives/ceshijichu categories: - 软件测试 tags: - 测试基础 --- # 测试基础 ## 软件生命周期 ### 计划 人员:项目经理 输出:项目计划 内容:项目目标,大致需求,团队人员,时间要求 ### 需求分析 人员:产品经理、需求经理、需求工程师 输出:需求规格说明书(SRS) 内容: 1. 进一步确定用户需求 2. 软件功能的具体描述 3. 解决系统做什么的问题 ### 设计 人员:系统架构师,资深开发工程师 输出:概要设计说明书(HLD)、详细设计说明书(LLD) 内容: 1. 软件-子系统-模块-函数 2. 解决系统怎么做的问题 ### 编码 人员:开发工程师 输出:项目代码或程序 内容:系统的具体实现 ### 测试 人员:测试工程师 输出:测试计划,测试方案,测试用例,测试结果,缺陷报告,测试报告 内容: 1. 检查软件实现是否和需求一致 2. 检查软件实现是否有遗漏 ### 运维(维护) 人员:运维工程师 技术支持:系统的安装、部署、升级,问题排查 ## 常见软件研发流程 ### 瀑布模型 **串行的顺序流程** - 从计划到维护 - 重视文档,上一个阶段的输出是下一个阶段的输入 - 一个阶段完成,资源会大部分释放给其它项目,一般是多项目共享资源 - 一个阶段发现问题,返回上一个阶段解决 - 适合需求在项目初始阶段可以明确的周期较长的项目 - 软件要在项目的后期才能拿到 **分成三个阶段** 1. 定义阶段:计划和需求分析 2. 开发阶段:设计,编码,测试 3. 维护阶段:运行维护 ### 螺旋模型 **串行的顺序流程** - 分阶段实现功能,每个功能的开发都是采用瀑布模型 - 较早可以看到能运行的软件 - 一个原型完成后,经过风险评估进行下一个原型的开发 ### RUP **Rational Unified Process** 统一软件开发过程 并行流程 ### IPD **Integrated Product Development** 集成产品开发 并行流程 集成研发、生产、销售、采购,适合嵌入式研发企业和制造业 ## 什么是软件测试 ### 软件测试定义 软件测试是对软件的认知活动,软件测试不仅仅是发现缺陷,测试不一定要运行软件 ### 测试的目的 - 证明:证明软件可用 - 检测:检测软件质量,发现软件缺陷、错误和不足 - 预防:预防缺陷的产生 tip: 尽早开始测试 尽早检查开发人员的工作是否有错误和遗漏的地方 分析已发现的缺陷,避免缺陷的重复出现 **项目不同阶段测试的目的** - 项目早期:预防缺陷的产生 - 项目计划评审 - 需求文档评审 - 设计文档评审 - 测试用例评审 - 项目中期:先发现严重缺陷,让软件尽快稳定 - 项目后期:证明软件的功能都实现,可正常使用 ## 什么是缺陷 缺陷、故障、失效的区别 - **缺陷是软件内隐藏的问题** - 缺陷诱发出来产生故障 - 故障不能很好处理可能导致失效 ### 缺陷分类 - 额外实现:做多了,实现了需求里没有的功能 - 实现缺失:做少了,需求里的功能没有实现 - 实现错误:做错了,需求里的功能实现了但不符合预期