【测试】——接口测试入门
📖 前言:本文简要介绍了接口测试的基础知识,适合初学者入门。内容涵盖了接口的基本概念、接口文档的组成、接口测试的原理和特点,以及如何使用工具进行接口测试。
目录
- 🕒 1. 接口介绍
- 🕘 1.1 原理
- 🕘 1.2 组成部分
- 🕘 1.3 接口信息解析
- 🕒 2. 接口测试介绍
- 🕘 2.1 原理
- 🕘 2.2 特点
- 🕘 2.3 实现方式
- 🕒 3. 接口测试流程
- 🕒 4. 接口用例编写
- 🕘 4.1 单接口测试
- 🕘 4.2 业务场景测试(多接口测试)
- 🕒 5. 使用Postman进行测试
🕒 1. 接口介绍
🕘 1.1 原理
接口可分为硬件接口和软件接口,我们只关注软件层面的接口。
软件接口按照范围可划分:系统之间的接口和程序内部的接口
- 系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互
- 程序内部的接口:方法与方法之间,模块与模块之间的交互
🕘 1.2 组成部分
接口文档应该包含以下内容:
1、接口说明
2、调用URL
3、请求方法(get/post)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头header。
标头 (header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔,一般存放cookie、token等信息
🔎 例子:IHRM人力资源管理系统接口文档
🕘 1.3 接口信息解析
如果接口文档不完整,开发已经把前端页面开发好,可通过抓包解析接口信息。
抓包步骤:
- 打开需要抓包的网页
- 打开浏览器的开发者工具(F12)
- 选择Network
- 操作网页执行动作
- 查看接口的请求报文和响应报文
🔎 示例网站-IHRM后台登录系统
其中开发者工具的中英文含义对照如上
🕒 2. 接口测试介绍
接口测试:直接对后端服务的测试,负责校验接口响应数据与预期数据是否一致,是服务端性能测试的基础。
🕘 2.1 原理
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
🕘 2.2 特点
- 测试可以提前介入,提早发现Bug,符合质量控制前移的理念
- 可以发现一些页面操作发现不了的问题
- 接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)
- 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测
🕘 2.3 实现方式
- 使用接口测试工具来实现(如JMeter、Postman)
- 通过编写代码来实现(如Python + Requests)
🕒 3. 接口测试流程
- 需求分析:主要依据需求文档
- 接口文档解析:一般是由开发人员编写接口文档(API文档)
- 设计测试用例
- 执行测试:接口测试工具/编写代码
- 接口缺陷管理与跟踪
- 生成测试报告
- 接口自动化持续集成(可选)
面试题:如何对接口设计测试用例
答:接口主要的组成部分:请求方法、请求参数、URL、响应结果
- 检查数据正确性:不同的参数对应的不同接口返回结果;检查数据库数据是否正确
- 不同的请求类型:get post不同的请求类型下是否符合预期
- 校验接口兼容性:传入异常数据接口是否会崩溃,接口之间互相调用的情况下是否兼容老版本的接口
- 校验接口的安全性:参数是否加密,SQL注入,XSS漏洞(
select * from user where userId = '1' or 1=1 <script>alert("hello")</script>
)
🕒 4. 接口用例编写
🕘 4.1 单接口测试
正向功能(通过性测试):
- 必填参数组合
- 必填+非必填组合
- 全部参数组合
- 其他参数组合
反向测试(异常测试):
- 业务数据异常:结合业务功能考虑输出的各种异常返回情况
- 数据异常:数据为空、长度不符、类型不符、错误数据
- 参数异常:无参、少参、多参、错误参数
ID | 模块 | 用例名称 | 接口名称 | 请求URL | 请求类型 | 请求头 | 请求参数类型 | 请求参数 | 预期结果 | 测试结果 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 登录 | 登录成功 | 登录 | /api/sys/login | POST | {“Content-Type”:“application/json”} | json | {“mobile”:“13800000002”,“password”:“123456”} | 登录成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:“xxx”} | |
2 | 登录 | 用户名不存在 | 登录 | /api/sys/login | POST | {“Content-Type”:“application/json”} | json | {“mobile”:"13888889999”,“password”:“123456”} | 登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null} | |
3 | 登录 | 密码错误 | 登录 | /api/sys/login | POST | {“Content-Type”:“application/json”} | json | {“mobile”:“13800000002”,“password”:“error”} | 登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null} | |
4 | 登录 | 请求参数为空 | 登录 | /api/sys/login | POST | {“Content-Type”:“application/json”} | 登录失败,状态码:200,返回数据:{“success”:false,“code”:99999,“message”:“抱歉,系统繁忙,请稍后重试!”,“data”:null} | |||
5 | 登录 | 用户名为空 | 登录 | /api/sys/login | POST | {“Content-Type”:“application/json”} | json | {“mobile”:“”,“password”:“123456”} | 登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,"message:“用户名或密码错误”,“data”:null} | |
6 | 登录 | 密码为空 | 登录 | /api/sys/login | POST | {“Content-Type”:“application/json”} | json | {“mobile”:“13800000002”,“password”:“”} | 登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,"message:“用户名或密码错误”,“data”:null} |
🕘 4.2 业务场景测试(多接口测试)
从功能业务用例转化
针对业务功能用例中操作步骤,分析对应的接口请求
举例:登录系统后,对员工进行增删改查的操作
ID | 模块 | 用例名称 | 接口名称 | 前置条件 | 请求URL | 请求类型 | 请求头 | 请求参数 | 预期结果 | 测试结果 |
---|---|---|---|---|---|---|---|---|---|---|
001 | 员工 | 员工信息管理 | 添加员工 | 登录成功 | /api/sys/user | POST | {“Content-Type”: “application/json”, “Authorization”:“Bearer xxx”} | {“username”:“tom”, “mobile”:“13012340001”, “timeOfEntry”:“2019-07-01”, “formOfEmployment”:1, “workNumber”:“1322131”, “departmentName”:“开发部”, “departmentId”:“1066240656856453120”, “correctionTime”:“2019-11-30”} | 添加成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:{“id”:“113749504”}} | |
查询员工 | 登录成功 | /api/sys/user/:target | GET | {“Content-Type”: “application/json”, “Authorization”:“Bearer xxx”} | 查询成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:{}} | |||||
修改员工 | 登录成功 | /api/sys/user/:target | PUT | {“Content-Type”: “application/json”, “Authorization”:“Bearer xxx”} | {“username”:“tom-new”} | 修改成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:“113749504”} | ||||
删除员工 | 登录成功 | /api/sys/user/:target | DELETE | {“Content-Type”: “application/json”, “Authorization”:“Bearer xxx”} | 删除成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:null} |
🕒 5. 使用Postman进行测试
🔎 Postman官网
Postman是一款非常流行的接口调试工具,它使用简单,而且功能也很强大。不仅测试人员会使用,开发人员也会经常使用。
GET请求示例:
POST请求示例:
- form-data :适合上传文件或复杂表单。
- x-www-form-urlencoded :适合简单的表单数据传输。
- raw :适合发送纯文本格式的数据,如 JSON 或 XML。
- binary :适合发送二进制文件。
- GraphQL :适合发送 GraphQL 查询请求。
🔎 Postman 的 Body 类型区别
OK,以上就是本期知识点“接口测试入门”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页