首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >编写路径覆盖工具

编写路径覆盖工具
EN

Stack Overflow用户
提问于 2009-08-18 21:15:49
回答 1查看 2.5K关注 0票数 4

目前,我们的一个生产系统是由3000多个程序编写的1986年到现在。代码库是用非标准语言编写的,不幸的是缺乏现代的测试工具。

为了提高我们的代码质量,我一直致力于整合过程和构建工具,以改进开发和测试。我刚刚有一个完整的行覆盖工具,这样我们就可以在开发过程中帮助识别死代码+未经测试的代码。

现在,我想开始在工具中添加路径覆盖。

我该怎么做?

鉴于此:

1)行覆盖工具充当注入代码的预处理器。

2)我已经有能力收集我在上述代码中设置的统计数据。

在程序执行时我应该记录哪些数据,以及如何解释它?

如何通过表示结果?

我已经读过关于如何开始“编写”代码覆盖工具?的问题,它是关于Java的,但是没有帮助(包括“任意语言的分支覆盖变得容易”)。

感谢事先给出的指导!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-19 07:55:41

要进行路径覆盖,您需要以某种方式获取程序控制流。一种很明显的方法是构造一个真实的控制流图,然后遍历其中的段来选择用于路径覆盖分析的“路径片段”(例如,基本路径)。(您可以尝试通过字符串攻击源代码来实现这一点,但很可能失败;解析和流分析太复杂)。

有关基本路径的良好堆栈溢出讨论,请参见基本路径覆盖的意义是什么?

要实现所需的路径覆盖工具,您可能需要彻底解析完整的遗留语言。对于3000个程序和对测试的强烈需求,使用工业强度解析器和基础设施进行测试将是有意义的。

我们的DMS软件重组工具包不仅可以用于构造解析器,还可以用来构建收集路径覆盖数据所需的控制流分析和检测。(如果您只想收集分支覆盖率数据,那么“任意语言的分支覆盖率”就说明了这一点,但是DMS不仅仅是解析)。如果需要,DMS还支持构造控制图(和数据流),就像在本例中所做的那样;请参见DMS构造控制流图

DMS用于为C、Java和COBOL构建控制和数据流分析器,并用于为一些30+语言构建解析器。如果您认真对待这个问题,它可以处理您的遗留语言。

编辑10/31/2011: DMS现在可以计算C++的控制流,因此它将是C++路径覆盖工具的一个很好的基础。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1296577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档