Jam*_*ady 8 language-agnostic unit-testing code-coverage
大多数已建立的语言都有可用的可靠测试覆盖工具,但功能深度各不相同.
此外,所有各种VM和编译器都具有这样的异构结构,例如,编写代码覆盖工具必须是C中与Lisp完全不同的工作.
sys.settrace直接告诉你哪些行正在执行我对不同语言的代码覆盖率的实现感兴趣:
基本上所有代码覆盖工具都会检测代码,以便检查代码的哪些部分已执行.
根据您提供的链接中的定义,从编写仪器的人的角度来看,C0和C1非常相似.唯一的区别是您放置代码的位置.我将进一步推测C1比C0更容易,因为仪器发生在抽象语法级别上,其中行结束不太重要.
我说C1更容易的另一个原因是因为它处理语法实体而不是词法实体:你将如何衡量:
if
c > 1 && c
< 10
then
blabla
end
Run Code Online (Sandbox Code Playgroud)
好吧,只是一个想法.
至于C2,我从来没有在实践中看到它.原因是你可以得到一个指数式的爆炸:
if c1 then * else * end
if c2 then * else * end
...
if cn then * else * end
Run Code Online (Sandbox Code Playgroud)
对于n行代码,您需要2 ^ n次测试.另外,你做什么循环?通常,您将它们抽象为简单的if语句(即,对于每个循环,您测试其主体在一次测试中执行0次,在另一次测试中至少执行一次).
我认为对PC进行采样是一种特别糟糕的代码覆盖方式,因为它可能会因为执行速度过快而错过一些语句:D模糊逻辑也是如此,它用于推理近似值; 通常,您希望代码覆盖率具有确定性.
卡诺图用于最小化布尔函数,我没有看到任何与代码覆盖工具有用的链接.
此外,您的问题有时并不十分明确:您是否希望技术能够实现更好的代码覆盖率,还是仅仅是您感兴趣的代码覆盖率工具的实现?
| 归档时间: |
|
| 查看次数: |
3512 次 |
| 最近记录: |