我最近偶然发现了这篇(旧的)文章:
http://imranontech.com/2007/01/04/unit-testing-the-final-frontier-legacy-code/
据称作者编写了一个 perl 脚本来自动生成测试用例。他的策略是这样的(引用):
- 读入我给它的头文件。
- 提取函数原型。
- 给我它找到的函数列表,让我选择我想要为其创建单元测试的函数。
然后它创建了一个 dbx(Solaris 调试器)脚本,每次调用所选函数时都会断点,保存传递给它的变量,然后继续执行,直到函数返回,此时它将保存返回值。
在 dbx 脚本下运行可执行文件,然后我开始正常使用该应用程序,并且只是运行了许多我认为会通过有问题的代码的用例,尤其是我认为它会遇到边缘情况的情况我要为其创建单元测试的功能。
然后 perl 脚本获取所有示例运行,删除重复项,然后自动生成包含每个示例的单元测试的 C 文件(即传入输入数据并验证返回值与示例运行中的相同)编译/链接/运行单元测试并丢弃失败的测试(即摆脱导致函数行为不确定的输入)
我有很多 Python 和 Fortran 语言的各种遗留代码。这篇文章来自 2007 年。在当前的单元测试框架中是否实现了类似的东西?
我将如何编写这样的脚本?