编译:TesterHome
作者:Jersey Su,Yahoo 工程师
Shift-Left Testing (测试左移) 这个词我们追朔到 2001 年 Larry Smith 在 Dr.Dobb’s 期刊刊登的一篇文章。提到很多时候 QA 总是用手动测试完成任务,并且需要通过质量保证过程才能知道代码质量。
Bugs are cheap when caught young — Larry Smith
测试左移并非要代替所有的测试人员,它背后的概念更多的是越早且频繁地发现程序缺陷,因此开发人员可以更容易地修复问题,且成本跟压力都更小。同时它也回答了在不影响品质下,加速软件开发的方法。但这是什么意思呢?
回顾 1970–1990 年代,传统的开发模型 (SDLC) 是有顺序性的,从计划 -> 分析 -> 设计 -> 实操 -> 测试和整合 -> 维护,测试加入的时间都会在流程后期, 或者是整个流程的最后一项。
即使到现在, 很多团队还是会将测试放在开发流程的最后, 这也会造成很多潜在的问题:
在传统的开发流程中,我们同时也会意识到发现 bug 的成本会随者时间而增加。因此,在测试左移的实践中,人们尝试将测试往开发流程的左边推送,在流程的早期就加入测试。
测试左移的概念,不只能够增加测试人员跟开发人员之间的合作,同时也反映出测试应该在更早期就介入。
1、增加发布的速度
假如你可以在开发前期就找到一个严重的 Bug,可以就能更有效率且容易的修复, 最显著的作用就是减少发布时间,反之就会增加发布时间。
2、加强测试的覆盖率
当一个项目开始将测试考虑在开发前期的时候,自然而然你也会考量到功能的可测试性,并且增加单元测试、功能测试、性能测试等等。这无形间也是加强了整个产品的测试覆盖率,间接会影响到整体的产品品质。
3、简化流程
老实说,测试左移不是一件简单的事情,但非常值得花时间跟精力来投资。对于整个测试团队来说,有更多的时间去深入了解产品,部署测试策略及改善测试方法。而且,还可以帮助测试团队更容易得导入测试工具及技术。
提早测试也可以加更牢固地来巩固产品的商业逻辑跟测试 Script,并且驱动整个团队投入自动化测试。
4、减少开发跟测试的成本
发现错误其实在程序开发里面是一项挑战,越在后期发现的 Bug 有时候越难处理,间接投入成本也会提高。举个例子来说,如果是一个 payment 的 SDK,在预计上线前期发现一个严重的安全性问题,公司势必要投入更多的金钱人力精力来修复这个缺陷。复杂的线上产品,更难去纠错及修复,更别说是后期维护所附上的代价。
1、良好的 Planning
当产品需求都确定的时候,开发及测试人员应该要尽可能地在前期开始计划,并且更好地规划如何让产品进行测试,让整体的产品的易测试性提升。
2、完整了解产品需求
通过 Sprint Planning 我们尽可能的厘清产品需求,确保团队成员在产品开发环节不会有错误的认知,比如需求误解、设计不当、团队没对齐目标等。
3、定义品质的标准
由于开发者并不是那么深厚的测试基础,因此测试团队应该要明确的定义品质的标准,因此开发者在执行测试时可以厘清 bug 的类型及状态。
4、拥抱测试自动化
开发团队应该尽可能地将测试自动化,这不仅能够快速地知道代码的品质, 也能够确保功能的正确性。测试自动化是一个测试左移其中一个很重要的因子。
5、导入测试工具
俗话说,“工具善其事,必先利其器”。尝试去了解更多的工具,帮助团队建立起 CI/CD,带领团队一起前进。
测试左移在测试领域已经是一个显学,笔者在目前的工作环境中也注重这个测试方法的实践,特别是笔者工作的环境中,需要面对跨区域及跨时区的团队协作,任何把测试提早的事情,都有助于公司减少成本并帮助团队前进。改变是痛苦,但不改变会更加痛苦。