2

I developing REST API using Scala and Play Framework 2. Looks like right now is good time for writing acceptance specifications for this web service. There are two kinds of users for this API: web site and ipad app.

So, the question is which side should I choose to write acceptance specs?


To be much more concrete, by acceptance specifications I means such kind of tests:

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

Here is my check lists

Server side (scala + specs2)

  • [+] easy to integrate into build process
  • [+] more familiar with scala
  • [-] easy to miss some browser specific details (for example CORS)

Client side (js + simple ajax or some testing framework)

  • [-] harder to automate (requires node.js, v8, phantomJS or something like that)
  • [-] more familiar with scala
  • [+] all browser details are taken in account
  • [+] eat your own dog food. Ability to use server side api as a client side programmer
  • [+] kind of examples for client side programmers
4

2 回答 2

1

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

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

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

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

于 2013-09-30T16:19:51.933 回答
0

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

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

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

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

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

我希望这对你有帮助

于 2013-09-30T17:04:14.543 回答