目录
PetClinic 宠物主人搜索接口¶
请求方式:GET(HTTPS)¶
请求地址: https://spring-petclinic-rest.k8s.hogwarts.ceshiren.com/petclinic/api/owners?lastName=LASTNAME¶
请求参数说明¶
| 参数 | 必须 | 说明 |
|---|---|---|
| lastName | 否 | 输入宠物主人 Last name,长度不超过 1~80 个字母 |
权限说明¶
暂不进行权限控制
返回结果¶
[
{
"address": "110 W. Liberty St.",
"city": "Madison",
"firstName": "George",
"id": 1,
"lastName": "Franklin",
"pets": [
{
"birthDate": "2022-10-31",
"id": 1,
"name": "Leo",
"ownerId": 1,
"type": {
"id": 1,
"name": "cat"
},
"visits": [
{
"date": "2022-10-31",
"description": "rabies shot",
"id": 1,
"petId": 1
}
]
}
],
"telephone": "6085551023"
}
]
返回参数说明¶
| 参数 | 说明 |
|---|---|
| address | 宠物主人的地址 |
| city | 宠物主人的城市 |
| firstName | 宠物主人的名字 |
| id | 宠物主人的id |
| lastName | 宠物主人的姓氏 |
| pets | 宠物的信息 |
| pets.birthDate | 宠物的生日 |
| pets.id | 宠物的id |
| pets.name | 宠物的名字 |
| pets.ownerId | 宠物主人的id |
| pets.type | 宠物的类型 |
| pets.type.id | 宠物的类型的id |
| pets.type.name | 宠物的类型的名称 |
| pets.visits | 宠物访问记录 |
| pets.visits.date | 宠物访问记录的日期 |
| pets.visits.description | 宠物访问记录的描述信息 |
| pets.visits.id | 宠物访问记录的id |
| pets.visits.petId | 宠物访问记录访问的宠物id |
| telephone | 宠物主人的手机号码 |
| ## 应用场景说明 |
接口测试是一项收益很高的测试方向,相较于 UI 测试,它有着更便捷,应用场景更多,制造数据方便的优点。并且针对不同的语言,接口测试也有很多工具和框架可以使用。
接口测试常用的场景有以下三个:
- 被测业务由多个 API 协作调用完成:很多情况下,前端的一个操作涉及到的都不单只是一个接口,其中可能包含后端的多个接口逻辑,为了测试前端的稳定性,或者进行性能测试,就必须从模拟后端调用 API 的情况。例如:根据前一个接口的返回情况,判断调用的下个接口,以及将上一个接口的返回值信息传递到下个接口中等。
- 异常场景的校验:在有接口详细信息的前提下,就可以根据接口本身来制造异常场景,例如字段的是否必填,字段长度,以及空值和特殊值的校验。
- 异步 API 的测试:异步 API 是指,该接口调用后立即返回,但实际任务没有执行,需要后续调用查询或其他的接口才能获取成功调用的结果。异步 API 的测试重点在测试异步调用是否成功,以及异步调用的业务逻辑是够正确。
环境准备¶
接口调试工具¶
接口的手工测试经常用到的一个工具是 Postman,这是一款在业界很受欢迎的工具。起初只是一个插件,后来独立出来作为一个专注于调试接口的软件。界面友好、功能丰富是 Postman 最大的优点,里边集成了几乎做接口测试会用到的全部功能,并且对于跨语言的需求也满足。Postman 是开发人员日常调试接口,测试人员完成接口测试都很方便的一款工具。
下载方式也很简单,进入 Postman 的官网,选择对应的系统版本下载安装即可。
官网地址:https://www.postman.com/downloads/
代理工具¶
如果要测试的接口没有提供详细的接口文档,这时候需要借助代理工具抓包来获取接口信息。
Web 抓包可以借助 chrome 的开发者工具,在 Network 面板即能看到详细的接口信息
其他产品需要借助于代理工具,比较常用的有 Charles 和 Fiddler。其中 Charles 是一款跨平台的代理工具,MacOS、Windows 和 Linux 系统下都可以使用。Charles 支持 HTTP、HTTPS 的代理抓包,并且还提供了修改请求,重发请求、模拟弱网、设置断点,解密 HTTPS 的功能。
使用时进入官网下载即可:
下载 Charles :
官网地址: https://www.charlesproxy.com/
接口测试需求理解¶
根据业务逻辑整理出流程所包含的接口,查看接口文档提供的信息,请求类型为 GET 请求,请求参数为 lastName,有长度限制。
根据用例设计的思路,需要验证字段是否必填,长度限制,内容限制,等正向以及异常的测试场景。
接口功能测试用例设计¶
接口测试用例仍然采用和功能测试一样的表格形式来设计,针对搜索功能接口来设计用例。主要包含了冒烟、空值、特殊字符、长度限定。
表头设计如下:
- 用例编号
- 模块
- 测试点
- 前置条件
- 接口地址(URL)
- 请求方法
- 请求参数
- 预期结果
- 实际结果
分别验证接口的正向功能,以及无参,模糊搜索,超长字段,特殊字符字段等校验,测试用例如下所示:
| 用例编号 | 模块 | 测试点 | 前置条件 | URL | 请求方法 | 请求参数 | 预期结果 | 实际结果 |
|---|---|---|---|---|---|---|---|---|
| c_001 | 获取宠物主人接口验证 | 【冒烟】存在的姓氏可以正确获取宠物主人信息 | http://k8s03.hogwarts.ceshiren.com:39966/petclinic/api/owners | get | lastName=++++ | 接口功能正常,正确获取到宠物主人的信息 [ { "firstName": "+++", "lastName": "Green", "address": "110 W. Liberty St.", "city": "Madison", "telephone": "6085551023", "id": 155, "pets": [] } ] |
具体的测试用例信息请参考:
接口测试用例创建¶
在 Postman 中,创建测试集,填写接口信息,通过调参和编写断言结果来测试搜索接口。
测试集创建¶

