测试您只知道其功能的应用程序的最佳方式



我收到了一个没有测试的软件应用程序,我将对其进行重构。客户向我展示了该应用程序的工作原理,我已经记下了所有步骤。这个应用程序非常混乱:名称与代码的实际提议无关,有未使用的功能和很长的等等。我打算完全重构它,但在此之前,我想创建一些测试,这样我就不会破坏整个系统。我将更改创建对象的步骤,因为我认为这对用户不友好。

我想知道在这种情况下最好的测试方法是什么。由于我只知道用户操作的效果,我认为功能测试或集成测试将是最好的方法,因为这是我所掌握的信息。另一方面,当我要更改UI时,我想我需要对数据库进行测试,而这不是功能测试应该做的

在浏览器上重现场景,然后检查数据库状态是否如我所期望的那样,这是一个好主意吗?

提前感谢

理想的方法是为代码的特定部分编写测试,然后对其进行重构。这样做的好处是,你可以更好地理解代码。但我在现实中看到的是,通常遗留代码是如此混乱,以至于它不完全是testable。大多数时候,代码是高度耦合的,以至于单元测试变成了一场噩梦。如果是这样的话,我认为最好的方法是编写非常高级的黑盒集成测试,这样即使在重构代码之后,这些测试仍然可以工作。

如果编写测试工作量太大,那么仅仅通过理解原始功能来为新代码编写测试也不会太糟,因为我们重构代码以使其可测试,并且我们需要有可测试的代码来重构,这会使我们陷入恶性循环。

是的,您肯定可以编写和数据库交互的测试。只要测试是细粒度的,就可以不太关心"单元测试"的定义。就我个人而言,我尽量避免嘲笑。古典与伦敦学校TDD

最新更新