《软件测试_软件测试策略与方法汇编》由会员分享,可在线阅读,更多相关《软件测试_软件测试策略与方法汇编(162页珍藏版)》请在金锄头文库上搜索。
1、2019年11月10日,1,软件测试培训课程,第3单元 软件测试策略与方法,2019年11月10日,2,第3单元 软件测试策略与方法,单元测试 集成测试 系统测试 验收测试,2019年11月10日,3,软件测试策略与方法,单元目标 回答关于单元测试、集成测试、系统测试、验收测试的下列问题 这些测试分别达到什么目标? 这些测试所依据的工作基础是什么? 这些测试结束前产生什么工作结果? 这些测试如何做,具体的工作内容和流程是什么? 这些测试中的一些其他常见问题?,2019年11月10日,4,软件测试策略与方法,讨论题 在单元测试中采用下面哪种测试技术? 白盒测试技术 黑盒测试技术 灰盒测试技术 探
2、查式测试技术,2019年11月10日,5,软件测试策略与方法,单元测试 单元测试目标 单元测试内容 单元测试策略 单元测试流程 单元测试规划 单元测试设计 单元测试实施,2019年11月10日,6,软件测试策略与方法,单元测试 单元测试目标 单元测试工作范围做什么,不做什么 时间目标完成单元测试的进度要求 成本目标用于单元测试的预算 单元测试的质量要求,2019年11月10日,7,软件测试策略与方法,单元测试 单元测试目标 单元测试工作范围 单元测试计划及评审 单元测试案例设计及评审 单元测试代码开发 单元测试实施 其他,2019年11月10日,8,软件测试策略与方法,单元测试 单元测试目标
3、单元测试工作范围 单元测试的主要交付物 单元测试计划 单元测试案例 单元测试代码 软件缺陷报告 单元测试报告 通过单元测试的单元代码 更新后的相关软件文档,2019年11月10日,9,软件测试策略与方法,单元测试 单元测试目标 单元测试的质量要求 正确地实现规定的功能 错误处理正确 边界条件处理正确 达到预定的代码覆盖率 单元测试后发现的严重缺陷数小于 n,2019年11月10日,10,软件测试策略与方法,单元测试 单元测试目标 单元测试的质量要求 代码覆盖率目标 语句覆盖率 100% 分支覆盖率 100% 条件组合覆盖率 50% 以上(可选) 独立路径覆盖率 100% 错误处理路径覆盖率 1
4、00%,2019年11月10日,11,软件测试策略与方法,单元测试 单元测试内容 单元功能 边界条件 错误处理 性能特性 代码覆盖,2019年11月10日,12,软件测试策略与方法,单元测试 单元测试内容 单元功能 以需求规格说明书和软件设计说明书为依据,设计一组测试案例,判断单元是否正确实现规定的功能 “正确”的定义在项目进程中可能发生变化 使用反向关联,例如在数据库中用查找检查插入的记录 使用交叉检查,例如利用其他计算方法的结果对比,2019年11月10日,13,软件测试策略与方法,单元测试 单元测试内容 边界条件 单元接口(单元参数、全局数据、数据库/数据文件)的边界值的处理 局部变量/
5、局部数据结构的边界值的处理 使用边界值分析方法,2019年11月10日,14,软件测试策略与方法,单元测试 单元测试内容 错误处理 尽可能强制产生所有错误条件,遍历所有的错误处理路径,验证每项错误处理是正确的,2019年11月10日,15,软件测试策略与方法,单元测试 单元测试内容 性能特性 高负载处理 大量数据的处理,2019年11月10日,16,软件测试策略与方法,单元测试 单元测试内容 代码覆盖 实时监测达到的代码覆盖率 必要时补充测试案例增加覆盖率,2019年11月10日,17,软件测试策略与方法,单元测试 单元测试内容 常见的局部变量/数据结构错误 不正确的或误用的计算优先级 不正确
6、的初始化 不正确的数据类型转换 数据精确度不够或计算误差过大 不正确的表达式 除数为零,2019年11月10日,18,软件测试策略与方法,单元测试 单元测试内容 常见的逻辑比较和控制流错误 不同数据类型的比较 不正确的逻辑运算符或优先级 不正确的循环终止或死循环 由于数据精确度不够而使比较出错 不适当地修改循环变量而使循环控制出错,2019年11月10日,19,软件测试策略与方法,单元测试 单元测试内容 常见的错误处理问题 错误信息不易理解,不准确 错误信息与实际遇到的错误不一致 错误信息没有包含足够的帮助错误定位的内容 遗漏本应该处理的错误 错误发生后没有进入预期的错误处理路径 异常条件处理
7、不正确,2019年11月10日,20,软件测试策略与方法,讨论题 在单元测试中是否要记录和跟踪发现的软件缺陷?,2019年11月10日,21,软件测试策略与方法,单元测试 单元测试策略 分离式单元测试 分层式单元测试,2019年11月10日,22,软件测试策略与方法,单元测试 单元测试策略 分离式单元测试 把各软件单元分离开来,独立进行单元测试 在开发软件单元之前或同时,开发单元测试所需要的每个单元的单元测试代码驱动模块和桩模块 每当软件单元变化时对应的单元测试代码应随之更新,2019年11月10日,23,软件测试策略与方法,单元测试 单元测试策略 分离式单元测试,2019年11月10日,24
8、,软件测试策略与方法,单元测试 单元测试策略 分离式单元测试 驱动模块结构 int DriverModule() while(存在未使用的测试案例) 取下一测试案例; 调用被测试的模块; 处理运行结果; ,2019年11月10日,25,软件测试策略与方法,单元测试 单元测试策略 分离式单元测试 桩模块结构 int StubModule(.) return TRUE; ,2019年11月10日,26,软件测试策略与方法,单元测试策略 单元测试策略 分层式单元测试 在软件结构上把应用系统分为几个层次,2019年11月10日,27,软件测试策略与方法,单元测试 单元测试策略 分层式单元测试 最先完成
9、最底层的单元测试,然后自底向上,完成各层次的单元测试 在测试每一层前,需要开发这一层的测试驱动程序,由于这一层的较低层次的单元已经就绪,在这一层测试时可以用较低层次的单元替代桩模块,2019年11月10日,28,软件测试策略与方法,单元测试 单元测试策略 分层式单元测试 节省开发和维护桩模块的时间和费用 在单元测试的同时可以同步完成集成测试 适合面向对象的应用系统,2019年11月10日,29,软件测试策略与方法,单元测试 单元测试策略 分层式单元测试 一个示例,2019年11月10日,30,软件测试策略与方法,单元测试 单元测试流程 单元测试规划 单元测试设计 单元测试实施,2019年11月
10、10日,31,软件测试策略与方法,单元测试 单元测试流程 单元测试规划 明确单元测试范围及任务 估计单元测试的规模、工作量和工期等 制订单元测试计划 评审和批准单元测试计划,2019年11月10日,32,软件测试策略与方法,单元测试 单元测试流程 单元测试设计 设计单元测试案例 评审单元测试案例 开发单元测试代码 审查单元测试代码,2019年11月10日,33,软件测试策略与方法,单元测试 单元测试流程 单元测试实施 建立单元测试环境 执行单元测试 记录和跟踪软件缺陷 修复软件缺陷,进行回归测试 更新相关的软件文档 编写单元测试报告 评审和批准单元测试报告,2019年11月10日,34,软件测
11、试策略与方法,讨论题 您认为单元测试的难点是什么?,2019年11月10日,35,软件测试策略与方法,单元测试 单元测试规划 测试目标及完成准则 测试范围及测试任务 测试配置与环境 测试组织 测试进度安排 测试交付物和会议计划 质量计划与风险管理,2019年11月10日,36,软件测试策略与方法,单元测试 单元测试规划 单元测试阶段完成准则(参考) 所有单元测试案例已经运行 达到预定的覆盖率目标 发现的所有的软件缺陷已经解决和关闭 对软件缺陷的所有修改都已进行了回归测试 修改软件缺陷后,所有相关的软件文档的版本均已经更新 单元测试报告已经通过评审并获得批准,2019年11月10日,37,软件测
12、试策略与方法,单元测试 单元测试设计 主要工作产品 单元测试代码、单元测试案例 内部使用,非产品代码,不包含于产品的发布版本 单元测试反复进行,多次重复使用它们 象开发单元代码那样开发单元测试代码 可读性、可维护性、可复用性,2019年11月10日,38,软件测试策略与方法,单元测试 单元测试设计 主要工作产品 一个简单的示例使用 JUnit,2019年11月10日,39,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 考虑更多情况的几个示例使用 JUnit 错误处理测试 性能特性测试 Set Up 和 Tear Down 测试集 Mock 对象,2019年11月10日,40,软件测
13、试策略与方法,单元测试 单元测试设计 单元测试代码 JUnit 的一个测试代码骨架,2019年11月10日,41,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 单元测试代码规范 测试输入和结果数据规范 开发和维护过程 配置管理,2019年11月10日,42,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 单元测试代码规范 一个参考版本,2019年11月10日,43,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 测试输入和结果数据规范 将测试输入数据与单元测试代码分离,提高其复用性和可维护性 - 绑定具体测试数据和单元测试代码不利于复用和维护 利用数据库或数据文
14、件保存测试输入数据、测试预期结果数据,2019年11月10日,44,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 测试输入和结果数据规范 确定测试输入数据和测试预期结果数据的存储格式标准和维护规范 将预期结果保存于数据文件作为比较基准,以实现自动比较,2019年11月10日,45,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 测试输入和结果数据规范 利用数据文件保存测试数据的一个示例使用 JUnit,2019年11月10日,46,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 开发和维护过程 编写测试案例和测试代码 评审测试案例和测试代码 根据评审修改测试案例
15、和测试代码 编写能通过所有测试的产品代码,2019年11月10日,47,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 开发和维护过程(续) 评审产品代码和测试代码 根据评审修改测试代码和产品代码,2019年11月10日,48,软件测试策略与方法,单元测试 单元测试设计 单元测试代码 配置管理 标识要纳入配置管理的单元测试代码,赋予唯一的标识符,说明其相关的属性 建立单元测试代码的备份和使用流程、变更控制流程 单元测试代码在用于单元测试前应通过质量检查(同单元代码一起) 定期报告单元测试代码的属性变化情况和变更处理状态,2019年11月10日,49,软件测试策略与方法,单元测试 单元
16、测试设计 单元测试代码 配置管理 测试代码存放在哪里?,2019年11月10日,50,软件测试策略与方法,单元测试 单元测试实施 尽量使单元测试运行过程自动化 测试比较低效、烦琐:大量的单元测试案例、反复多次的执行(例如检入测试) 为开发人员配备合适的测试工具,包括调试工具、代码覆盖率工具、缺陷跟踪系统等 利用程序开发环境的代码跟踪、断点设置、变量观察和强制赋值功能,2019年11月10日,51,软件测试策略与方法,单元测试 单元测试实施 软件缺陷报告参考模板 单元测试报告参考模板,2019年11月10日,52,软件测试策略与方法,集成测试 集成测试目标及内容 集成测试流程 集成策略 分层式集成测试,2019年11月10日,53,软件测试策略与方法,集成测试 集成测试目标及内容 集成测试工作范围 集成测试计划及评审 集成测试案例设计及评审 集成测试代码开发 集成测试实施 其他,2019年11月10日,