接口测试基础
一、认识接口测试
接口测试
接口:系统之间数据交互的通道。
-
硬件接口
-
软件接口
接口测试:基于不同的输入参数,校验接口响应数据与预期数据是否一致。
为什么要学接口测试?
-
提前介入测试、尽早发现问题
-
中级测试工程师必备技能
接口测试学什么?
-
接口测试用例设计
-
工具实现接口测试
-
代码实现接口测试
二、项目介绍
项目介绍
-
项目名称:客达天下
-
项目类型:销售管理系统 (CRM)
-
项目特点:
-
前后端分离
-
功能通用性强
-
熟悉项目
-
项目角色:销售人员、销售经理、财务人员等
-
项目业务:线索管理、合同管理等
-
项目技术:
待测接口
需求:完成管理业务及相关单位模块接口测试。
合同管理业务登录添加课程上传合同新增合同
课程管理模块添加课程修改课程查询课程删除课程
接口测试流程
三、HTTP协议
URL
URL:是互联网上标准资源的地址,一般称为统一资源定位符。
组成:协议://hostname[:port]/path/ [?查询参数1 & 查询参数2]
示例:
HTTP协议
HTTP:超文本传输协议,基于请求与响应的应用层协议
作用:规定了客户端与服务器之间信息传递规范,是二者共同遵守的协议。
组成:
-
HTTP请求:定义请求数据格式
-
请求行、请求头、请求体
-
-
HTTP响应:定义响应数据格式
-
状态行、响应头、响应体
-
HTTP —请求行
位置:请求数据第一行
作用:说明需求方法、访问的资源、协议版本
常用请求方法:
-
GET:从服务器获取资源
-
POST:在服务器新建一个资源
-
PUT:在服务器更新资源
-
DELETE:从服务器删除资源
HTTP请求—请求头
位置:请求数据第二行到空白行之间
作用:通知服务器客户端请求信息
特点:请求头部由键值对组成,每行一对
Content-Type:请求体数据类型
-
text/html:HTML格式
-
image/jpeg:jpg图片格式
-
application/json:JSON数据格式
-
application/x-www-form-urlencoded:表单默认的提交数据格式
-
multipart/form-data:在表单中进行文件上传时使用
HTTP请求—请求体
位置:空白行之间的内容
作用:传输数据实体
注意:请求体常在POST、PUT方法中使用
常配合的请求头:Content-Type和Content-Length
-
请求报文中可以没有请求体数据
HTTP响应—状态行
位置:响应数据第一行
作用:描述服务器处理结果
内容:状态行由协议版本号、状态码、状态消息组成
状态码:三位数字组成,第一个数字定义响应类别
1XX:提示信息2XX:成功3XX:重定向4XX:客户端错误5XX:服务端错误
HTTP响应—常见的响应状态码
HTTP响应—响应头
位置:第二行开始到空白行之间
作用:描述客户端要使用的一些附加信息
特点:响应头由键值对组成,每行一对
HTTP响应—响应体
位置:响应数据空白行之后
作用:服务器返回的数据实体
特点:有图片、json、xml、html等多种类型
案例:
四、接口规范
接口规范
作用:让前端开发与后台接口开发人员更好的配合,提高工作效率
常见接口规范:
传统接口风格
RESTful接口风格
传统接口风格
示例:对用户进行操作的相关接口,包括增删改查
RESTful
RESTful:一种网络应用程序的设计风格和开发方式,提供了一组设计原则和约束条件。
示例:
特点:
- 请求 API 的 URL 用来定位资源
- 通过标准HTTP方法对资源进行增删改查操作
- 利用HTTP状态码返回状态信息
区别
Postman测试步骤
一、合同新增业务
二、找业务路径
三、解析接口文档
四、编写接口测试用例
总结
Postman使用
一、Postman介绍
介绍:Postman是一款接口调试工具
特点:支持 Mac、Windows 和 Linux
下载:
https://www.getpostman.com
二、登录接口调式
获取验证码
需求:使用postman访问验证码接口,并查看响应结果地址:
http://kdtx-test.itheima.net/api/captchaimage实现步骤1.设置请求方式2.输入接口地址3.点击发送请求4.查看响应结果
登录
需求:使用Postman访问验证码接口,并查看响应结果说明:地址:http://kdtx-test.itheima.net/api/login方法:post请求数据:请求头:Content-Type:application/json请求体:["username": "admin","password": "admin 123","code":"2","uuid":"验证码接口返回结果中的数据值"]实现步骤:1.设置请求方式2.输入接口地址3.点击发送请求4.查看响应结果
总结
三、自动关联数据
问题:每次登录之前都需要手动复制验证码数据
思路:
自动关联数据
环境创建与选择
案例:使用自动关联技术,实现登录成功
需求:
1.验证码接口:/api/captchaimage2.登录接口:/api/login登录接口请求体uuid字段 -> 验证码接口返回 uuid字段
分析:
1.验证码接口响应体中提取uuidvar jsonData = pm.response.json();2.设置环境变量保存uuidpm.environment.set("var_name",value);3.登录接口引用uuid请求参数中引用: {{var_name}}
总结
接口调式
一、添加课程接口调试
二、上传合同接口调试
Postman调试合同上传接口
三、新增合同接口调试
添加合同接口调试
注意:
测试数据中的合同编号 contracNo 必须唯一。
查询合同列表接口调试
总结
Postman进阶
一、批量执行
Postman批量执行
作用:通过运行测试集的方式批量运行测试用例
步骤:
-
点击测试集中的 "Run" 按钮,批量运行测试用例
-
弹出 Collection Runner窗口,点击运行按钮
-
查看测试结果
二、登录接口测试
案例:完成 KDTX项目登录接口用例设计
需求:已注册正确的用户名和密码,登录成功用户名或密码错误,登录失败,提示 "用户名或密码错误"需求:按照接口测试思路进行测试点分析从测试点转化为测试用例使用Postman进行接口测试
提取测试点
设计测试用例
步骤:
-
点击测试集中的 "Add folder" 添加文件夹管理测试用例
-
点击文件夹上的 "Add Request" 添加请求实现测试用例
总结
三、Postman断言
Postman断言介绍
作用:让Postman工具代替人工自动判定预期结果和实际结果是否一致。
用法:
Postman断言—响应状态码断言
模块名称:Status code:Code is 200
模块内容:
// 判断响应状态码是否等于 200
pm.test("status code is 200", function() {pm.response.to.have.status(200);
});
pm.test()
参数1:字符串-测试断言名称
参数2:回调函数-具体断言语句
pm.response.to.have.status(code:Number); // 判断是否包含指定的状态码
Postman断言—包含指定字符串断言
模块名称:Response body: Contains string
模块内容:
Postman断言—JSON断言
模块名称:Response body: JSON value check
模块内容:
总结
四、参数化
Postman参数化介绍
场景:测试脚本中仅测试数据不一样,使用参数化比提高脚本复用。
步骤:
-
测试数据保存在数据文件单独维护
-
引用数据文件实现脚本循环调用
Postman参数化实现
准备数据文件
引用数据文件数据
Postman参数化实现
选择数据文件:运行测试集时选择数据文件
总结
课程项目实践
一、课程添加
课程添加接口文档
1.提取测试点
2.设计测试用例
3.使用Postman进行接口测试
步骤:
-
点击测试集中的 "Add folder" 添加文件夹管理测试用例
-
点击文件夹上的 "Add Request" 添加请求实现测试用例
总结
二、查询课程列表
查询课程列表接口文档
提取测试点
设计测试用例
三、课程修改
课程修改接口文档
提取测试点
设计测试用例
四、课程删除
课程删除接口文档
提取测试点
设计测试用例
相关文章:

