Skip to content

接口测试 ​

接口测试是验证API接口正确性的重要手段,确保接口功能正常、性能达标、安全可靠。

📋 接口测试体系 ​

🎯 接口测试工具 ​

1. Postman ​

Postman是最流行的API测试工具,支持接口测试、文档生成、Mock服务等功能。

1.1 Postman 基础使用 ​

创建请求示例:

  1. GET 请求示例

    GET /api/v1/users?page=1&size=20
    Headers:
      Authorization: Bearer {token}
  2. POST 请求示例

    json
    POST /api/v1/users
    Headers:
      Content-Type: application/json
      Authorization: Bearer {token}
    Body:
    {
      "name": "John",
      "email": "john@example.com",
      "phone": "13800138000"
    }
  3. 断言验证

    javascript
    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    
    pm.test("Response has user data", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData).to.have.property('data');
        pm.expect(jsonData.data).to.be.an('array');
    });

1.2 Postman Collection ​

Collection 组织:

json
{
  "info": {
    "name": "用户服务API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "用户管理",
      "item": [
        {
          "name": "获取用户列表",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/api/v1/users",
              "host": ["{{base_url}}"],
              "path": ["api", "v1", "users"]
            }
          }
        }
      ]
    }
  ]
}

1.3 Postman 环境变量 ​

环境配置:

json
{
  "id": "env-1",
  "name": "开发环境",
  "values": [
    {
      "key": "base_url",
      "value": "https://api-dev.example.com",
      "enabled": true
    },
    {
      "key": "token",
      "value": "your_token_here",
      "enabled": true
    }
  ]
}

参考资源:

2. JMeter ​

JMeter是Apache开源的性能测试工具,支持接口测试、性能测试、负载测试。

2.1 JMeter 基础使用 ​

测试计划结构:

2.2 JMeter 测试场景 ​

1. 接口功能测试:

  • 单接口测试:测试单个接口的功能
  • 接口组合测试:测试多个接口的组合调用
  • 参数化测试:使用CSV文件进行参数化测试

2. 性能测试:

  • 响应时间测试:测试接口的响应时间
  • 并发测试:测试接口的并发处理能力
  • 压力测试:测试接口的压力承受能力

JMeter 测试脚本示例:

xml
<TestPlan version="1.2">
  <ThreadGroup>
    <stringProp name="ThreadGroup.num_threads">100</stringProp>
    <stringProp name="ThreadGroup.ramp_time">10</stringProp>
    <HTTPSamplerProxy>
      <stringProp name="HTTPSampler.domain">api.example.com</stringProp>
      <stringProp name="HTTPSampler.path">/api/v1/users</stringProp>
      <stringProp name="HTTPSampler.method">GET</stringProp>
    </HTTPSamplerProxy>
  </ThreadGroup>
</TestPlan>

参考资源:

3. REST Assured ​

REST Assured是Java领域的API测试框架,支持BDD风格的接口测试。

3.1 REST Assured 基础使用 ​

测试示例:

java
@Test
public void testGetUser() {
    given()
        .baseUri("https://api.example.com")
        .basePath("/api/v1")
        .header("Authorization", "Bearer " + token)
    .when()
        .get("/users/{id}", 1L)
    .then()
        .statusCode(200)
        .body("data.id", equalTo(1))
        .body("data.name", equalTo("John"))
        .body("data.email", equalTo("john@example.com"));
}

@Test
public void testCreateUser() {
    CreateUserRequest request = new CreateUserRequest();
    request.setName("John");
    request.setEmail("john@example.com");
    
    given()
        .baseUri("https://api.example.com")
        .basePath("/api/v1")
        .header("Authorization", "Bearer " + token)
        .contentType(ContentType.JSON)
        .body(request)
    .when()
        .post("/users")
    .then()
        .statusCode(201)
        .body("data.id", notNullValue())
        .body("data.name", equalTo("John"));
}

3.2 REST Assured 最佳实践 ​

测试组织:

java
public class UserApiTest {
    @BeforeAll
    static void setup() {
        RestAssured.baseURI = "https://api.example.com";
        RestAssured.basePath = "/api/v1";
    }
    
    @Test
    @Order(1)
    void testCreateUser() {
        // 创建用户测试
    }
    
    @Test
    @Order(2)
    void testGetUser() {
        // 获取用户测试
    }
    
    @Test
    @Order(3)
    void testUpdateUser() {
        // 更新用户测试
    }
    
    @Test
    @Order(4)
    void testDeleteUser() {
        // 删除用户测试
    }
}

参考资源:

4. API自动化测试 ​

API自动化测试可以提高测试效率,减少人工测试成本。

4.1 自动化测试框架 ​

框架语言特点适用场景
REST AssuredJavaBDD风格,易读易写Java项目
RequestsPython简洁易用Python项目
HTTPie命令行命令行工具快速测试
NewmanNode.jsPostman CLICI/CD集成

4.2 CI/CD 集成 ​

Jenkins 集成示例:

groovy
pipeline {
    agent any
    
    stages {
        stage('API测试') {
            steps {
                sh '''
                    npm install -g newman
                    newman run api-tests.json \
                        --environment dev.json \
                        --reporters cli,html
                '''
            }
        }
    }
}

GitLab CI 集成示例:

yaml
api_test:
  stage: test
  script:
    - npm install -g newman
    - newman run api-tests.json --environment dev.json
  artifacts:
    reports:
      junit: newman-report.xml

📋 接口测试最佳实践 ​

1. 测试用例设计 ​

测试用例分类:

  • 正常场景:测试接口的正常功能
  • 异常场景:测试接口的异常处理
  • 边界场景:测试接口的边界条件
  • 性能场景:测试接口的性能指标

2. 测试数据管理 ​

测试数据策略:

  • 测试数据准备:准备标准化的测试数据
  • 数据隔离:每个测试使用独立的数据
  • 数据清理:测试完成后清理测试数据

3. 测试报告 ​

测试报告内容:

  • 测试覆盖率:接口测试覆盖率统计
  • 测试结果:通过/失败统计
  • 性能指标:响应时间、吞吐量等指标
  • 问题分析:失败用例的原因分析

📖 学习资源 ​

视频教程 ​

书籍推荐 ​

  • 《接口测试实战》 - 专门讲解接口测试
  • 《API测试实战》 - API测试最佳实践
  • 《Postman接口测试实战》 - Postman使用指南
  • 《JMeter性能测试实战》 - JMeter使用指南

网站资源 ​

工具推荐 ​

  • 接口测试工具:Postman、Insomnia、Apifox
  • 性能测试工具:JMeter、Gatling、K6
  • 自动化测试框架:REST Assured、Requests、HTTPie
  • Mock工具:MockServer、WireMock、MSW

✅ 接口测试检查清单 ​

  • [ ] 接口功能测试已完成
  • [ ] 接口性能测试已完成
  • [ ] 接口安全测试已完成
  • [ ] 接口自动化测试已建立
  • [ ] 接口测试报告已生成
  • [ ] 接口测试已集成到CI/CD
  • [ ] 接口测试覆盖率达标(>80%)

上一章节:单元测试
下一章节:性能测试
返回目录:工程架构能力