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

时间:2013-09-30 15:47:59

标签: javascript scala rest acceptance-testing

我使用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 + simple ajax或某些测试框架)

  • [ - ]更难自动化(需要node.js,v8,phantomJS或类似的东西)
  • [ - ]更熟悉scala
  • [+]所有浏览器详细信息都在帐户中
  • [+]吃自己的狗粮。能够使用服务器端api作为客户端程序员
  • [+]客户端程序员的一些示例

2 个答案:

答案 0 :(得分:1)

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

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

我没有把它集成到构建工作流程中的经验,所以如果你需要在构建过程中使用它,我建议你评估CasperJS,它有一个很棒的文档和有用的测试功能

如果您只是需要验收测试,我肯定会继续前进。

答案 1 :(得分:0)

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

如果你通过JavaScript测试,它听起来更像是集成测试。

所以我认为在REST API Scope中,为了确保您的REST API可以接受,您需要实现测试而不关心谁是消费者,并且仅在响应了对您的api的简单请求时进行测试。

但是在客户端范围内,您需要保证使用REST API的代码的代码是好的,因此您可以模拟REST API(对于我推荐的JasmineSinon的javascript

然后,要测试所有系统是否正确,您需要使用Seleniun之类的工具。

我希望这可以帮到你