回归测试时和#34;测试oracle"是一种非正式的产出比较

时间:2012-02-19 07:01:20

标签: python unit-testing testing regression-testing

我维护一个Python程序,提供有关某些主题的建议。它通过对输入数据应用复杂的算法来实现这一点。

定期更改程序代码,以解决新发现的错误,并修改基础算法。

我想使用回归测试。麻烦的是,没有办法告诉"纠正"输出是用于某个输入 - 除了通过运行程序(即使这样,只有它没有错误)。

我在下面描述了我当前的测试过程。我的问题是是否有工具可以帮助自动完成此过程(当然,如果对我正在做的事情有任何其他反馈)。

第一次程序似乎对我的所有输入案例都正确运行时,我将其输出保存在我指定用于"已验证"的文件夹中。输出。 "验证"意味着,就我所知,输出对于我的程序的给定版本是正确的。

如果我发现了一个错误,我会做出任何我认为会修复的修改。然后我在所有输入集上重新运行程序,并手动比较输出。每当输出发生变化时,我都会尽力非正式地审查这些变化,并确定是否:

  1. 这些更改完全是由于错误修复或
  2. 造成的
  3. 这些更改至少部分归因于我引入的新错误
  4. 在案例1中,我增加了内部版本计数器。我使用等于版本计数器的后缀标记输出文件,并将其移动到"已验证的"夹。然后我将更改提交到Mercurial存储库。

    如果将来,当这个版本不再是最新版本时,我决定将其分支,我将需要这些经过验证的输出作为"正确的"这个特定版本的那些。

    在案例2中,我当然试图找到新引入的bug,并修复它。这个过程一直持续到我相信与之前验证的版本相比的唯一变化是由于预期的错误修复。

    当我修改代码以更改算法时,我遵循类似的过程。

1 个答案:

答案 0 :(得分:0)

这是我可能会使用的方法。

  1. 让Mercurial管理代码,输入文件和回归测试输出。
  2. 从某个父版本开始。
  3. 制作并记录(最好尽可能少)修改。
  4. 运行回归测试。
  5. 查看与父修订版回归测试输出的差异。
  6. 如果这些差异与预期不符,请尝试查看是否引入了新错误或期望是否不正确。要么修复新错误并转到3,要么更新预期并转到4。
  7. 将回归测试的输出复制到为验证输出指定的文件夹。
  8. 将更改提交给Mercurial(包括代码,输入文件和输出文件)。