变异测试是一种技术,它可以发现测试未涵盖代码的哪些部分。 它类似于代码覆盖范围 ,但变异测试不限于在测试期间执行给定行的事实。 这个想法是修改生产代码(引入突变),这应该改变其行为(产生不同的结果)并导致单元测试失败。 缺少故障可能表明给定零件没有被测试充分覆盖。 突变检测的想法是很老 ,但它是相当不受欢迎。 尽管我在测试方面有相当的经验,但我最近发现它是在审查有关测试的新书的beta版中发现的。

PIT是“一种用于Java的基于快速字节码的突变测试系统,可以测试单元测试的有效性”。 这是一个非常年轻的项目,但很有希望。 它提供了一组变异运算符 ,这些变异运算符可以修改条件语句,数学运算,返回值和方法调用。

从最近发布的版本0.25开始,PIT(以实验方式)支持基于TestNG的测试(基于JUnit的测试除外)。 要从Maven使用它,需要将pitest-maven插件添加到pom.xml:

<plugin><plugin><groupid>org.pitest</groupid><artifactid>pitest-maven</artifactid><version>0.25</version>
</plugin>
</plugin>

在许多情况下,这就足够了。 默认情况下,inScopeClasses(用于运行的可变类和测试)和targetClasses(仅用于变异的候选对象)默认使用项目groupId,通常可以省略。 插件配置中可以配置几个选项 。 “ mvn org.pitest:pitest-maven:mutationCoverage”执行修改后的测试并生成突变报告,默认情况下该报告保存在target / pit-reports / yyMMddHHmm目录中。

指定类别的样本报告(单击放大)显示行覆盖率和突变覆盖率。 尽管有100%的线覆盖率(背景为浅绿色的线),PIT发现测试数据集无法正确覆盖边界条件。

参考:来自Solid Soft博客的JCG合作伙伴 Marcin Zajaczkowski的PIT和TestNG突变测试简介 。

翻译自: https://www.javacodegeeks.com/2012/04/introduction-to-mutation-testing-with.html

PIT和TestNG突变测试简介相关推荐

  1. pit和systick_PIT和TestNG突变测试简介

    pit和systick 变异测试是一种技术,它可以发现测试未涵盖代码的哪些部分. 它类似于代码覆盖范围 ,但变异测试不限于在测试期间执行给定行的事实. 这个想法是修改生产代码(引入突变),这应该改变其 ...

  2. 海贼王为什么画风突变_什么是突变测试?

    海贼王为什么画风突变 最近,我再三提到突变测试一词. 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白,所以我花了一些时间来追赶这个话题并尝试一下. 这篇文章总结了我的发现,作为对该 ...

  3. Spring MVC:测试简介

    测试是软件开发中最重要的部分之一. 井井有条的测试有助于使应用程序代码保持良好状态,并且处于工作状态. 有很多不同类型的测试和方法. 在本文中,我想对基于Spring MVC的应用程序进行单元测试进行 ...

  4. 突变测试_什么是突变测试?

    突变测试 最近,我反复提到"突变测试"一词. 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白,所以我花了一些时间来追赶这个话题,然后尝试一下. 这篇文章总结了我 ...

  5. [突变测试] 一种新的测试方法论

    突变操作 突变测试通过灵活可配置的突变操作集来从你的代码中编译产生新的代码. 例如CONDITIONALS_BOUNDARY_MUTATOR 改变条件边界突变会从源代码中生成下面的语句. if ( i ...

  6. 【Google Play】Google Play 开放式测试 ( 简介 | 发布开放式测试版本 )

    Google Play 上架完整流程 系列文章目录 [Google Play]创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 ) [Google Play]创建并设置应用 ( 访 ...

  7. java自动化测试报告_Java自动化测试框架-10 - TestNG之测试结果篇(详细教程)

    1.-测试结果 1.1-成功,失败和断言 测试被认为是成功的,如果它不引发任何异常完成,还是它扔的预期异常(请参阅文档expectedExceptions属性上找到的@Test注释). 您的测试方法通 ...

  8. 基于python渗透测试_Python中基于属性的测试简介

    基于python渗透测试 by Shashi Kumar Raja 由Shashi Kumar Raja Python中基于属性的测试简介 (Intro to property-based testi ...

  9. 软件测试测试 python_Python测试简介

    软件测试测试 python by Goran Aviani 通过Goran Aviani Python测试简介 (An introduction to testing in Python) You h ...

最新文章

  1. C#综合揭秘——Entity Framework 并发处理详解
  2. Ant编译编译APK、打包打包JS
  3. HEU 4048 Picking Balls
  4. 【STM32】FreeRTOS 中断配置和临界段
  5. 请谈一下Spring MVC的工作原理是怎样的?
  6. r语言中正定矩阵由于误差不正定_R语言之数据处理(一)
  7. php与数据库的连接用法 (签到一)
  8. suse 查看java版本_SLES 11 中JDK的安装和配置
  9. 【实践驱动开发2-001】wifi 在android 下的实现 - AR6000 系列移植详细步骤
  10. 5课件制作_【计算机论文】虚拟现实技术下多媒体课件开发的流程
  11. 树状数组 (数据结构)
  12. C++中使用GSoap
  13. 《数据挖掘概念与技术》第三版 范明 孟小峰译 课后习题答案(二)
  14. android签名命令行,Android系统签名位置及命令
  15. js设计模式-状态模式-示例(高压锅状态)
  16. 2021年11月软件设计师真题解析
  17. 如何让音乐软件的歌词在touch bar上面显示?
  18. pytorch入门教程(一):Tensor###tensor好好好####
  19. itextpdf生成pdf,指定样式及文字水印
  20. 软件工程专业计算机毕设选题推荐

热门文章

  1. java集合——集合框架
  2. vaadin教程_Vaadin教程
  3. travis-ci_使用Travis-CI的SpringBoot应用程序的CI / CD
  4. spring-bean版本_如何模拟Spring bean(版本2)
  5. go micro java_Java Micro Framework:您无法忽略的新趋势
  6. javaserver_如何在JavaServer Pages中使用Salesforce REST API
  7. 如何以及为什么使用Spoon分析,生成和转换Java代码
  8. java即时编译器_Java即时编译:不仅仅是一个流行词
  9. 打破冷漠僵局文章_研究僵局–第2部分
  10. restful服务端客户端_测试RESTful服务的客户端