烟台网站建设找企汇互联专业,网站整站优化推广方案,.net网站开发实验报告,企业管理网站模板一.接口扫盲 1.什么是接口#xff1f; 接口是系统之间数据交互的通道。拿小红到沙县点餐为例#xff1a;小红想吃鸭腿饭。她要用什么语言来表达#xff1f;跟谁表达#xff1f;通过什么表达#xff1f;按照生活习惯应该是#xff1a;小红根据菜单对服务员用中文表达她想要…一.接口扫盲 1.什么是接口 接口是系统之间数据交互的通道。拿小红到沙县点餐为例小红想吃鸭腿饭。她要用什么语言来表达跟谁表达通过什么表达按照生活习惯应该是小红根据菜单对服务员用中文表达她想要一份鸭腿饭。这里中文作为小红和服务员的共同语言标准菜单作为一个规范。迁移到浏览器和服务器上浏览器和服务器通过http协议中文进行通信通过接口规范文档菜单发送符合规定的报文才能得到响应服务。 2.接口测试的意义是什么 接口测试可以理解为不借助前端提前对后端接口进行测试提早发现问题解决问题。 3.什么是接口测试 接口测试用来校验响应数据与预期结果是否一致、逻辑依赖关系是否正确。逻辑以来关系比如退出登录以后再打开订单链接是否会跳转到登录页面。 4.什么是自动化接口测试 自动化接口测试是使用工具和代码代替人工的测试方法主要依赖断言。 5.接口测试从哪些方面入手 单接口测试和多接口测试。 单接口测试分为正向测试必填参数组合、必填非必填组合和反向测试功能异常、数据异常、参数异常。 多接口测试需要考虑业务场景如登录后跳转页面。 6.接口测试与手工测试的不同 手工测试时可以根据页面的功能按钮、输入框来进行测试而接口测试没有输入框可以利用抓包工具获取到对应的key针对key所应对的value值进行测试。 7.接口测试用例怎么写 单接口测试用例以登录为例 多接口测试用例以后台管理用户为例 登录-添加用户-查询-修改用户-查询-删除用户-查询 8.怎么界定RESTful风格的接口 传统的接口测试只有post和get方法且url不唯一。 RESTful风格的接口有四种方法post增加、get查询、delete删除、put修改且url唯一。 9.接口文档的作用 帮助前端和后端工作人员进行工作对接。 帮助测试人员编写测试用例。 帮助新入职的员工快速接手项目。 10.f12抓包需要关注的内容 二.HTTP协议
HyperText Transfer Protocol超文本传输协议是一种用于请求和响应的应用层协议。
协议特点支持客户端服务器模式简单快速无连接无状态B/S模式 URLUniform Resource Locator 统一资源定位符用来定位资源。 协议http、https
域名IP地址可以定义到环境中的一台主机
端口号在主机上定义到具体的应用。默认端口号被省略就跟随协议。
--mysql默认端口号3306
--redis默认端口号6379
--http协议默认端口80
--https协议默认端口443
资源路径对应网页源代码或数据资源
--资源路径可以为空
--如果有查询参数资源路径为之前 / 之后的所有内容
--如果没有查询参数资源路径就从端口号到结束
查询参数传递参数给源代码一定是kv格式。 (一).HTTP请求
工具fiddler进行抓包验证
特点由客户端发送给服务器
格式请求行、请求头、空行、请求体get请求没有请求体
请求行请求方法、url、协议版本
作用指定请求方法和请求资源
格式请求方法空格url空格协议版本\r\n
请求方法GET查询、POST新增登录注册用、PUT修改、DELETE删除
url数据资源定位符协议://域名端口号/资源路径查询参数查询参数
请求头
作用向服务器描述浏览器的基本信息
格式全是key : value的键值对
要重点记住两个
User-Agent向服务器描述浏览器类型
Content-Type向服务器描述请求体的数据类型 请求体
GET、DELETE没有请求体
PUT、POST有请求体
请求体的数据类型收请求头中Content-Type的值的影响 复习 这个是fiddler抓包抓到的请求报文
1是请求行请求方法是POSTurl中http是协议类型://是协议与域名的分割符/是域名和资源路径的分割符HTTP/1.1是协议版本号。
2-16是请求头其中User-Agent是浏览器的类型Content-Type是请求体的数据类型表单类型
17是空行
18是请求体 (二).HTTP响应
特点服务器发给浏览器客户端
格式响应行、响应头、空行、响应体
响应行
格式协议版本空格状态码空格状态码描述\r\n
协议版本http1.0/ http1.1 / http2.0
状态码
1xx信息向
2xx表成功
3xx重定向
4xx客户端错误。404表示数据资源不存在403表示数据资源拒绝被访问
5xx服务端错误。
状态描述比如200ok404Not Found403Forbidden
响应头
作用向客户端描述服务器的信息
语法k : v键值对
Content-Type向客户端描述响应体的数据类型
响应体
http报文响应大多数都有响应体
数据类型受响应头中的Content-Type值影响常见的类型json/表单类型/图片类型 三.使用postman进行接口测试
postman是接口调试工具
newman插件可以自动生成测试报告
npm -v 检查是否安装了node.js
npm install -g newman 安装newman
newman -v 检查是否安装成功
npm install -g newman-reporter-html 最后一步
(一).基础使用
1.使用postman发送http请求访问京东网站上”搜索“功能 2.使用postman向网易邮箱的登录接口发送一个密码错误的登录请求。 (二).管理测试用例collections (三).导入导出用例 (三).断言
使用postman自带的断言机制判断响应结果与预期是否一致。
1.断言响应状态码Status code is 200 pmpostman的一个实例
test()postman的一个实例方法有两个参数
①“Status code is 200”断言完成后的提示信息可修改。
② function () { pm.response.to.have.status(200);}是匿名函数调用意思是pm的响应状态有一个码值为200。 2.断言响应体是否包含某个字符串Response body: Contains string
pm.test(Body matches string, function () {
pm.expect(pm.response.text()).to.include(string_you_want_to_search);
}); 3.断言响应体是否等于某个字符串Response body: ls equal to a string 4.断言json数据Response body: JSON value check
pm.test(Your test name, function () {
var jsonData pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
分析
var jsonData pm.response.json();定义一个变量jsonData 值为json格式的响应体数据
pm.expect(jsonData.value).to.eql(100);pm预期响应结果中xxx(key)的值为xxx
value可替换为success、code、message、data
to.eql()中的值对应为预期结果true、操作成功”... 5.断言响应头Response headers: Content-Type 四.全局变量和环境变量
全局变量
概念在postman全局唯一且不可以重复的变量。
设置pm.globals.set(var_name, value);
获取
①请求参数页面中获取{{var_name}}用来查询参数、请求头、请求体中
②代码中获取var value pm.globals.get(var_name);
举例
var age_tmp 18;
pm.globals.set(glb_ageage_tmp);
var ret_age pm.globals.get(glb_age)
环境变量
概念某个环境中变量不可重复定义常见的有开发环境、测试环境、生产环境。
设置pm.environment.set(var_name, value);
获取
①请求参数(页面)中获取{{var_name}}
②代码中获取var value pm.environment.get(var_name); 五.postman请求的前置脚本
1.时间戳
概念表示当前系统时间。从1970年1月1日000000-现在所经历的秒数
2.请求前置脚本
postman可以在http请求发送之前会自动执行该脚本中的代码以准备请求发送前的环境和数据。 案例调用百度首页接口传时间戳给服务器
步骤
1.创建“请求前置脚本”用例集和http请求页
2.指定请求方法为GET百度网址http://www.baidu.com
3.在Pre-request Script标签页中写入代码获取时间戳写入到全局变量中
4.点击send按钮使Pre-request Script标签页中的代码被自动执行点击小眼睛图标会发现多出一个全局变量。 5.在URL中借助请求参数使用全局变量。点击发送按钮发送带有时间戳的请求。 6.点击菜单栏中view-ShowPostman Console中查看 六.postman关联
1.介绍postman关联可以借助全局变量或环境变量来解决接口和接口之间的依赖问题。
2.实现步骤
以A接口返回的数据供B接口使用为例
①.组织A接口http请求数据发送A接口的请求
②.将A接口返回的响应数据存到全局/环境变量中
③.组织B接口http发送数据从全局/环境变量中获取A接口返回的数据
3.案例请求查询手机号接口提取结果中返回的城市将城市名给百度搜索接口使用。
①.查询手机号的页面以及urlhttps://api.wetools.com/tool/phoneNumber ②组织A接口http请求数据发送A接口的请求 //获取响应数据
var jsonData pm.response.json()
//获取城市名
var city jsonData.data.detail[所属地区]
//写入全局变量
pm.globals.set(glb_city, city) ③B接口获取到全局变量城市名在百度中进行搜索 4.批量执行用例集 iterations指定迭代次数执行几次
delay用例执行延迟时间
data导入外部数据文件实现“参数化” 七.postman测试报告
步骤
1.先把测试用例集导出
2.在用例集所在目录打开cmd使用newman生成测试报告的完整命令
newman run 测试用例集名.json -e 环境变量文件 -d 数据文件 -r html -- reporter-html-export 测试报告名称.html
ps -e 环境变量文件 -d 数据文件如果没有可省略 ps可以复制路径到postman中
①右键复制路径选择bash ② 导入到postman中