接口测试用例创建¶
根据接口测试用例
- 选择请求方法为 GET 请求
- URL 为:https://spring-petclinic-rest.k8s.hogwarts.ceshiren.com/petclinic/api/owners
- 添加请求参数:lastName=Green

添加断言:
在 Postman 中编写断言信息,发送请求,得到断言结果:
// 验证响应状态码
pm.test("响应状态码为 200", function () {
pm.response.to.have.status(200);
});
// 验证响应信息是否包含某字段
pm.test("响应体中包含预期的字符串", function () {
pm.expect(pm.response.text()).to.include("Green");
});
// 验证响应头信息中的 Content-Type 是否存在
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});

点击 Send 按钮运行接口,查看结果

保存接口到测试集

选择新创建好的测试集,点击 SAVE 按钮

运行测试集¶
把请求参数定义为测试集变量

接口中的请求参数替换为变量

准备 json 格式测试数据
[
{
"lastName": "Green",
"expect": "Green"
},
{
"lastName": "",
"expect": ""
},
{
"lastName": "a",
"expect": "a"
},
{
"lastName": "b",
"expect": "b"
},
{
"lastName": "A",
"expect": "A"
},
{
"lastName": "hogwarts",
"expect": "hogwarts"
},
{
"lastName": "hogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwarts",
"expect": "hogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwartshogwarts"
},
{
"lastName": "涨",
"expect": "涨"
},
{
"lastName": "123",
"expect": "123"
},
{
"lastName": "###",
"expect": "###"
}
]
接口中的断言替换为测试数据中的值
// 验证响应信息是否包含某字段
pm.test("响应体中包含预期的字符串", function () {
pm.expect(pm.response.text()).to.include(data.expect);
});
进入测试集运行页面

选择测试数据文件,延迟时间,保存响应

接口测试报告¶
点击 Run 按钮运行测试集,查看测试结果

点击 View Summary 按钮,查看测试报告
