Ira*_*ter 16
这是一篇关于如何为任意语言实现测试覆盖率工具的技术论文.
我的公司基于这个原则为Java,C#,C++,PHP,COBOL,PLSQL ......构建了一系列测试覆盖工具.
它要求您在启用代码覆盖率分析的情况下运行一次测试,然后简单地计算所覆盖的块(即范围块)的数量,并与您正在测试的项目中的块总数进行比较。
基本推理是,如果覆盖了代码块的每种可能的组合,则所有代码路径都被覆盖了1。反对过分重视代码覆盖率数字的主要论点是,像 getter 和 setter 这样的“简单”块,它们没有提供任何实际价值(并且几乎不会出错......)与更容易出错的代码块一样重要。
1) 正如Ira Baxter在评论中指出的,这句话之前的措辞是不正确的。请阅读评论以对此进行一些讨论。
我知道这是一个老问题,但如果您仍然感兴趣,您可以通过查看开源项目OpenCover来查看如何为 .NET 应用程序执行此类检测的示例。
OpenCover 在代码中的重要点插入检测点。
在使用 Mono.Cecil 定位适当的点并从控制台主机传递到分析器后,所有这些规则都将应用于CoverageInstrumentation.cpp。
PartCover 的源代码也可用(如所示),但这很难遵循,但它也使用来自 PDB 的序列点来确定它在哪里检测代码。
| 归档时间: |
|
| 查看次数: |
17226 次 |
| 最近记录: |