有关RESTful Web API的API测试的一般建议

时间:2013-10-09 02:48:47

标签: rest web-api-testing

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

更具体地说,我有以下难点:

  1. 通过运行工具编写代码(如单元测试)或更多来完成API测试吗?
  2. API测试应该产生什么样的结果和报告?
  3. API测试应涵盖哪些类型的测试?

1 个答案:

答案 0 :(得分:10)

  1. 使用单元测试,您可以检查实现的逻辑以获取请求的数据是否正确,但这还不够。要测试API,比如数据序列化/反序列化到各种格式(JSON,XML,ATOM,...),授权和等等。应检查身份验证,异常处理(将应用程序异常转换为HTTP错误代码)。应从客户的角度测试API。您可以使用可以发送类似于客户发送的请求的工具来实现它,例如jmeter

  2. API测试应该生成包含请求通过/失败的信息的报告。如果请求失败,应提供答复以供进一步调查。 API测试应该集成到CI中。

  3. API测试应涵盖:

    • 功能测试:测试参数和参数的不同组合的有效请求,准备模拟客户端请求的测试场景,还应测试无效(坏)请求以检查是否正确处理并且不会使应用程序崩溃
    • 安全测试:检查来自不同客户端的请求是否相互影响
    • 性能测试:测量端点的响应时间
  4. 示例

    假设有一个带有查询参数的端点 / users

    • count (计数> 0& count< = 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