当我已经编写单元测试和功能测试时,我将从集成测试中获得什么价值

时间:2013-06-14 21:20:00

标签: unit-testing testing integration-testing functional-testing

我们有一个Web应用程序(使用Grails / Groovy),我们编写单元测试和功能测试。

但是,我们没有编写集成测试。

通过单元测试,我们可以捕获一些小问题,并且它还有助于我们以模块化,简短易读的方式编写代码库。

功能测试显然有助于我们了解功能何时被破坏。

编写集成测试会得到什么?编写这些测试所花费的额外时间会带来什么好处?

4 个答案:

答案 0 :(得分:2)

自:

http://martinfowler.com/bliki/TestPyramid.html

  

金字塔也争论要采取行动的中间层测试   通过应用程序的服务层,我称之为   SubcutaneousTests。这些可以提供许多优点   端到端测试但避免了处理UI的许多复杂问题   构架。在Web应用程序中,这将对应于测试   通过API层,而金字塔的顶部UI部分   对应于使用像Selenium或Sahi这样的测试..

答案 1 :(得分:2)

问题是“编写集成测试会得到什么?编写这些测试所花费的额外时间会带来什么好处?

您的集成测试将确保您的组件与交叉问题一起工作,例如Web服务,数据库,会话等。您只需要很少的集成测试 - 作为@bagheera对TestPyramid的评论。要知道你是如何编写集成测试的,因为如果你过分了,那么运行所有这些测试真的很慢,并且更难以使用。当您将它们与单元测试进行比较时,编写它们并没有太大的好处。

Addtional:  你需要大量的单元测试 - 你已经拥有了它,这是一个好兆头。您不希望在此之间进行测试,这称为“脏混合”http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/

答案 2 :(得分:1)

除了检查@Raedwald提到的应用程序的管道之外,集成测试非常适合测试您的持久层是否按预期工作。级联设置正确吗?如果在交易过程中出现问题,一切都会正常回滚吗?通过集成测试而不是功能测试直接检查这些东西通常要容易得多。

答案 3 :(得分:0)

我发现它们对于检查应用程序的“管道”非常有用。用于检查您的单元是否连接在一起,以及委托对象是否符合他们委派的方法的前提条件。