rest - 在 RESTful Web API 上进行 API 测试的一般建议

标签 rest web-api-testing

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




我正在寻找您对主要为 RESTful Web API 设置和执行 API 测试的一般工作流程的建议。

更具体地说,我有以下几点困惑:

  • API 测试是通过编写代码(如单元测试)还是通过运行工具来完成?
  • API测试应该产生什么样的结果和报告?
  • API 测试应该涵盖哪些类型的测试?
  • 最佳答案

  • 使用单元测试,您可以检查获取请求数据的实现逻辑是否正确,但这还不够。要测试 API,应该检查数据序列化/反序列化为各种格式(JSON、XML、ATOM 等)、授权和身份验证、异常处理(将应用程序异常转换为 HTTP 错误代码)等内容。 API 应该从客户端的角度进行测试。您可以使用可以发送类似于客户端发送的请求的工具来实现它,即 jmeter .
  • API 测试应生成包含请求通过/失败的信息的报告。如果请求失败,应提供响应以供进一步调查。 API 测试应该集成到 CI 中。
  • API 测试应包括:
  • 功能测试:测试不同参数和参数组合的有效请求,准备模拟客户端请求的测试场景,也应测试无效(坏)请求以检查是否正确处理并且不会使您的应用程序崩溃
  • 安全测试:检查来自不同客户端的请求是否相互影响
  • 性能测试:测量端点的响应时间

  • 示例

    让我们假设有一个带有查询参数的端点/users:
  • 计数(计数 > 0 & 计数 <= 100,默认 10)
  • startIndex (startIndex >=0, 默认 0)

  • 相关的测试场景可以分为两组:有效请求和无效请求

    有效请求(始终检查响应格式):
  • GET/users - 验证响应包含 10 个项目,从项目 0
  • 开始
  • GET/users?count=1 - 验证响应包含 1 个项目,从项目 0
  • 开始
  • GET/users?count=100 - 验证响应包含 100 个项目,从项目 0
  • 开始
  • GET/users?startIndex=5 - 验证响应包含 10 个项目,从项目 5
  • 开始
  • GET/users?startIndex=200&count=100 - 验证响应包含 100 个项目,从项目 200
  • 开始
  • GET/users?startIndex=0&count=10 - 验证响应包含 10 个项目,从项目 0
  • 开始

    无效请求:
  • GET/users?count=0 - 验证响应代码是否为 400
  • GET/users?count=-10 - 验证响应代码是否为 400
  • GET/users?count=foo - 验证响应代码是否为 400
  • GET/users?count=10bar - 验证响应代码为 400
  • GET/users?count=101 - 验证响应代码是否为 400
  • GET/users?startIndex=-1 - 验证响应代码为 400
  • GET/users?startIndex=foo - 验证响应代码是否为 400
  • GET/users?startIndex=foo&count=bar - 验证响应代码为 400
  • 关于rest - 在 RESTful Web API 上进行 API 测试的一般建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19262216/

    相关文章:

    javascript - promise 总是被拒绝

    java - 执行 Rest Api 的基本自动化脚本时出现 java.net.UnknownHostException

    java - 如何将@BeforeEach 方法与特定的@Test 方法(Java、JUnit)链接起来?

    javascript - GatsbyJS 和 Wordpress REST API 401 未授权错误

    java - 当我调用 Web 服务 GET 请求时没有响应

    javascript - Postman 环境变量返回 null

    json - 在 postman 中声明整个响应主体

    redirect - 如何在 postman 中访问重定向的网址?

    rest - HP NonStop 休息服务部署

    php - 如何在 php 中获取 POST 的正文?