我应该选择哪一方来测试 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?的主要内容,如果未能解决你的问题,请参考以下文章