免费的测试工具 -- Infection
2021-12-10 本文已影响0人
forks1990
Infection
测试工具是开源的,这里的免费不是指费用,而是不需要额外付出努力,增加测试效果。
Infection 通过 mutants 变异因子修改被测代码,运行测试程序,验证测试程序是否能捕捉到错误,捕捉率越高,说明测试程序越有效。
发现更多错误
一开始接触这个概念,我认为是为了检查程序员的测试程序的。在我们要求了测试覆盖比例以后,程序员为了达到比例要求,糊弄测试。
但在试用了以后,发现这个理解太狭隘了。通过 Infection
捕捉到的情况,能发现更多的代码问题,比如边界问题,多余的代码
忽略掉 Assert
默认配置下,如果使用了 webmozart/assert 这样的 assert 库,Infection
会报告没有这些 assert 调用,测试程序还能正常运行(隐含指出代码是多余的)。当然是多余的,这就是 assert 的目的,检查不会发生的情况。
通过修改 Infection
配置文件来忽略:
{
"$schema": "https://raw.githubusercontent.com/infection/infection/0.25.4/resources/schema.json",
...
"mutators": {
"global-ignoreSourceCodeByRegex": [
"Assert::.*"
],
"@default": true
}
}
–threads={nproc} 参数提高性能
nproc
Linux 命令返回当前系统的 cpu 核心数量
检查部分代码
完整运行会很慢,可以用下面的命令行参数组合,只测试部分代码:
infection.phar --only-covering-test-cases --filter=src/Controller
--filter
控制要分析的源码范围
--only-covering-test-cases
只运行 --filter
中有关的测试用例