我收到了一个没有测试的软件应用程序,我将重构。 客户向我展示了它应用的应用程序,我已经写下了所有步骤。 应用程序非常混乱:名称与代码的实际建议无关,有未使用的功能和很长的等等。我会完全重构它但在此之前我想创建一些测试,所以我不打破整个系统。我将改变创建对象的步骤,因为我认为它不是用户友好的。
我想知道在这种情况下最好的测试方法是什么。 由于我只知道用户操作的效果,我认为功能测试或集成测试是最好的方法,因为它是我所掌握的信息。另一方面,当我要更改UI时,我想我需要针对数据库进行测试,而不是要做什么功能测试。
在浏览器上重现场景,然后检查数据库是否符合预期,这是一个好主意吗?
提前致谢
答案 0 :(得分:4)
理想的方法是你应该为代码的特定部分编写测试,然后重构它。这样,作为奖励,您将更好地理解代码。但我在现实中看到的是,通常遗留的代码是如此混乱,以至于它不完全是testable
。大多数时间代码是如此高度耦合,单元测试它变成了一场噩梦。如果是这样的话,我认为最好的方法是编写非常高级的Black-Boxed集成测试,以便即使在重构代码之后这些测试仍然有效。
如果编写测试工作太多,仅仅通过理解原始功能来编写新代码的测试也不会太糟糕,因为我们重构代码以使其可测试,并且我们需要具有可测试的代码重构使我们陷入了恶性循环。
是的,你绝对可以编写与数据库交互的测试。完全可以不太关注"单元测试"的定义。只要测试是精细的。就个人而言,我试图避免嘲笑。 Classical vs London School TDD