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

标签 python unit-testing fortran legacy-code

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

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

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

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

  5. 运行dbx下的可执行文件 脚本,哪一点我继续使用该应用程序作为 正常的,只是运行了很多我认为会的用例 仔细检查有问题的代码,尤其是我认为的情况 它会在我想创建单元测试的函数中遇到边缘情况 为了。

  6. 然后 perl 脚本执行所有示例运行,去除 复制,然后自动生成一个包含单元测试的 C 文件 对于每个示例(即传入输入数据并验证 返回值与示例运行中的相同)编译/链接/运行 单元测试并丢弃失败的单元(即摆脱 导致函数行为不确定的输入)

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

我将如何编写这样的脚本?

最佳答案

非常像 C。另外,我认为取决于操作系统(Solaris 调试器)?我会说你应该看看“记录/捕获和回放”工具,但不知何故我认为“生成”部分从未真正起飞。

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

您引用的文章中的观点非常好:

Have a look at your own source code repository and see which functions/classes have had the most bugfix checkins applied, 80% of bugfixes tend to be made to about 20% of the code. There’s sound logic behind this – often that 20% of the code is poorly written with dozens or hundreds of “special case” hacks.

这才是我真正要开始的地方。这些零件你认出来了吗?分类法中的简单 Git/SVB 日志使用脚本和覆盖工具部分会派上用场。

不幸的是,我帮不了你 - 我的 Python 经验有限,而 Fortran - 不存在。

关于python - 有没有开源工具可以自动为遗留代码生成测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14770797/

相关文章:

c++ - 科学程序员的阅读 list

arguments - fortran意图(in,out,inout)之间的明显区别是什么?

python - 可以在 python 和 matplotlib 中使用 sqlite 数据库中的数据绘制日期时间而不使用 pandas 吗?

python - 如何在 Python 中使用 Pandas 求精度 @ N

python - 模拟 elasticsearch-py 调用

fortran - .eq. 之间的差异和 ==

Python 3 从网络解析 PDF

python - Eclipse、PyDev 语法着色

python - 如何在 App Engine 上对 protorpc 调用进行单元测试

unit-testing - 使用 Scala 2.10.2、SBT 0.13.0、Specs2 和 Play Framework 2.2.1 如何在运行测试时控制日志记录?