接口测试基础
一、认识接口测试 接口测试 接口:系统之间数据交互的通道。 硬件接口 软件接口 接口测试:基于不同的输入参数,校验接口响应数据与预期数据是否一致。 为什么要学接口测试? 提前介入测试、尽早发现问题 中级测试工程师必备技能 接口测试学…...
为什么 from . import * 不会导入子模块
为什么 from . import * 不会导入子模块 在 Python 中,from . import * 并不会自动导入子模块。这是因为 import * 的行为是由模块的 __all__ 变量决定的。如果没有定义 __all__,它只会导入当前模块中定义的顶层变量和函数,而不会递归地导入…...

LangGPT结构化提示词编写实践
langGPT提示词 # Role: 浮点数比较助手 ## Profile - author: LangGPT - version: 1.0 - language: 中文 - description: 一个专门帮助用户进行浮点数比较的助手,确保LLM能够准确识别和对比浮点数。## Skills 1. 理解浮点数的结构和数值意义。 2. 精…...
React: class 和 style
一、class 1、在react中使用className属性来绑定类名 <div className"header flex-middle-middle">添加2个类名 </div>2、动态添加类名 <div className{item ${nameactive ? active : }}>动态添加active类名 </div>二、style 1、react中…...

【数据结构】包装类、初识泛型
🎇🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…...

