我最近偶然发现了这篇(陈旧)文章:
http://imranontech.com/2007/01/04/unit-testing-the-final-frontier-legacy-code/
作者据称写了一个perl脚本来自动生成测试用例。 他的策略是这样的(引用):
然后创建了一个dbx (Solaris调试器)脚本每次都会断点 调用所选函数,保存传递给的变量 它然后继续,直到函数返回它为止 会保存返回值。
在dbx下运行可执行文件 脚本,以及我继续使用该应用程序的那一点 正常,只是经历了很多我认为会使用的用例 仔细阅读有问题的代码,特别是我想到的情况 它会在我想要创建单元测试的函数中遇到边缘情况 对于。
然后perl脚本执行了所有示例运行,并将其删除 重复,然后自动生成包含单元测试的C文件 对于每个例子(即传入输入数据并验证) 返回值与示例运行中的相同)Compiled / Linked / Ran 单位测试并丢弃失败的(即摆脱 导致函数表现不确定的输入
我在Python和Fortran语言中有很多遗留代码。这篇文章是从2007年开始的。在目前的单元测试框架中是否有类似的内容?
我将如何撰写这样的剧本?
答案 0 :(得分:0)
很像C。另外,OS依赖,我认为(Solaris调试器)?我会说你应该看看“录制/捕捉和播放”工具,不过我认为“生成”部分从未真正起飞过。
Python's testing tools taxonomy将是一个很好的起点。我会说你要么使用Selenium或Dogtail记录你的应用程序。该链接将您带到该部分,Web测试工具,但也检查其他人:模糊测试是一种类似于Golden Master的技术,它有时可以帮助遗留应用程序,并且是一种“记录/回放”技术。 Feathers称这种测试为“表征”测试,因为它们描述了遗留系统的行为。
你引用的文章非常好点:
查看您自己的源代码存储库并查看哪些 函数/类已经应用了最多的bugfix签名,80% 错误修正往往是约20%的代码。这是合理的逻辑 在这背后 - 通常有20%的代码写得很糟糕 或数百个“特例”黑客。
这是我真正开始的地方。你确定了这些部件吗?分类中的简单Git / SVB日志使用脚本和覆盖工具部分就可以派上用场了。
不幸的是,我无法帮助你 - 我的Python体验有限,Fortran - 不存在。