扫码阅读
手机扫码阅读
一个即将秃头的工程师,解答你对“变异测试”的所有困惑
924 2023-07-15
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章来源:
茹炳晟聊软件研发
扫码关注公众号
从测试覆盖率的局限性谈起
单元测试后的代码覆盖率常用来衡量测试的充分性和完整性,但高覆盖率并不等同于高代码质量。测试覆盖率不等于测试有效性,这就是变异测试(Mutation Testing)所要解决的问题。
变异测试的基本概念
变异测试是基于错误注入的测试方式,通过人为在代码中注入错误,检验现有测试用例是否能发现这些错误。变异测试概念由Richard Lipton于1971年提出,1980年出现首个工具,但工业界关注度低,尤其在单元测试不完备的情况下。
实施变异测试的步骤
变异测试过程包括生成变异体源代码、使用测试用例对原代码和变异体代码进行测试,以及比较测试结果。测试结果的不同表明测试用例能发现注入的错误,即测试用例有效;相同则相反。
主流变异测试工具使用简介
介绍了三款主流变异测试工具:Pitest针对Java,Stryker Mutator适用于JavaScript,C#和Scala,而MuDroid支持Android应用程序。这些工具在工业界有实际应用价值。
变异测试的工程化实践(纯干货)
工程化实践包括通过CI集成全流程,流水线并发执行降低时间,限定范围以提升效率,结合精准测试,建立变异分门禁计算,以及智能化测试用例增补和修改。
变异测试在接口测试中的应用与探索
接口测试中引入变异测试概念有助于评估测试用例的有效性,但实施中会遇到服务部署等问题。技术和工程实践如动态构造变异体、热部署和基于容器化的环境部署是需要的解决方案。
推荐阅读
推荐两本关于软件研发质量和效率提升的新书。
想要了解更多内容?
文章来源:
茹炳晟聊软件研发
扫码关注公众号
茹炳晟聊软件研发的其他文章
混沌工程杂谈
谈谈我对混沌工程的一些理解和思考,希望对你有所启发。
对抗软件规模与复杂度的战争:救命、治病、养生(上篇)
在软件系统层面,对于大型软件来讲“when things work, nobody knows why”俨然已经是常态。随着时间的推移,已经没有任何一个人能搞清楚系统到底是如何工作的。
浅谈软件开发中的人,过程与技术
核心观点 人是软件开发的执行者。过程是软件开发的体制。技术是软件开发的精髓。三者缺一不可,却是以人这个根本原
解读软件工程中的”反直觉“现象
- 业务越不行,研发反而越忙 -
这个结论看着不对吧??
ChatGPT在GUI自动化测试领域的应用
ChatGPT在GUI自动化测试领域的应用
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线