重构测试代码的最佳实践

时间:2011-04-15 05:42:21

标签: refactoring automated-tests

我目前在QA工作,在我的公司QA的每个人都写自动化测试。最近我一直在阅读Martin Fowler撰写的Refactoring: Improving the Design of Existing Code。我已经意识到我们的许多测试类和测试实用程序非常混乱,冗余,并且急需重构。

特别是因为我一直在阅读这个主题,我很想潜入并清理,但有一个问题。在他的书中,Fowler强调单元测试重构下的代码对于防止错误的引入至关重要。由于我试图重构的代码是测试代码,因此对它进行单元测试似乎有些愚蠢。你们中的任何人都有关于如何重构甚至设计测试代码的建议吗?另外,如果它有帮助,我们使用的测试框架是建立在JUnit之上的,因此我所指的测试类是TestCase的后代。

谢谢!

2 个答案:

答案 0 :(得分:1)

不,这不完全正确。重新分解的技巧是能够验证您是否保留了功能。

您需要确保在之前和之后验证所有更改。这并不是真的。但是,您不需要为该代码编写自动化测试,但它可能有所帮助。

对测试代码进行复杂重构的技巧是能够针对被测系统运行测试并获得相同的结果。

事实上,可验证性确保输出相同。这应该是自动化的。您可以通过多种方式执行此操作,但最简单的方法是输出您正在运行的测试以及您正在测试的数据以及您期望的输出和您收到的输出。

可能你可以使用像XML这样的机器可读格式来更容易解析。

答案 1 :(得分:0)

我同意上一篇文章,您应该在修改套件实现之前和之后运行测试套件,以验证它的功能是否相同。

您还可以使用更简单的单元测试框架对实现单元测试的代码进行单元测试。如果您的代码继承自JUnit,那么使用JUnit来测试它。至少你必须假设JUnit有效。