gpt4 book ai didi

python - "test oracle"为非正式输出比较时的回归测试

转载 作者:行者123 更新时间:2023-11-28 20:57:29 25 4
gpt4 key购买 nike

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

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

我想使用回归测试。问题是,除了通过运行程序(即使那样,只有当它没有错误时),没有办法判断某个输入的“正确”输出是什么。

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

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

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

  1. 更改完全是由于错误修复,或者
  2. 这些更改至少部分是由于我引入的一个新错误

在情况 1 中,我增加了内部版本计数器。我用等于版本计数器的后缀标记输出文件并将其移至“已验证”文件夹。然后我将更改提交到 Mercurial 存储库。

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

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

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

最佳答案

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

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

关于python - "test oracle"为非正式输出比较时的回归测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9347392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com