Skip to content

需求

项目

PetClinic 接口自动化测试的侧重点在于验证后端 RESTful API 的业务逻辑正确性、数据交互稳定性及接口契约一致性。测试主要围绕 宠物主人、宠物、兽医、就诊记录 等核心模块的接口展开,重点检查 请求参数校验、响应数据结构、状态码返回、业务流程联动 以及 数据库更新结果 的准确性。通过自动化测试框架(如 pytest + requests),实现接口的快速回归、批量执行与持续集成(CI/CD)联动,确保在频繁迭代中系统功能不被破坏。同时,应设计覆盖 正向与异常场景 的用例,验证系统在输入不合法、权限不足或数据缺失情况下的稳健性。整体目标是通过高效、可复用的接口自动化测试,构建稳定的回归验证体系,保障 PetClinic 后端服务的功能一致性与接口可靠性。

需求

本文档有以下作用:

  • 开发人员开发依据
  • 设计人员输入源
  • 产品经理跟进产品执行实现程度的依据
  • 测试人员编写接口自动化测试用例的输入源
  • 外部人员产品理解或执行的依据

产品简述

产品描述

Petclinic 是一个宠物医院系统。系统中可以完成宠物主人信息、宠物信息、宠物主人与宠物的对应关系管理以及宠物医生对应的信息管理。

产品功能

对于宠物医院系统来说,只有商家端产品。商家端完成关于宠物主人、宠物和宠物医生的所有管理。

对于宠物主人,可以添加,修改,查询宠物主人信息,还可以为宠物主人添加宠物。对于宠物医生可以进行添加、查询、修改、删除的操作。

也可以添加宠物的类型和宠物医生的特长信息。

专有名词解释
专有名词 描述
Owners 宠物主人
Last name 英文姓名中的姓氏
Find Owner 查询宠物主人信息
REST API 表述性状态转移应用程序接口
JSON JavaScript对象表示法
产品总体架构

下图为 PetClinic 系统架构图

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   前端界面      │    │   REST API      │    │   数据库        │
│   (Web UI)      │◄──►│   (Spring Boot) │◄──►│   (H2/MySQL)    │
└─────────────────┘    └─────────────────┘    └─────────────────┘

宠物主人信息搜索接口功能

接口概述

宠物主人搜索功能通过REST API提供,支持通过Last Name进行模糊搜索,返回匹配的宠物主人信息。

接口列表
接口名称 请求方法 接口路径 功能描述
搜索宠物主人 GET /owners 根据Last Name搜索宠物主人信息
获取宠物主人详情 GET /owners/{id} 获取指定ID的宠物主人详细信息
创建宠物主人 POST /owners 创建新的宠物主人信息
更新宠物主人 PUT /owners/{id} 更新指定ID的宠物主人信息
删除宠物主人 DELETE /owners/{id} 删除指定ID的宠物主人信息
接口详细说明
1. 搜索宠物主人接口

接口地址: GET /owners

请求参数:

参数名 类型 必填 描述 示例
lastName String 宠物主人的姓氏,支持模糊匹配 "Davis"

请求示例:

GET /owners?lastName=Davis HTTP/1.1
Host: localhost:8080
Content-Type: application/json

响应参数:

参数名 类型 描述
id Integer 宠物主人ID
firstName String 宠物主人名字
lastName String 宠物主人姓氏
address String 地址
city String 城市
telephone String 电话
pets Array 宠物列表

响应示例:

[
  {
    "id": 1,
    "firstName": "George",
    "lastName": "Davis",
    "address": "110 W. Liberty St.",
    "city": "Madison",
    "telephone": "6085551023",
    "pets": []
  },
  {
    "id": 2,
    "firstName": "Betty",
    "lastName": "Davis",
    "address": "638 Cardinal Ave.",
    "city": "Sun Prairie",
    "telephone": "6085551749",
    "pets": []
  }
]

状态码说明:

状态码 描述
200 请求成功
400 请求参数错误
404 未找到匹配的宠物主人
500 服务器内部错误
2. 获取宠物主人详情接口

接口地址: GET /owners/{id}

路径参数:

参数名 类型 必填 描述
id Integer 宠物主人ID

请求示例:

GET /owners/1 HTTP/1.1
Host: localhost:8080
Content-Type: application/json

响应示例:

{
  "id": 1,
  "firstName": "George",
  "lastName": "Davis",
  "address": "110 W. Liberty St.",
  "city": "Madison",
  "telephone": "6085551023",
  "pets": [
    {
      "id": 1,
      "name": "Leo",
      "birthDate": "2010-09-07",
      "type": {
        "id": 1,
        "name": "cat"
      }
    }
  ]
}

3. 创建宠物主人接口

接口地址: POST /owners

请求体:

参数名 类型 必填 描述
firstName String 宠物主人名字
lastName String 宠物主人姓氏
address String 地址
city String 城市
telephone String 电话

请求示例:

POST /owners HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{
  "firstName": "John",
  "lastName": "Smith",
  "address": "123 Main St.",
  "city": "New York",
  "telephone": "5551234567"
}

响应示例:

{
  "id": 15,
  "firstName": "John",
  "lastName": "Smith",
  "address": "123 Main St.",
  "city": "New York",
  "telephone": "5551234567",
  "pets": []
}

4. 更新宠物主人接口

接口地址: PUT /owners/{id}

路径参数:

参数名 类型 必填 描述
id Integer 宠物主人ID

请求体:

参数名 类型 必填 描述
firstName String 宠物主人名字
lastName String 宠物主人姓氏
address String 地址
city String 城市
telephone String 电话

请求示例:

PUT /owners/1 HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{
  "firstName": "George",
  "lastName": "Davis",
  "address": "110 W. Liberty St.",
  "city": "Madison",
  "telephone": "6085551023"
}

响应示例:

{
  "id": 1,
  "firstName": "George",
  "lastName": "Davis",
  "address": "110 W. Liberty St.",
  "city": "Madison",
  "telephone": "6085551023",
  "pets": []
}

5. 删除宠物主人接口

接口地址: DELETE /owners/{id}

路径参数:

参数名 类型 必填 描述
id Integer 宠物主人ID

请求示例:

DELETE /owners/1 HTTP/1.1
Host: localhost:8080
Content-Type: application/json

响应示例:

{
  "message": "Owner deleted successfully"
}

接口性能需求
  • 接口响应时间不超过2秒
  • 支持100个并发用户同时访问
  • 接口可用性达到99.9%
接口安全需求
  • 所有接口需要支持HTTPS协议
  • 敏感信息传输需要加密
  • 需要实现接口访问频率限制
  • 需要实现接口访问权限控制
接口兼容性需求
  • 支持HTTP/1.1和HTTP/2协议
  • 支持JSON格式的数据交换
  • 支持跨域请求(CORS)