大多数已建立的语言都为其提供了可靠的测试覆盖工具,但功能深度各不相同。例如,所有各种虚拟机和编译器都有这样的异构结构,编写代码覆盖工具在C语言中的工作必须与Lisp中的工作非常不同。代码覆盖工具如何以不同语言工作?
- Python有
sys.settrace
直接告诉你具体哪行执行 - Clover(用于Java)使用它自己的编译器,并增加了调试的元数据(我最后一次使用它,反正)
- Emma(用于Java)在运行中具有类加载器,其重新写入的字节码
- COVER(对于Lisp的)已注释传递到仪器的代码
我间相关捐资代码覆盖的实现为不同的语言:
去C0覆盖,在那里你可以跟踪哪些代码行已经执行的主要方法是什么?我提到了本机VM内省和上面的静态和动态代码工具 - 还有其他方法吗?
与C0相比,获得更多启发式覆盖数据(如C1 or C2)似乎是一种与语言无关的任务。对我来说是很大的Karnaugh map操纵;有没有关于如何真正做到这一点的最佳做法?更多现代逻辑技术如fuzziness发挥作用吗?
测试覆盖率的一个被忽略的方面是将结果显示给程序员,后者通过C1和C2数据越来越难。坦率地说,虽然他们完成了C0的工作,但我却被大多数测试覆盖界面所困扰;您看到覆盖数据有哪些新颖而直观的界面?
我不太清楚你在这里要求什么,它是如何代码覆盖率在低层次上工作,你基本上取样电脑(http: //en.wikipedia.org/wiki/Program_counter),然后将结果映射到您的源代码?或者他在寻找什么? – Johan 2009-01-18 21:49:00
有趣的..所以对个人电脑进行采样是如何(大多数)覆盖工具为编译为本地代码的语言工作。然而,这只是获得C0的一种方法,而且我对可用于其他语言的技术感兴趣。除了原始问题中的第二个和第三个问题。 – 2009-01-19 12:11:17