在《 从测试左移到精准测试浅析 》中提到了测试左移,本文从方法论层面借助Parasoft的实践总结介绍一下测试左移。
对于需求,代码,质量,效率,《代码大全》很早就从软件工程实践角度说明了一个bug产生的不同阶段,修复一个bug的成本从需求阶段,设计阶段,测试机阶段有着天壤差别。不仅从成本上,从修复难度,引入新问题的可能性,沟通成本,团队状态也会有很大的影响。
测试左移本质上是要尽早的发现,预防问题,使用必要的测试手段在软件开发周期的早些阶段发现问题。
01
为什么要左移?
Capters Jones 有个Global的效能和质量分析图,列出了常见的软件开发过程中defect发现的阶段,可以看到,大部分的问题在编码阶段引入。
编码阶段引入问题的原因可能是代码问题,需求理解问题,异常处理cover不到,集成阶段,多团队合作对接过程等。
然而,这些问题在生产过程中,都是在什么时候发现的呢?
在编码阶段发现的问题,几乎没有在编码阶段发现。
Bug的修复成本如何呢?
在集成阶段发现问题的修复成本是编码阶段修复成本的40倍!
造成修复成本高的原因有几类:
a. 出现一个现场问题,如何定位,多团队如何配合,如何确定根因?
b. 线上问题,集成问题,牵扯到多个模块,如何复现?如何模拟真实环境?多线程的场景?
c. 如何确定修复方案,谁来修,临时方案还是长久,是否是架构问题,多个模块都需要修复会再一次见解引入问题成本,修复会不会引入其他问题?
从不重视代码质量的第一天开始,就埋下了问题修复,定位的成本和修复问题再次引入问题的成本。
测试左移,测试early,open!
左移,需要一个重要的基础,工程习惯,SDLC成熟度,测试分层,持续集成,链路上延展发布的节奏,纵深上需要贴合业务的专精领域的深度探索,代码扫描(规范,问题,安全,异常等),CR, 代码提交行为分析,test double(mock , fake, stub,dummy), UT, 自动化,验收测试等。
左移需要工程效率具备不亚于研发的代码能力。
最近各公司都在探索在白盒扫描的实践,基于业务的规则定制,成本低,易于发现,容易定位。
需要注意的问题? 左移不是要加重研发的工作量!
更早的发现问题是一方面,更重要的减少问题的数量,提升研发工程质量意识。
02
如何左移?
a. 代码扫描,单元测试,发现问题不是关键,关联是在质量意识的生态闭环中,不断减少存量问题,进而不断减少问题的发生。
b. 编码规范,工程标准(git 提交规范,上线规范,研发模式等),对于减少线上问题非常重要,在去年的一个bug分析专项中,通过bug分析,代码提交行为分析反推业务改进的专项中,在现版本迭代中,减少了56%的问题,有兴趣的可以单钉交流。
c. 引入test double,进而Continuous Testing, 上下游依赖,第三方服务,数据构造,做隔离,Mock(如阿里的doom), Stub(常见的搜索回放),能够有效模拟场景,提升稳定性,降低数据准备的成本,方便模拟异常场景,简化问题定位。
在面临转型的时候,测试左移,夯实研发能力是一条重要的角度和突破,前路慢慢,需要共建,配合,不管是什么角色,只把问题留给合作方的都是耍流氓。
参考:
https://blog.parasoft.com/what-is-the-shift-left-approach-to-software-testing
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Flutter 学习之路 - 测试(单元测试,Widget 测试,集成测试)
- itest(爱测试)接口测试&敏捷测试管理 7.7.7 发布,接口测试重大升级
- 性能测试vs压力测试vs负载测试
- SpringBoot | 第十三章:测试相关(单元测试、性能测试)
- 敏捷测试VS传统测试对比,6招玩转敏捷测试!
- itest(爱测试)接口测试&敏捷测试管理平台 8.1.0 发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Node.js开发实战
[美] Jim R. Wilson / 梅晴光、杜万智、陈琳、纪清华、段鹏飞 / 华中科技大学出版社 / 2018-11-10 / 99.90元
2018年美国亚马逊书店排名第一的Node.js开发教程。 . Node.js是基于Chrome V8引擎的JavaScript运行环境,它采用事件驱动、非阻塞式I/O模型,具有轻量、高效的特点。Node.j s 工作在前端代码与 数据存储层之间,能够提高web应用的工作效率和 响应速度。本书以最新版Node.js 8为基础,从实际案例出发 讲解Node.js的核心工作原理和实用开发技......一起来看看 《Node.js开发实战》 这本书的介绍吧!