【问题标题】:REST API testing common issuesREST API 测试常见问题
【发布时间】:2016-04-13 01:57:05
【问题描述】:

我最近开始测试基于 REST 的 Web 服务。我想知道在测试它们时面临哪些常见问题。

我一般会找

  1. 响应状态(http代码在200/400/500之间)

  2. 响应头(缓存控制、响应类型、内容长度)

  3. 如果预期的字段/值存在于 json 响应中。

我想知道在测试基于 REST 的 Web 服务时还需要寻找什么以及一般问题

【问题讨论】:

    标签: rest testing


    【解决方案1】:

    这实际上是一个非常广泛的问题,但是,这是我在测试其他 API 时寻找的东西:

    1. 响应代码、响应标头
    2. 根据用户权限检查身份验证/授权是否正确
    3. 检查提供的值是否会破坏输出
    4. 有意传递不同的 Data-Type 值以查看是否正确处理
    5. 使用负载测试工具查看 API 可以处理多少并发请求

    同样,这些只是一些取决于您正在构建的 API 类型的事情。随着您的进步,请随意添加更多内容。

    【讨论】:

    • 如果您认为这太宽泛了,您为什么要回答呢?获得声誉?
    • @AshishAhujaツ 有很多问题很广泛,但对我们这样的用户仍然有帮助,因此在我看来,关闭这些问题没有意义。
    • @HarshalBulsara - 考虑这种情况。我们有 N 个 api 调用。比如说,只有 1% 的 API 用户在 N 次 API 调用中只有一个会出现读取超时。我们确信用户正在进行有效的 api 调用。我们将如何调试这个问题?是否有我们可以检查的一般清单? [例如。如果 API 使用负载均衡器,请检查是否所有实例都在运行?也许不幸的用户的请求将发送到一个停止的实例。如果所有实例都在运行,那么检查它们的服务器日志是否有任何错误?等等...]
    • @testerjoe2 出于测试目的,只需将所有 API 调用记录在某个文件中,并使用递增的数字并检查负载测试,您可能会遇到它失败的情况,另外您可以检查您的数据库探查器看看你的数据库是否足够快来处理请求
    • 大多数情况下,我们将应用服务器置于负载平衡中,但两者都指向同一个数据库,很多时候数据库无法处理该负载。
    【解决方案2】:

    有很多,但让我分享一些甚至不是专门的 API 问题,但完整的 API 集成测试将有助于找到它。

    我们进行了一个集成 API 测试,其中发布者的产品列表端点被命中,然后我们随机挑选了 100 个这些产品。每隔几周,我们就会发现一堆错误的产品 ID。怎么可能?他们会更新数据库,但产品列表端点已被缓存,并且在数小时内都有错误信息,直到它被自动刷新。

    另外一次,我们在布鲁克林发现一家电子商务公司,平均而言,其 5 万多种产品中有 3,500 种产品缺少一个类别。这意味着如果您按类别浏览,则有 3,500 种产品没有显示,并且可能会失去销售。

    我们的网站上有关于这些内容的完整案例研究。奇怪和意想不到的事情一直在发生。测试一切并尽可能多地捕捉。负载中的每个对象都应该经过验证,这可能看起来有点矫枉过正,但有些平台可以为您完成所有这些工作。

    【讨论】:

      【解决方案3】:

      以下是根据我在测试 Restful API 时的经验提出的建议。

      1. 如果与 API 一起使用,请确保验证专有标头。
      2. 确认您在响应中包含正确的位置标头,以便 Rest API 调用者可以将其用于验证或后续调用。
      3. 检查位置标头协议是否正确,即根据您的设计。 (http/https)。这对于后续调用非常重要。

      【讨论】: