Janet 的 Holistic Testing(全面测试)
《敏捷软件测试:测试人员与敏捷团队的实践指南》一书的作者 Janet Gregory 提出了一个新的概念“Holistic Testing”,暂且译为“全面测试”,指出要从更全面的视角来进行测试。
她和 Lisa Crispin 的敏捷测试课程也因此改名为“Holistic Testing”了。
01 Holistic Testing 模型
Janet 利用类似于 DevOps 循环的形式表示软件开发生命周期,分为发现、计划、理解、构建、部署、发布、观察、学习几个阶段,并指出在整个生命周期中的每个阶段都有相应的测试活动。Holistic Testing模型如下图所示:
(图片来源于:https://janetgregory.ca/testing-from-a-holistic-point-of-view/)
Janet 对她这个模型有两点关键解释:
采用无限循环表示,是认为测试应该是无限循环的,不是线性的,不应该有起点和终点,也不再谈测试左移和测试右移的概念。循环的左侧主要是指可以提前进行的测试活动,确保在“做正确的事情(Do the right things)”;循环的右侧则是指通过测试活动来发现错误并学习,以帮助“正确地做事情(Do the things right)”。
为啥不叫持续测试,是觉得持续测试的概念被误用了。现在大家普遍会将持续测试跟持续集成工具平台关联,认为持续测试主要是指自动化测试,但 Janet 认为测试不仅是自动化测试,还包括必要的手动测试活动环节。
更多关于 Holistic Testing 的详情,请参考 Janet 的文章和访谈:
02 我的理解
我对 Janet 关于测试的理念是非常认可的,不过为此搞出个新的概念似乎没多大必要,这个模型换汤不换药,并没有实质性的新东西。
1. 线性 or 环路
用线性流程来表示软件生命周期没有什么问题,毕竟一个软件产品会经历从无到有的过程,不管是增量迭代式开发,还是一步到位的瀑布式开发,都会有一个明确的起点。
当然,同时也是有反馈环存在的,并不是一条简单的直线。我在讲测试右移(生产环境下的QA)的时候,明确提出过环路的概念,需要将生产环境获取到的数据信息用来优化业务、优化软件开发和测试环节。在一页纸测试策略里也有清晰的体现,如下图中生产环境与软件开发过程需要形成良性环路:
2. 持续测试
质量内建中非常关键的一部分就是持续测试,而持续测试应该是包括软件生命周期中每个环节的每个测试相关活动,我在《敏捷测试的核心》一文中提到持续测试的时候,对其有较为详细的定义:
持续测试是在整个开发生命周期里的各个环节(生命周期最左侧,一直延续到最右侧的生产环境)的测试活动,以帮助快速收集反馈,从而正确地做事情。
持续测试的内容包括持续功能测试,也包括性能、安全等的内建、持续地测试;形式可以是静态分析、评审,也可以是动态的测试,包括手动执行的各种测试,以及持续集成流水线上的持续执行的自动化测试。
的确会有人对持续测试产生误解,认为主要是利用工具进行的自动化测试,这跟大家对工具平台的热捧脱不开干系。不过,持续测试这个说法本身是没有问题的,因为一个词被误用,而创造出一个新的概念或许没有必要。
03 写在最后
敏捷测试也好,Holistic testing(全面测试)也罢,亦或是 DevOps 里的质量保障,其实,概念与名称没那么重要,真正理解背后含义才是关键。
如果不理解核心的内容,只是信奉某一个概念框架,实践也只能流于表面形式,没法落到实处,难以带来价值。
推荐阅读以下文章,可能有助于理解那些需要理解的东西:
版权声明: 本文为 InfoQ 作者【BY林子】的原创文章。
原文链接:【http://xie.infoq.cn/article/cd42cb00ab6e3967a90e7b107】。文章转载请联系作者。
评论