当前位置: 首页 > news >正文

【测试】——接口测试入门

📖 前言:本文简要介绍了接口测试的基础知识,适合初学者入门。内容涵盖了接口的基本概念、接口文档的组成、接口测试的原理和特点,以及如何使用工具进行接口测试。


目录

  • 🕒 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 接口信息解析

如果接口文档不完整,开发已经把前端页面开发好,可通过抓包解析接口信息。

抓包步骤:

  1. 打开需要抓包的网页
  2. 打开浏览器的开发者工具(F12)
  3. 选择Network
  4. 操作网页执行动作
  5. 查看接口的请求报文和响应报文

🔎 示例网站-IHRM后台登录系统

在这里插入图片描述在这里插入图片描述

其中开发者工具的中英文含义对照如上

🕒 2. 接口测试介绍

接口测试:直接对后端服务的测试,负责校验接口响应数据与预期数据是否一致,是服务端性能测试的基础。

在这里插入图片描述

🕘 2.1 原理

模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。

🕘 2.2 特点

  • 测试可以提前介入,提早发现Bug,符合质量控制前移的理念
  • 可以发现一些页面操作发现不了的问题
  • 接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)
  • 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测

🕘 2.3 实现方式

  • 使用接口测试工具来实现(如JMeter、Postman)
  • 通过编写代码来实现(如Python + Requests)

🕒 3. 接口测试流程

  1. 需求分析:主要依据需求文档
  2. 接口文档解析:一般是由开发人员编写接口文档(API文档)
  3. 设计测试用例
  4. 执行测试:接口测试工具/编写代码
  5. 接口缺陷管理与跟踪
  6. 生成测试报告
  7. 接口自动化持续集成(可选)

面试题:如何对接口设计测试用例

答:接口主要的组成部分:请求方法、请求参数、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/loginPOST{“Content-Type”:“application/json”}json{“mobile”:“13800000002”,“password”:“123456”}登录成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:“xxx”}
2登录用户名不存在登录/api/sys/loginPOST{“Content-Type”:“application/json”}json{“mobile”:"13888889999”,“password”:“123456”}登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
3登录密码错误登录/api/sys/loginPOST{“Content-Type”:“application/json”}json{“mobile”:“13800000002”,“password”:“error”}登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
4登录请求参数为空登录/api/sys/loginPOST{“Content-Type”:“application/json”}登录失败,状态码:200,返回数据:{“success”:false,“code”:99999,“message”:“抱歉,系统繁忙,请稍后重试!”,“data”:null}
5登录用户名为空登录/api/sys/loginPOST{“Content-Type”:“application/json”}json{“mobile”:“”,“password”:“123456”}登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,"message:“用户名或密码错误”,“data”:null}
6登录密码为空登录/api/sys/loginPOST{“Content-Type”:“application/json”}json{“mobile”:“13800000002”,“password”:“”}登录失败,状态码:200,返回数据:{“success”:false,“code”:20001,"message:“用户名或密码错误”,“data”:null}

🕘 4.2 业务场景测试(多接口测试)

从功能业务用例转化

针对业务功能用例中操作步骤,分析对应的接口请求

举例:登录系统后,对员工进行增删改查的操作

ID模块用例名称接口名称前置条件请求URL请求类型请求头请求参数预期结果测试结果
001员工员工信息管理添加员工登录成功/api/sys/userPOST{“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/:targetGET{“Content-Type”: “application/json”, “Authorization”:“Bearer xxx”}查询成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:{}}
修改员工登录成功/api/sys/user/:targetPUT{“Content-Type”: “application/json”, “Authorization”:“Bearer xxx”}{“username”:“tom-new”}修改成功,状态码:200,返回数据:{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:“113749504”}
删除员工登录成功/api/sys/user/:targetDELETE{“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
博客链接:🔎 作者博客主页


http://www.mrgr.cn/news/61768.html

相关文章:

  • 创建型模式-----建造者模式
  • AUTOSAR 规范中的设计模式:传感器执行器模式
  • 【系统设计】深入理解HTTP缓存机制:从Read-Through缓存到HTTP缓存的交互流程
  • C++之多态的深度剖析
  • 明日周刊-第25期
  • React 分装webSocket
  • 双十一狂欢节有哪些数码好物值得入手,盘点五款入手不亏的好物!
  • 从0开始搭建一个生产级SpringBoot2.0.X项目(二)SpringBoot应用连接数据库集成mybatis-plus
  • 计算结构力学:多自由度振动系统
  • 研究线性模型训练中损失变化的规律和最优学习率的影响
  • 2024 Rust现代实用教程:1.3获取rust的库国内源以及windows下的操作
  • Infinity-MM数据集:一个包含 4000 万个样本的开源视觉语言模型的大规模多模态指令数据集。
  • 【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析
  • 矩阵压缩格式转换:COO转换CSC(C++)
  • Python世界:自动化办公Word之批量替换文本生成副本
  • nginx[新手用][模块化][高效]配置
  • 使用命令行上传 ipa 到 App Store(iTMSTransporter 3.3)
  • [JAVAEE] 面试题(二) - CAS 和 原子类
  • 计算机组成原理之高级语言程序与机器级代码之间的对应、高级语言和机器级代码的具体示例
  • 优化云成本,打造卓越体验,他们有话说
  • 微信小程序 - 获取汉字拼音首字母(汉字英文首字母)根据汉字查拼音,实现汉字拼音首字母获取,在小程序上实现汉字的拼音提取首字母!
  • [专有网络VPC]管理VPC配额
  • 智慧园区 | 数智引领,让智慧触手可及
  • String的长度有限,而我对你的思念却无限延伸
  • IDEA 打包首个java项目为jar包
  • 开箱即用!智能文档处理“百宝箱”