Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 回归测试时;“测试oracle”;这是一种非正式的产出比较_Python_Unit Testing_Testing_Regression Testing - Fatal编程技术网

Python 回归测试时;“测试oracle”;这是一种非正式的产出比较

Python 回归测试时;“测试oracle”;这是一种非正式的产出比较,python,unit-testing,testing,regression-testing,Python,Unit Testing,Testing,Regression Testing,我维护一个Python程序,该程序提供关于某些主题的建议。它通过对输入数据应用复杂的算法来实现这一点 程序代码定期更改,以解决新发现的错误,并修改底层算法 我想使用回归测试。问题是,除了运行程序(即使这样,也只有在没有bug的情况下)之外,无法判断某个输入的“正确”输出是什么 我在下面描述我目前的测试过程。我的问题是是否有工具来帮助自动化这个过程(当然,如果有任何其他关于我正在做什么的反馈)。 当程序第一次似乎对我所有的输入案例都正确运行时,我将它们的输出保存在一个指定为“已验证”输出的文件夹中

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

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

我想使用回归测试。问题是,除了运行程序(即使这样,也只有在没有bug的情况下)之外,无法判断某个输入的“正确”输出是什么

我在下面描述我目前的测试过程。我的问题是是否有工具来帮助自动化这个过程(当然,如果有任何其他关于我正在做什么的反馈)。

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

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

  • 更改完全是由于错误修复,或
  • 这些变化至少部分归因于我引入的一个新bug
  • 在案例1中,我递增内部版本计数器。我用与版本计数器相同的后缀标记输出文件,并将其移动到“validated”文件夹。然后,我将更改提交到Mercurial存储库

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

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


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

    以下是我可能会使用的方法

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