【问题标题】:Which side should I choose to test REST API?我应该选择哪一方来测试 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 用作客户端程序员
  • [+] 类客户端程序员示例

【问题讨论】:

    标签: javascript scala rest acceptance-testing


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多