免费的测试工具 -- 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 中有关的测试用例

上一篇下一篇

猜你喜欢

热点阅读