我应该选择哪一方来测试 REST API?

Posted

技术标签:

【中文标题】我应该选择哪一方来测试 REST API?【英文标题】:Which side should I choose to test REST API? 【发布时间】:2013-09-30 15:47:58 【问题描述】:

我使用 Scala 和 Play Framework 2 开发 REST API。看起来现在是编写此 Web 服务接受规范的好时机。此 API 有两种用户:网站和 ipad 应用程序。

那么,问题是我应该选择哪一方来编写验收规范?


更具体地说,验收规范是指这样的测试:

"user" should 
  "be able to register with login, email and pass" in 
      ... // registration process here
   

这是我的检查清单

服务器端(scala + specs2)

[+] 易于集成到构建过程中 [+]更熟悉scala [-] 容易错过一些浏览器特定的细节(例如 CORS)

客户端(js + 简单的 ajax 或一些测试框架)

[-] 更难自动化(需要 node.js、v8、phantomJS 或类似的东西) [-]更熟悉scala [+] 考虑所有浏览器详细信息 [+] 吃自己的狗粮。能够将服务器端 API 用作客户端程序员 [+] 类客户端程序员示例

【问题讨论】:

【参考方案1】:

在我看来,您称为“服务器端”的测试可能是单元测试,它们应该快速并集成到构建过程中,您应该测试 API 的正确性,而不是 CORS 等属于客户端的功能.

对于客户端,我建议您使用Selenium IDE,它是一个浏览器插件,可让您记录操作并断言页面上发生的事情,让您稍后重播所有操作,比人类更快.

不过,我没有将它集成到构建工作流程中的经验,所以如果您也需要将它纳入构建过程,我建议您评估 CasperJS,它具有出色的文档和有用的测试功能。

如果你只需要验收测试,我肯定会去前端。

【讨论】:

【参考方案2】:

我相信对于验收测试,您只需要进行服务器端测试,使用 BDD 框架即可轻松完成。

如果您通过 javascript 进行测试,它听起来更像是一个集成测试。

所以我认为在 REST API Scope 中,为了确保您的 REST API 是可以接受的,您需要实现一个测试,而不用关心谁是消费者,并且只测试到达您的 api 的简单请求是否得到响应。

但在客户端范围内,您需要保证使用 REST API 响应的代码是好的,因此您要模拟您的 REST API(对于 javascript,我建议使用 Jasmine 或 Sinon)。

然后要测试所有系统是否正确在一起,您需要使用像Seleniun这样的工具。

希望对你有帮助

【讨论】:

以上是关于我应该选择哪一方来测试 REST API?的主要内容,如果未能解决你的问题,请参考以下文章

我应该为我的高性能 Web 服务选择哪种编程语言? [关闭]

如何选择API测试工具

您将 REST api 放在哪一层?

Paypal:选择哪种产品和 api?

spring框架应用于哪一方面?

如何使用CORS保护REST API?