一、接口测试分类
内部接口:测试被测系统各个子模块之间的接口,或者被测系统提供给内部系统使用的接口
外部接口:
- 被测系统调用外部的接口。
- 系统对外提供的接口。
接口测试的重点:检查接口参数传递的正确性,接口功能的正确性,输出结果的正确性,以及对各种异常情况的容错处理,以及权限控制,分页,调用次数的限制。
二、目前接口架构设计
- 基于SOAP架构。基于XML规范。基于WebService协议。特点:接口地址,wsdl(webservice描述性语言)结尾
- 基于RPC架构。基于dubbo协议,thrift协议。SpringCloud微服务。
- 基于RestFull架构。基于json规范。基于http协议。
RestFull规则:
接口地址:http://127.0.0.1/user,get(查询用户),post(新增用户),put(修改用户),delete(删除用户)
http协议详解:
请求:请求行,请求头,请求正文
Json数据格式:只有两种数据类型
键值对:(key:value)
数组:[array1,array2]
三、市面上的接口测试工具
- Jmeter+Ant+Git+Jenkins
- Postman+Newman+Git+Jenkins
- soapui,apipost.fiddler,chariles
四、Jmeter简介,安装,环境变量的信息
基于java语言压力测试工具,可以做接口测试,也可以做性能测试。
安装:JDK1.8以上,配置环境变量
五、Jmeter目录介绍
backups:脚本备份目录,格式 JMX
bin目录:存放Jmeter的启动脚本,配置文件。模块文件。
Jmeter.bat:启动Jmeter
Jmeter.properties:核心配置文件
docs:离线帮助文档
extras:存放与第三方的集成构建文件,集成Ant,Jenkins
lib目录:存放jar包
licenses:许可证文件。
六、Jmeter常用组件
1.测试计划:起点。所有组件的容器
2.线程组:代表一定数量的用户
3.取样器:向服务器发送请求的最小单元
4.逻辑控制器:结合取样器实现一些复杂的逻辑。
5.前置处理器:在请求之前的工作。
6.后置处理器:在请求之后的工作。
7.断言:用于判断请求是否成功。
8.定时器:负责在请求之间的延迟间隔,固定,高斯,随机
9.配置元件:配置信息
10.监听器:负责收集结果
顺序:
测试计划》线程组》配置元件》前置处理器》定时器》取样器》后置处理器》断言》监听器
作用域:非常重要
必须组件:测试计划,线程组,取样器
辅助组件:除了必须组件外
辅助组件作用于父组件,同级组件,以及同级组件下的所有子组件。
七、Jmeter执行接口测试
- 拿到api接口文档(Fiddler)、熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码。
- 编写接口测试用例。
测试思路:
正例:输入正常入参,查看接口成功返回。
反例:
鉴权:空,错误,鉴权过期,鉴权次数限制......
参数:空,类型错误,长度限制,错误码的覆盖。
其他:黑名单,分页。
- 使用接口测试工具执行。
- Jmeter+Ant+Git+Jenkins实现持续击沉输出接口测试报告,通过电子邮件发送。
八、接口测试实战
顺序:
测试计划》线程组》配置元件》前置处理器》定时器》取样器》后置处理器》断言》监听器
配置元件
10000,高峰期,10分钟内1000个用户,1分钟100个用户,1秒=100/60=5/3
HTTP Cookie管理器:第一次用set Cookie发给客户端。第二次通过客户端发送给服务器
HTTP 请求默认值:协议、ip、HTTP协议(80端口) 、HTTP协议(443端口)
用户定义的变量
取样器
HTTP请求:100.200.30X重定向,404页面没找到,505服务器错误
自动重定向:选300,会自动重定向到新的页面,只会跳转到最终的页面,最后的结果
跟随重定向:把中间每一步的路径记录下来
对post请求使用multipart/from-data:发送post请求时,使用multipart/from-data一般情况下用于文件上传,默认不选中
与浏览器兼容的头: 没什么作用
参数: 用于上传键值对的
消息传递:用于传json的
鉴权码
1.通过接口获取,appid,secret
2.登录之后自动生成,username,password
cookie和token是很有可能同时存在鉴权
cookie,session,
察看结果树
文件名:查找,以文件的方式查看结果
取样器结果:线程组的名字、示例开启的时间、加载的时间、连接时间、网关时间、传输的字节数、发送的字节数、请求头的字节数、body的字节数、错误、数据类型、
请求:请求头、请求内容(请求方式、请求路径、请求参数)
响应数据:可以以json的形式查看结果
编辑标签接口
九、接口关联
1.使用正则表达式实现接口关联
如果说一个请求里面有多次请求服务器。
2.使用Jsonpath表达式实现接口关联
从根目录开始找(绝对路径):$.expires_in
从任意目录开始找(相对路径): $.expires_in
json提取器:只能作用于返回值为json的
十、实现接口业务闭环
增、删、改、查。
十一、Jmeter动态参数设置
随机数字:${__Random(100000,999999,random_int)}
随机字符串: ${__RandomString(6,abcdefg1234567890hijklmn,random_str)}
十二、Jmeter接口测试断言
响应成本:返回的json数据
响应代码:200,404
响应信息:OK
响应头:
请求头
URL
文档(文本):返回的json数据(文本的方式去判断)
忽略状态:当有多个断言时,如果有一个断言失败了,另一个成功了,那么结果是成功。
请求数据
字符串:响应内容包含需要匹配的字符串,大小写敏感,不支持正则
包括:响应内容包含需要匹配的字符串,大小写敏感,支持正则
匹配:响应内容完全等于需要匹配的字符串,大小写敏感,支持正则
相等:响应内容完全等于需要匹配的字符串,大小写敏感,不支持正则
十二、Jmeter接口调试方案
1.通过【察看结果树】里面的请求信息和响应信息。
2.使用【调试取样器】
3.Jmeter结合fiddler
在没有接口文档,只能通过抓包去获取接口信息的时候使用。
1.badbody(淘汰)
2.使用Jmeter自带的http代码服务器实现。
版权归原作者 菜鸟教程*…* 所有, 如有侵权,请联系我们删除。