gpt4 book ai didi

testing - 编写路径覆盖工具

转载 作者:行者123 更新时间:2023-11-28 19:52:06 25 4
gpt4 key购买 nike

目前,我们的一个生产系统由 1986 年至今编写的 3000 多个程序处理。代码库是用非标准语言编写的,遗憾的是缺少现代测试工具。

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

现在,我想开始为该工具添加 Path Coverage。

我应该怎么做?

鉴于:

1) 行覆盖工具作为注入(inject)代码的预处理器
2) 我已经能够收集我在上述代码中设置的统计信息。

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

如何通过 HTML 表示结果?

我已经阅读了问题 How to get started “writing” a code coverage tool? ,这是关于 Java 的,但是它没有帮助(包括论文“轻松实现任意语言的分支覆盖”)。

提前感谢您提供的任何指导!

最佳答案

要进行路径覆盖,您需要以某种方式获得程序控制流。一个明显的方法是构建一个真实的控制流图,然后遍历它的各个部分以挑选出“路径片段”(例如,基本路径)以用于路径覆盖分析。(你可以尝试通过对源代码进行字符串破解来做到这一点,但你很可能会失败;解析和流分析太复杂了)。

参见 What's the point of basis path coverage?在基础路径上进行良好的 stackoverflow 讨论。

要实现所需的路径覆盖工具,您可能需要真正完全解析完整的遗留语言。对于 3000 个程序和强烈的测试要求,使用工业强度的解析器和基础架构来执行此操作是有意义的。

我们的 DMS Software Reengineering Toolkit不仅可以用来构建解析器,还可以用来构建控制流分析收集路径覆盖数据所需的仪器。 (如果您想做的只是收集分支覆盖率数据,“任意语言的分支覆盖率”就说明了这一点,但 DMS 不仅仅是解析)。如果需要,DMS 还支持构建控制(和数据流)图,正如您在这种情况下所做的那样;见DMS constructed control flow graphs .

DMS 已用于为 C、Java 和 COBOL 构建控制和数据流分析器,并已被用于为大约 30 多种语言构建解析器。如果您认真对待它,它可以处理您的遗留语言。

编辑 10/31/2011:DMS 现在可以计算 C++ 的控制流,因此它将成为 C++ 路径覆盖工具的重要基础。

关于testing - 编写路径覆盖工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com