前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >变异测试

变异测试

作者头像
MickyInvQ
发布2021-03-04 10:36:56
1.6K0
发布2021-03-04 10:36:56
举报
文章被收录于专栏:InvQ的专栏InvQ的专栏

什么是变异测试?

变异测试,英文Mutation Testing,是使用变异器 (切换数学运算符,更改返回类型,删除调用等)将代码修改为不同的变异(基于变异器创建新代码),并检查单元测试是否失败。好的单元测试应该使所有突变都失败(杀死)。

所以,变异测试的有效性可以衡量杀死了多少个突变。

变异测试是覆盖率的一个很好的补充。相比覆盖率,它能够使单元测试更加健壮。

执行变异测试

在执行变异测试前需要先执行单元测试,不然变异测试有可能找不到单元测试类。

  1. 找到对应模块下的pitest插件:
在这里插入图片描述
在这里插入图片描述

注: 如果是要执行指定某个包路径下所有类的单元测试变异测试,则通过targetClasses和targetTests的模糊匹配,比如这样:

com.xxx.util.* testng

  1. 找到插件双击 "pitest:mutationCoverage"即可运行变异测试。运行完成后,会自动生成变异测试报告,报告位置一般在对应模块的target/pit-reports目录下: 报告会详细列出每个包、每个类的覆盖率,变异通过率等。
在这里插入图片描述
在这里插入图片描述

从上面很明显可以看到我的单元测试其实并没有写得完整,我们看看里面哪些变异详细报告:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果我的单元测试加上边界测试:

在这里插入图片描述
在这里插入图片描述

再次执行,变异测试全覆盖了!

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是变异测试?
  • 执行变异测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档