Testing 重构非回归测试时如何保护自己? 当重构非回归测试时,有没有特定的技术需要考虑?代码通常非常简单,但显然没有包含在测试套件的安全网中

Testing 重构非回归测试时如何保护自己? 当重构非回归测试时,有没有特定的技术需要考虑?代码通常非常简单,但显然没有包含在测试套件的安全网中,testing,refactoring,Testing,Refactoring,在构建非回归测试时,我首先确保它确实显示了我想要纠正的问题。但是,如果我稍后回到这个测试,因为我想重构它(例如,我刚刚添加了另一个非常类似的测试),我通常无法将测试中的代码恢复到显示第一个问题的状态。因此,我不能确定重构后的测试是否仍在代码中使用相同的路径 除了格外小心之外,有没有具体的技术来处理这个问题?这不是什么大问题。测试测试代码,代码测试测试。尽管在任何情况下都有可能犯一个笨拙的错误,导致考试开始通过,但不太可能。您将一次又一次地运行测试,因此测试及其测试的代码得到了大量的练习,当情况变

在构建非回归测试时,我首先确保它确实显示了我想要纠正的问题。但是,如果我稍后回到这个测试,因为我想重构它(例如,我刚刚添加了另一个非常类似的测试),我通常无法将测试中的代码恢复到显示第一个问题的状态。因此,我不能确定重构后的测试是否仍在代码中使用相同的路径


除了格外小心之外,有没有具体的技术来处理这个问题?

这不是什么大问题。测试测试代码,代码测试测试。尽管在任何情况下都有可能犯一个笨拙的错误,导致考试开始通过,但不太可能。您将一次又一次地运行测试,因此测试及其测试的代码得到了大量的练习,当情况变得更糟时,测试通常开始失败


当然要小心,;当然,在重构前后立即运行测试。如果您对重构感到不舒服,请以允许您看到测试工作(通过和失败)的方式进行重构。在重构之前找到一种可靠的方法使每个测试失败,并将其记录下来。进入绿色-所有测试都通过-然后重构测试。运行测试;还是绿色?好。(如果不是这样,当然要变绿,也许可以从头开始)。执行使原始未分解测试失败的更改。红色和以前一样的失败?然后恢复工作代码,再次检查绿色。签入它并进入下一个任务。

尝试在自动测试中不仅包括阳性案例,还包括阴性案例(以及它们的适当处理程序)


此外,您可以尝试使用断点运行重构的自动测试,并通过调试器监督它继续执行您希望它执行的所有路径。

您的测试需要测试。现在认真一点,你需要学会在某个时候信任你自己和你的代码。单元测试永远不应该被认为是完美的——特别是当您的测试套件不断增长时,您在某个地方出错的可能性也越来越大,即使您被认为是大师,您的代码也永远不会是完美的。你只需要学会忍受你对考试的偏执:)