目录
一、接口测试
1、简介:
接口测试是测试系统组件接口之间的一种测试。主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口。
2、分类:
一般分成四种:内接口(client-server)、对外服务接口(client-server)、数据库接口(server1-server2)、mock接口(server-database)。
测试外部接口:测试被测系统与外部系统之间的接口(一般测试用例只写正例)。
测试内部接口:
1)内部接口只提供内部系统使用(一般测试用例只写正例)
2)内部接口提供外部系统使用(测试用例需要写的全面,正例,各种异常场景,权限控制等)
3、测试流程和测试用例
1)拿到接口api文档(一般会得到接口文档,如果没有可以通过抓包工具获得)熟悉接口业务、鉴权方式、入参、错误码、返回参数
2)编写接口用例及评审
思路:
正例:输入正常入参,接口能返回数据
反例:
a.鉴权反例:鉴权码为空、鉴权码错误、鉴权码过期、失效等等
b.参数反例:参数为空、类型异常、长度异常
c.错误码覆盖:根据具体业务而定
d.其他:接口黑名单、调用次数限制、分页场景
3)使用接口测试工具postman执行接口测试
4)Postman+Newman+Jenkins实现持续集成,输出测试报告,发送邮件。
4、postman安装
到官网安装-注册登陆。
Download Postman | Get Started for Free
5、基本界面
Home主页
Workspaces工作空间
1)collection集合 项目集合
2)Apis api文档
3)Environment 环境变量,全局变量
4)Mock server 虚拟服务器
5)Monitor 监听器
6、项目流程
1)首先在collection,填写项目名称
2)右键创建请求 Add requests
请求页签:
params:get请求传参
authorization:鉴权
headers:请求头
Body:post请求传参
none:无参数
form-data:既可以传键值也可以文件
x-www-form-urlencoded:只能传键值对参数
raw:json,text,xmlm,html,javascript
binary:把文件以二进制传参
pre-quest script:请求之前的脚本
Tests:请求之后的断言
cookie:用于管理cookie信息
响应页签:
Body:接口返回数据
pretty:以json、html、xml、等不同方式查看返回数据
raw:以文本方式查看
preview:以网页的方式查看
cookies:响应cookie信息
headers:响应头
Test Results:断言的结果
右边👉200(状态码)、OK(状态信息)、XXX(相应时间)、XXXB(响应字节数)、Save response(保存响应)
7、环境变量和全局变量
环境变量:环境变量就是全局变量
全局变量:全局变量可以再任何接口访问的变量
获取环境变量和全局变量的方式{{变量名}}
8、接口关联
json提取器实现接口关联
在Tests中(在第一个接口)
var result=json.parse(responseBody);#转换成对象
pm.globals.set("参数",result.键值);#设置为全局变量
{{参数}}在第二个借口提取
使用正则表达式提取器实现接口关联
var result=response Body.match(new RegExp(‘把整个左右边界复制下来,需要的地方改成正则’));
pm.globals.set(“参数”,result[1]);
9、postman内置动态参数以及自定义动态参数
内置动态参数
{{timestamp}}:生成当前时间的时间戳
{{randomint}}:生成一个0-1000的随机数
{{$guid}}:生成速记guid字符串
自定义动态参数(pre-request script里面写(请求之前的脚本))
自定义动态参数
var times=data.now()
pm.globals.set("参数",times);#全局变量
10、文件上传
首先在setting里面,允许打开工作路径
body中form_data选择file,直接在目录下选择要上传的文件
11、断言
status code:code is 200
response body:contains string:包含指定字符串
response body:json value check:包含json值
response body:is equal to a string:等于一个字符串
response headers:content-type:是否包含响应头content-type
response time is less than 200ms:请求少于200ms
断言的结果在Test results中查看
状态码断言:状态码
业务断言:包含某个字符串
在断言中获取自定义参数的方式
1)pm.globals.get("参数名")
2)globals.参数名
3)globals(参数名)
在断言中获取文件的方式
data.对象名
全局断言:
项目...下拉edit中
在test中添加响应码200断言
12、批量运行测试用例
项目。。。选择Run collections
右侧的页签:
iteration 1 迭代次数
Delay 0 延迟
Run(运行)
13、必须带请求头的接口
需要在headers中添加请求头(不添加无法得到正确响应)
常见的请求头:
Host:请求主机地址
connection:连接方式
Accept:客户端收到的请求格式
X-Requested-With:异步请求
content-type:请求内容格式
user-agent:客户端的用户类型
cookie:cookie信息
referer:来源
14、postman接口mock服务器
mock(模拟)
一般用于后端端口没开发完,前端业务需调用后段接口
mock server创建完会自动生成环境变量和collections
前端需要什么数据,在default的body中写什么数据
15、cookie鉴权
原理:
当客户端第一次访问服务器,那么服务器就会生成cookie信息,并且在响应头的set-cookie里面把生成的cookie信息发送给客户端
当第二次访问服务器的时候,就会在请求头的cookie带上cookie信息,从而实现鉴权
分类:
会话cookie:保存在内存,当浏览器关闭之后自动清楚cookie
持久cookie:保存在硬盘,当浏览器关闭中后不会自动清除cookie,只有当失效时间到了才会自动清除
16、postman加密和解密
目前市面上的加密方式:
对称式加密:DES、AES、Base65加密算法
非对称式加密:双钥加密、RSA加密算法
不考虑解密:MD5,SHA1.SHA3
postman的MD5加密方法
CryptoJs.MD5(“”).tostring().toUpperCase
17、Newman
专门为postman而生,可以让postman脚本通过非gui(命令行)的方式
运行命令:Newman Run
常用参数:
-e等同于--environment:后面跟环境变量文件
-g等同于--globals:后面跟全局变量文件
-n等同于--iteration-count:设置迭代次数 postman参数化迭代测试
-d等同于--iteration-data:指定用于迭代的数据源文件
-r等同于--reporters:后面跟数据结果,可以跟cli、html、json等
cli:直接在命令行打印结果
html:将结果生成为html文件,指定生成到具体目录需要配合--reporter-html-export 文件名使用
json:将结果生成为json文件,指定生成到具体目录需要配合--reporter-json-export 文件名使用
执行命令:Newman run testcase.json -e environment.json -g globals.json -r cli,json,html --reporter-html-export report.html
18、postman+newman+Jenkins
1)新建项目
2)设置自定义空间
3)执行window的批处理命令(execute windows batch command)
4)执行系统的groovy脚本(保持样式不丢失(execute system groovy script))
5)生成html报告集成到Jenkins(Publish html reports)
本文详细介绍了Postman的使用,从接口测试的基础概念、分类,到Postman的安装、基本界面、环境变量、接口关联、断言、批量运行、文件上传、Mock服务器和Cookie鉴权等关键功能。此外,还探讨了Postman的加密解密、Newman命令行工具以及与Jenkins的集成应用。

被折叠的 条评论
为什么被折叠?



