有没有一个开源工具可以自动为遗留代码生成测试用例



我最近偶然发现了这篇(过时的)文章:

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文件对于每个示例(即传入输入数据并验证返回值与示例运行中的相同)编译/链接/运行单元测试并丢弃失败的单元(即导致函数表现为非确定性的输入)

我有很多Python和Fortran语言的遗留代码。这篇文章来自2007年。在当前的单元测试框架中是否实现了类似的功能?

我该怎么写这样一个剧本呢?

非常像C。另外,我认为依赖于操作系统(Solaris调试器)?我想说你应该看看"记录/捕捉和回放"工具,尽管不知何故,我认为"生成"部分从未真正开始

Python的测试工具分类法将是一个很好的起点。我建议您使用Selenium或Dogtail记录您的应用程序。该链接将带您进入Web测试工具部分,但也可以查看其他部分:模糊测试是一种类似于Golden Master的技术,有时可能有助于遗留应用程序,是一种"记录/回放"技术。费瑟将这种测试称为"特征化"测试,因为它们表征了遗留系统的行为。

你引用的文章中非常好的一点:

看看你自己的源代码存储库,看看函数/类应用了最多的错误修复签入,80%通常会对大约20%的代码进行错误修复。有合理的逻辑在这背后——通常20%的代码写得很糟糕,有几十个或者数以百计的"特殊情况"黑客。

这就是我真正的出发点。你确认这些零件了吗?分类法中的简单Git/SVB日志使用脚本和覆盖工具部分会很方便。

不幸的是,除此之外,我无法帮助你——我的Python经验有限,Fortran也不存在。

相关内容

最新更新