接口测试的重点
检查接口参数传递的正确性,接口功能的正确性,输出结果的正确性以及对各种异常情况的容错处理,权限控制等。
接口测试的分类
- 内部接口:测试被测系统各个子模块之间的接口,或者被测系统提供给内部系统使用的接口
- 外部接口:1.被测系统调用外部的接口 2.系统对外提供的接口
一级目录
backups :脚本备份目录,格式JMXbin目录 :存放jmeter的启动脚本,配置文件,模板文件(jmeter.bat 启动jmeter jmeter.properties 核心配置文件 )- docs:离线帮助文档
extras :存放与第三方的集成构建文件,集成Ant,Jenkins- lib目录:存放jar包
- license:许可证文件
Jmeter常用组件
1.测试计划:所有组件的容器(起点) 2.线程组:代表一定数量的用户 3.取样器:向服务器发送请求的最小单元 4.逻辑控制器:结合取样器实现一些复杂的逻辑 5.前置处理器:在请求之前的工作 6.后置处理器:在请求之后工作 7.断言:用于判断请求是否成功 8.定时器:负责在请求之间的延迟间隔,固定,高斯,随机 9.配置文件:配置信息 10.监听器:负责收集结果
执行顺序:
- 测试计划–>线程组–>配置元件–>前置处理器–>定时器–>取样器(请求)–>后置处理器–>断言–>监听器
作用域:
- 必须组件:测试计划,线程组,取样器
- 辅助组件:逻辑控制器、前置处理器、后置处理器、断言、定时器、配置文件、监听器(除必须组件外)
作用于父组件,同级组件,以及同级组件下的所有组件
Jmeter执行接口测试
1.拿到api文档(Fiddler),熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码 2.编写接口测试用例 测试思路:
- 正例:输入正常入参,查看接口成功返回
- 反例:鉴权:空,错误,鉴权过期,健全次数限制 参数:空,类型错误,长度错误,错误码的覆盖 其他:黑名单,分页
3.执行接口测试工具执行 4.Jmeter+Ant+ins实现持续集成输出接口测试报告
接口关联
1.使用正则表达式实现接口关联(如果说一个请求里面有多次请求服务器)
2.使用Jsonpath表达式实现接口关联(只能作用于返回值为json的值) 从根目录开始查找(绝对路径):
.
e
x
p
l
i
r
e
s
i
n
从
任
意
目
录
开
始
查
找
(
相
对
路
劲
)
:
.explires_in 从任意目录开始查找(相对路劲):
.expliresi?n从任意目录开始查找(相对路劲):…explires_in
实现接口业务的闭环
增,改,删,查
Jmeter动态参数处理
随机数字 随机字符串
Jmeter接口测试断言
相应版本 :返回的json数据 相应代码:200 404 相应信息:OK 响应头 请求头 URL 文档(文本):返回的JSON数据以文本的方式去判断 忽略状态:当有多个断言时。如果有一个断言失败了,另一个成功了,那么结果是成功了 请求数据
- 字符串:相应内容包含需要匹配的字符串,大小写敏感,不支持正则
- 包含:相应内容包含需要匹配的字符串,大小写敏感,支持正则
- 匹配:相应内容完全等于需要匹配的字符串,大小写敏感,支持正则
- 相等:相应内容完全等于需要匹配的字符串,大小写敏感,不支持正则
Jmeter接口测试调试方案
通过查看结果树里面的请求信息和相应信息 使用调试取样器 jmeter结合fiddler实现调试
csv参数化的处理
必须带请求头的接口
使用Jmeter自带的http代码服务器实现(把jmeter作为代理)
Jmeter中的Bean Shell组件和语法规则
BeanShell是一种完全符合java语法规则的脚本语言,同时他还有自己的语法规则
- Jmeter有哪些BeanShell
1.前置处理器:BeanShell预处理器 2.定时器:BeanShell 3.采样器:BeanShell 4.后置处理器:BeanShell 5.断言:BeanShell 6.监听器:BeanShell - BeanShell的内置的变量的变量和语法规则
1、log打印日志 - log.info()
- log.error()
2.vars表示:JmeterVariables,操作Jmeter变量(只能在当前线程组使用) - 用户定义的变量
- 正则表达式,JSON提取器
- 定义变量
- 获取变量的值
log.info(var.get()) vais.put(“www”,“yy”) - 3.props用于存取Jmeter的全局静态变量(可以跨线程组)
获取全局变量 log.info(props.get()) props.put(“aaa”,“bbb”) - 4.prov获取到前面一个取样器返回的信息
获取到前面取样器的值 log.info(prev.getResponseCode()) log.info(prev.getResponseDataAsString()) 5.ctx切换上下文 System.out.println(ctx.getProperties()
Jmeter执行数据库操作
方式一:在测试计划里面引用 方式二:放到jmeter的lib目录下
- 2.创建一个:JDBC connection configuration
- 3.新建一个: JDBC request
Jmeter的非GUI(界面)方式运行
执行JMX文件的命令:jmeter 命令行参数: -n -t :-n非界面方式运行 -t指定jmx文件的位置 -l: -l指定生成的jtl格式的结果 -e -o: -e生成html报告, -o指定html报告的文件夹(这文件夹必须空目录)
|