首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REST与代码覆盖的集成测试

REST与代码覆盖的集成测试
EN

Stack Overflow用户
提问于 2013-07-02 18:23:48
回答 2查看 21.3K关注 0票数 15

我们已经构建了一个REST,它公开了许多业务服务--业务服务可以调用其他平台/实用程序服务来执行数据库读写、执行服务授权等等。

我们已经将这些服务部署为Tomcat中的WAR文件。

我们希望使用一个集成测试套件来测试整个设置,我们也希望将它作为回归测试套件来处理。

在这种情况下执行集成测试的好方法是什么,以及任何可以加速套件开发的工具?以下是我们认为需要解决的几个要求:

  1. 能够定义执行业务场景的集成测试用例。
  2. 在运行套件之前用测试数据设置DB。
  3. 调用运行在远程服务器(Tomcat)上的REST
  4. 验证DB测试后的执行,以验证预期的输出
  5. 拥有REST的代码覆盖率报告,这样我们就知道在套件所涵盖的场景中我们应该有多自信。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-02 21:49:15

在我的工作中,我们最近组装了几个测试套件来测试我们构建的一些RESTful API。与您的服务一样,我们的服务也可以调用它们所依赖的其他RESTful API。我们把它分成两间套房。

  • 套件1-隔离地测试每个服务
    • 模拟API依赖于使用雷斯蒂托的任何对等服务。其他替代方案包括休息司机威瑞克预罐装贝塔马克斯
    • 测试、我们正在测试的服务和模拟都在单个JVM中运行。
    • 在Jetty中启动我们正在测试的服务

我绝对建议你这么做。对我们来说真的很好。主要的优点是:

  • 对等服务是模拟的,所以您不需要执行任何复杂的数据设置。在每次测试之前,您只需使用restito来定义对等服务的行为方式,就像使用Mockito进行单元测试中的类一样。
  • 该套件是超级快,因为模拟服务提供预罐装在内存中的反应。这样我们就能得到很好的报道,而不用花一个时间去运行。
  • 这个套件是可靠的和可重复的,因为它在它自己的JVM中是孤立的,所以不需要担心其他的套件/人在运行一个共享的环境时在运行并且导致测试失败。
  • 套房2-端到端
    • 套件是针对部署在多台机器上的完整环境运行的。
    • 环境中部署在Tomcat上的API
    • 对等服务是真正的“实时”完整部署。

这个套件要求我们完成对等服务中设置的数据,这意味着测试通常需要更多的时间来编写。我们尽可能多地使用REST客户端进行对等服务中的数据设置。

这个套件中的测试通常需要更长的时间来编写,所以我们把大部分的内容都放在了suite 1中。尽管如此,这个套件仍然有明确的价值,因为我们在Suite 1中的模拟可能并不完全像真正的服务。

关于你们的观点,以下是我们要做的:

  • 能够定义执行业务场景的集成测试用例.
    • 我们使用黄瓜-jvm为上述两个套件定义业务场景。这些场景是业务用户可以理解并驱动测试的英文纯文本文件。

  • 在运行套件之前用测试数据设置数据库。
  • 我们不会在集成套件中这样做,但在过去,我在单元测试中使用了单式和dbunit,并且运行得很好。

  • 调用运行在远程服务器(Tomcat) 上的REST
    • 我们使用放心,它是一个非常好的HTTP,专门用于测试REST。

  • 验证DB测试后的执行,以验证预期的输出
    • 我不能在这里提供任何建议,因为我们不使用任何库来帮助简化操作,我们只需要手动完成。如果你发现什么就告诉我。

  • 有REST的代码覆盖率报告,这样我们就知道在套件. 所涵盖的场景中我们应该有多自信。
    • 我们不为集成测试度量代码覆盖率,只为单元测试度量代码覆盖率,因此我不能在这里提供任何建议。

关注我们的科技博客,因为未来可能会有更多的细节。

票数 29
EN

Stack Overflow用户

发布于 2013-07-05 11:14:46

您还可以签出名为阿基利安的工具,一开始设置起来有点困难,但它为集成测试提供了完整的运行时(即启动自己的容器实例并与测试一起部署应用程序),并提供了解决问题的扩展(调用REST端点、输入数据库、比较测试后的结果)。

Jacoco扩展生成的覆盖报告,比以后可以显示,即由声纳工具。

我已经将它用于一个相对较小规模的JEE6项目,并且,一旦我成功地设置了它,我就对它的工作方式感到非常满意。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17433046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档