TCP客户端connect断线重连
文章目录 TCP客户端connect断线重连1、为什么要断线重连2、实现代码 TCP客户端connect断线重连 1、为什么要断线重连 客户端会面临服务器崩溃的情况,我们可以试着写一个客户端重连的代码,模拟并理解一些客户端行为,比如游戏客户端等. 考虑到…...

细说MCU用DMA改变DAC输出信号频率和改善输出波形质量的方法
目录 一、参考硬件 二、修改定时器参数改变输出波形频率 三、改善波形质量 四、代码修改 五、查看结果 一、参考硬件 本项目的软件硬件工程参考作者的其他文章:细说MCU用DMA实现DAC输出的方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/14065…...
Java高级面试题
文章目录 Java高级特性Java 8 中的新特性有哪些?Lambda 表达式的用途是什么?Stream API 的工作原理是什么?Optional 类的作用是什么?什么是函数式接口?Java 9 之后的新特性有哪些? 并发编程Java中的线程池是…...

USART串口理论知识总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码 #include <stdint.h…...

基于 HTML+ECharts 实现智慧景区数据可视化大屏(含源码)
构建智慧景区数据可视化大屏:基于 HTML 和 ECharts 的实现 随着旅游业的蓬勃发展,智慧景区的概念逐渐深入人心。通过数据可视化,景区管理者可以实时监控游客流量、设施使用情况以及环境状况,从而提升游客体验和管理效率。本文将详…...

vxe-table——实现切换页码时排序状态的回显问题(ant-design+elementUi中table排序不同时回显的bug)——js技能提升
之前写的后台管理系统,都是用的antdelement,table组件中的【排序】问题是有一定的缺陷的。 想要实现的效果: antv——table组件一次只支持一个参数的排序 如下图: 就算是可以自行将排序字段拼接到列表接口的入参中,…...

SQL
SQL全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 。 SQL通用语法 SQL语句可以单行或多行书写,以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库的…...

maven archetype
1.简介 maven脚手架是为了创建一个项目模板,以后新建项目都能够复用该模板 maven中模板引擎使用的是velocity,在文件中可以使用它的语法获取变量等操作 2.实现 单模块脚手架实现 pom.xml <?xml version"1.0" encoding"UTF-8"?> &…...

浏览器打开抽奖系统html
<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>在线抽奖 随机选取 自动挑选</title> <script src"https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <style> body {…...
微信小程序-使用Component方法代替Page方法构造页面
一.使用Component方法的前提条件 在小程序js文件里使用Component方法代替Page方法需要在json文件里面定义usingComponents属性 {"usingComponents": {} }二.注意事项 1.在page页面里使用的钩子函数和事件监听方法都需要写在methods对象里面 methods:{update(){thi…...
Spark SQL----DISTRIBUTE BY子句
Spark SQL----DISTRIBUTE BY子句 一、描述二、语法三、参数四、例子 一、描述 DISTRIBUTE BY子句用于根据输入表达式对数据进行重新分区。与CLUSTER BY子句不同,这不会对每个分区内的数据进行排序。 二、语法 DISTRIBUTE BY { expression [ , ... ] }三、参数 e…...

HTML5-canvas1
1、canvas:创建画布 <canvas id"canvas"></canvas>2、画一条直线 var canvasdocument.getElementById(cancas); canvas.width800; canvas.height800; var contextcanvas.getContext(2d); //获得2d绘图上下文环境 //画一条直线 c…...

【NOI-题解】1009 - 数组逆序1162 - 数组元素的删除1211 - 数组元素的插入1161. 元素插入有序数组1159. 数组元素的移动
文章目录 一、前言二、问题问题:1009 - 数组逆序问题:1162 - 数组元素的删除问题:1211 - 数组元素的插入问题:1161. 元素插入有序数组问题:1159. 数组元素的移动 三、感谢 一、前言 本章节主要对数组问题中数组元素移…...
新电脑如何设置 npm 源及查看源、安装 cnpm、pnpm 和 yarn 的详细教程
当你获得一台新电脑,或需要在现有电脑上优化 JavaScript 和 Node.js 的开发环境时,正确配置 npm 是一步不可少的过程。本教程将详细指导你如何设置 npm 源,查看当前源,以及如何安装 cnpm、pnpm 和 yarn。 1. 设置 npm 源 npm (N…...

完全移动huggingface模型仓库(不是简单mv)
Linux中移动huggingface模型仓库 参考链接 先在bashrc中配置: export HF_DATASETS_CACHE"/your/path/dataset" export HF_HOME"/your/path/" export HUGGINGFACE_HUB_CACHE"/your/path/hub" export TRANSFORMERS_CACHE"/your…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...