hca*_*ras 4 testing integration-testing
我收到了一个未经测试的软件应用程序,我将对其进行重构。客户向我展示了它应该如何工作的应用程序,我已经写下了所有步骤。该应用程序非常混乱:名称与代码的实际建议无关,有未使用的功能和很长的等。我将完全重构它,但在此之前我想创建一些测试,所以我不t 破坏整个系统。我将更改创建对象的步骤,因为我认为这对用户不友好。
我想知道在这种情况下最好的测试方法是什么。由于我只知道用户行为的影响,我认为功能测试或集成测试将是最好的方法,因为这是我掌握的信息。另一方面,当我要更改 UI 时,我认为我需要针对数据库进行测试,而这不是功能测试应该做的。
在浏览器上重现场景然后检查数据库状态是否符合我的预期是个好主意吗?
提前致谢
理想的方法是您应该为代码的特定部分编写测试,然后对其进行重构。这样,作为奖励,您将更好地理解代码。但我在现实中看到的是,通常遗留代码是如此混乱,以至于它不完全是testable. 大多数时候代码都是高度耦合的,以至于单元测试变成了一场噩梦。如果是这种情况,我认为最好的方法是编写非常高级的 Black-Boxed 集成测试,这样即使在重构代码后,这些测试仍然有效。
如果编写测试工作量太大,那么仅仅通过理解原始功能来为新代码编写测试也不会太糟糕,因为我们重构代码使其可测试,而我们需要有可测试的代码来重构使我们陷入困境陷入恶性循环。
是的,您绝对可以编写与数据库交互的测试。只要测试是细粒度的,不用太在意“单元测试”的定义是完全可以的。就我个人而言,无论如何我都尽量避免嘲笑。古典与伦敦学校 TDD