《持续交付》第四章 测试策略的实现
2017-06-13 本文已影响0人
杨慧莉
引言
- 质量内嵌是指从多个层次(单元,组件和验收)上写自动化测试,并将其作为部署流水线的一部分来执行,即每次应用程序的代码、配置或环境以及运行时所需软件发生变化时,都要执行一次
- 质量内嵌意味着要不断地改进自动化测试策略
- 在一个理想的项目里,项目一开始,测试人员就会与开发人员以及客户一起写自动化测试。
- 每次有对应用程序的修改时,持续集成系统都会运行这些自动化测试套件,即这些测试套件也是一个回归测试集合
- 测试策略的设计主要是识别和评估项目风险的优先级,以及决定采用哪些行动来缓解风险的一个过程
测试的分类
业务导向且支持开发过程的测试
- 通常被称作功能测试或验收测试
- 验收测试确保用户故事的验收条件得到满足
- 旨在把测试脚本与实现分离,使测试脚本和实现可同步进行
- 等价划分分析和边界值分析能够帮你得到尽可能小的用例集合
- 系统的验收测试以及自动化验收测试应该运行在类生产环境的上,并且测试工具与应用交互的方式应该和真正的用户使用应用的方式相同
技术导向且支持开发过程的测试
- 有三种测试属于这一象限:单元测试,组件测试,部署测试
- 单元测试常常依赖于用测试替身模拟系统其他部分
- 组件测试常常用于测试更大的功能集合,因此通常运行会慢一些
- 部署测试用于检查部署过程是否正常
业务导向且评价项目的测试
- 这类测试可以验证我们实际交付给用户的应用软件是否符合期望
- 软件开发是一个自然的迭代过程,它建立在一个有效的反馈环之上
- 在此象限中包括四种测试:演示,探索性测试,易用性测试以及beta测试
- 频繁地演示功能,以确保尽早发现对需求规范的错误理解或有问题的需求规范
- 探索性策划可以看成是一种手工测试,在测试的过程中利用测试时获取的信息设计更好的测试
- 易用性测试是为了验证用户是否能够很容易地使用该应用软件完成工作
- beta测试过程中通过收集真正用户对于新功能使用情况的统计数据来进行分析
技术导向且评价项目的测试
- 验收测试根据是否面向业务法可以分为:功能测试和非功能测试
- 功能测试和非功能测试应该处于同样重要的地位
- 非功能测试往往需要更多的资源,且运行效率比功能测试更低一些
- 对于更复杂或关键的项目,在项目开始时至少要建立一些基本的非功能测试
测试替身
包括哑对象,假对象,桩,模拟对象和spy
现实中的情况与应对策略
新项目
- 一开始就要写自动化验收测试
- 必须让团队的每个人都接受这种做法
- 应细心编写验收测试,确保它们能正确反映用户故事中从用户视角所定义的业务价值
项目进行中
- 引入自动化测试最好的方式是选择应用程序中那些最常见,最重要,且高价值的用例为起点
- 测试覆盖的范围稍稍宽于通常的用户故事级别的验收测试
遗留系统
- 没有自动化测试的系统就是遗留系统
- 创建回归测试的价值在于保护系统当前的功能
- 覆盖核心功能的测试是非常重要的冒烟测试
- 只对实现系统功能的具体代码进行自动化测试
总结
- Happy Path可以通过“given-when-then”的方式进行描述
- 代码覆盖率高于80%的测试视为“全面的”测试
- 测试覆盖率中的测试包括单元测是,组检测试和验收测试
- 功能测试和非功能测试应处于同等重要的位置