与只为服务编写API测试相比,为每个函数编写单元测试有什么优势?

时间:2019-05-09 14:40:13

标签: unit-testing web-applications end-to-end

在Web应用程序中,有REST端点,每个端点在内部调用各种函数。

可以编写一个简单的API请求和响应测试用例来测试该API的功能。

考虑到场景,开发人员在所需的功能上进行了一些更改,API测试将失败,并且开发人员将注意到是由他的更改导致测试用例失败的。 同样在单元测试的情况下,相应的功能测试用例也会失败

因此,当一个API测试用例足够时,为每个函数编写测试用例是必要的。 请帮助我理解。谢谢您的时间

1 个答案:

答案 0 :(得分:3)

原因不只一个,所以这是我能想到的原因:

模块化

在编写软件时,您总是尝试使代码模块化和可重用。

一般而言,编写功能已经遵循了这一理念: 您可以在整个代码中的许多地方重复使用该功能,而无需编写重复的代码。

使用单元测试功能,无论在何处使用它,都可以测试单个功能是否满足您期望的合同。

这样,当您需要在以后的某个时间再次使用该函数时,您可以信任该函数,也许使用一组新的参数,这些参数可能会使该函数的行为有所不同。您可以分别有效地测试该函数中所有可能的逻辑分支,即使您可能尚未使用 。 (谢谢@JBNizet)

一旦您需要重构代码,这一点就变得更加明显。


精度

当API测试失败时,您可能不知道可能是复杂的应用程序中的哪一部分代码会引起问题。

但是,当一个功能的单元测试失败(这也可能导致API测试失败)时,您知道该功能中的代码是错误的。它为您节省了很多时间。


复杂度

API测试难以编写,尤其是在需要涵盖API调用的所有功能的所有可能的情况下。

这也使它们变慢了很多。

(再次感谢@JBNizet)


总的来说,所有这些都归结为编程范式“分而治之”:将手头的任何问题分解为可能的最小子问题,直到仅剩下一些琐碎的问题(在本例中为单元测试)。