是否有一个开源工具可以自动生成遗留代码的测试用例?

时间:2013-02-08 10:46:07

标签: python unit-testing fortran legacy-code

我最近偶然发现了这篇(陈旧)文章:

http://imranontech.com/2007/01/04/unit-testing-the-final-frontier-legacy-code/

作者据称写了一个perl脚本来自动生成测试用例。 他的策略是这样的(引用):

  1. 读入我提供的头文件。
  2. 提取函数原型。
  3. 给我发现的功能列表,让我选择 哪些我想创建单元测试。
  4. 然后创建了一个dbx (Solaris调试器)脚本每次都会断点 调用所选函数,保存传递给的变量 它然后继续,直到函数返回它为止 会保存返回值。

  5. 在dbx下运行可执行文件 脚本,以及我继续使用该应用程序的那一点 正常,只是经历了很多我认为会使用的用例 仔细阅读有问题的代码,特别是我想到的情况 它会在我想要创建单元测试的函数中遇到边缘情况 对于。

  6. 然后perl脚本执行了所有示例运行,并将其删除 重复,然后自动生成包含单元测试的C文件 对于每个例子(即传入输入数据并验证) 返回值与示例运行中的相同)Compiled / Linked / Ran 单位测试并丢弃失败的(即摆脱 导致函数表现不确定的输入

  7. 我在Python和Fortran语言中有很多遗留代码。这篇文章是从2007年开始的。在目前的单元测试框架中是否有类似的内容?

    我将如何撰写这样的剧本?

1 个答案:

答案 0 :(得分:0)

很像C。另外,OS依赖,我认为(Solaris调试器)?我会说你应该看看“录制/捕捉和播放”工具,不过我认为“生成”部分从未真正起飞过。

Python's testing tools taxonomy将是一个很好的起点。我会说你要么使用Selenium或Dogtail记录你的应用程序。该链接将您带到该部分,Web测试工具,但也检查其他人:模糊测试是一种类似于Golden Master的技术,它有时可以帮助遗留应用程序,并且是一种“记录/回放”技术。 Feathers称这种测试为“表征”测试,因为它们描述了遗留系统的行为。

你引用的文章非常好点:

  

查看您自己的源代码存储库并查看哪些   函数/类已经应用了最多的bugfix签名,80%   错误修正往往是约20%的代码。这是合理的逻辑   在这背后 - 通常有20%的代码写得很糟糕   或数百个“特例”黑客。

这是我真正开始的地方。你确定了这些部件吗?分类中的简单Git / SVB日志使用脚本和覆盖工具部分就可以派上用场了。

不幸的是,我无法帮助你 - 我的Python体验有限,Fortran - 不存在。