拓展阅读
test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍
test 系统学习-05-test jacoco 测试覆盖率与 idea 插件
test 系统学习-06-test jacoco
SonarQube
Docker learn-29-docker 安装 sonarQube with mysql
Ubuntu Sonar
突变测试是什么?
突变测试是一种软件测试方法,其目的是评估测试套件对于代码变化的敏感性和有效性。
在突变测试中,测试代码的一部分(通常是通过引入故意的代码变化)被修改,然后运行测试套件来检查是否有测试用例能够检测到这些变化。如果测试套件能够发现变化,说明测试用例足够强大,能够捕捉到代码的变动;如果测试用例未能检测到变化,说明测试套件可能存在不足,需要进一步完善。
突变测试的核心思想是通过模拟代码中的错误变化,来评估测试用例的质量。这种方法有助于发现测试用例中的缺陷,提高测试套件的可靠性。
突变测试是一种动态分析方法,它不仅关注代码覆盖率,还着眼于测试用例是否能够捕捉到潜在的错误。
突变测试的基本步骤包括:
-
变异: 对源代码进行故意的变异操作,例如改变条件语句、修改运算符、删除或插入代码等。每一次变异都代表一个可能的错误情况。
-
运行测试套件: 使用变异后的代码运行测试套件。测试套件包含了一系列测试用例,用于验证程序的正确性。
-
检测变异是否被杀死: 如果测试套件能够检测到变异,即测试用例能够发现引入的错误,这个变异就被称为“被杀死”(killed)。如果测试套件未能检测到变异,即测试用例未能发现引入的错误,这个变异就被称为“存活”(alive)。
-
生成报告: 生成突变测试的报告,其中记录了每个变异的状态(被杀死或存活)、测试用例的执行情况以及其他相关信息。
突变测试的优势在于它可以帮助开发人员评估测试套件的质量,并指导他们改进测试用例以提高代码覆盖率和错误检测率。
突变测试通常用于衡量测试套件对于软件代码的健壮性,尤其是在复杂系统中,它可以帮助发现潜在的、被遗漏的错误。
PIT 和 fuzz test 思想主要区别
-
领域和目标:
- PIT主要关注测试用例对于代码的质量,通过变异测试来评估测试的健壮性。
- 模糊测试主要关注发现系统中的异常行为,通过提供随机或不寻常的输入来测试系统的健壮性和安全性。
-
输入变异方式:
- PIT通过修改源代码引入变异。
- 模糊测试通过提供不同类型的输入来变异测试数据。
-
发现的问题类型:
- PIT主要发现测试用例是否足够强大,能够捕捉到代码中的潜在问题。
- 模糊测试主要发现系统的安全漏洞、软件缺陷或异常行为。