什么是测试象限?
敏捷测试象限是什么呢?我们先来上个图:
划分维度
通过上图我们可以看出主要是通过业务、技术、检查预期输出及分析未定义的、未知的和意料之外的四个维度,将测试进行切割,分为四个象限。
业务维度:
业务维度即面向业务,也就是面向客户的需求,而客户的需求往往可能只是一句话,或者是一个模糊的感受。面对这样抽象的需求往往会让开发团队很难受,做出来的东西达不到客户的要求,经常面临返工。验收测试驱动开发(ATDD)就是通过需求实例化的思想来避免抽象导致的理解偏差,从业务的层面来支撑团队的开发。技术维度:
技术维度即面向技术,从技术角度来分析和验证用户不一定能关注到的那些非功能性需求,帮助交付高质量的产品。检查预期输出:
检查预期输出,这个应该比较好理解;在执行测试之前,已经明确知道相应的输入或指定的动作会有相应的输出或者交互,e.g. 我们常做的功能测试就是这么一个套路:输入(数据+动作) 》应用程序 》输出(预期结果)。分析未定义的、未知的和意料之外的:
我们在评价一个产品的质量除了需求文档或者原型上面要求的,还会有一些隐形的需求,e.g. 用户体验方面,应用启动时间等。
第一象限
第一象限主要是围绕业务层面,进行分析未定义的、未知的和意料之外的方面进行测试;主要包含如下方面,e.g:
- 探索式测试
- 可用性测试
- 干系人影响
- A/B测试
- 用法分析
第二象限
第二象限主要是围绕业务层面,进行检查预期输出方面的测试;主要包含如下方面,e.g:
- 实例化需求
- 性能测试
- 合规性测试
- 回归测试
- 假设异常测试
第三象限
第三象限主要是通过技术的角度或者手段,进行检查预期的输出进行测试,保证质量,e.g:
- 单元测试
- 集成测试
- 数据格式
- API测试
- 兼容测试
第四象限
第四象限主要是通过技术的角度或者手段,分析为定义的、未知的和意料之外的方面进行测试,e.g:
- 负载测试
- 渗透测试
- 产品动态
- 冒烟测试
有什么意义?
思考预期结果的检查与未预先定义结果的分析能够帮我们解读目前软件交付团队要面对的几个重要的问题:
安全性关注点应该划分为针对加密、数据保护、认证等合规性的功能测试(特别是针对预先定义的预期结果的所有检查),和渗透或调查(未先定义的)。这样,交互团队和业务方就可以更好的围绕功能性的安全部分展开讨论了。
性能关注点可划分为通过运行业务场景来证明双方协定的服务水平和能力、持续交付(预先定义的)和负载测试(哪里是拐点?)。这样交付团队和业务需求方就可以更好的定义性能预期了,避免大家把性能作为纯粹的技术关注点来处理。
探索式测试就更明显了,它可以明确地划分为技术性和面向业务的探索式测试。这样划分就可以讨论技术性探索式测试应该由开发人员来执行,还是由测试人员通过现有的自动化框架来反复执行了;讨论什么应该纳入到面向业务的探索式测试的范畴也会变得更容易了。
构建-度量-学习式的产品测试非常适合这个模型,当讨论这些测试对一个明确的假定有怎样的需要,以及先把东西推出通过用法分析来看有怎样的不同时,可以通过这个模型进行推进讨论,e.g:
如何把监控日志作为一个持续的测试技术关注点,通过监控日志来找出未知的问题。这些在部署之前很难检查,自动化的成本也很高,但却能够为团队提供很大的支持。
最后
最重要的是,结合这种结构化的思维,通过使用不同的横坐标,可提高我们的意识,清楚所有分类不是为了贴合典型的测试计划或者测试报告,而是其本身能带来的巨大价值。
未完待续。。。欢迎大家关注我的公众号:
参考资料:
1. 深入敏捷测试-整个敏捷团队的学习之旅