接口测试学习之旅
Posted 赵jc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试学习之旅相关的知识,希望对你有一定的参考价值。
这里写目录标题
接口测试的重点
检查接口参数传递的正确性,接口功能的正确性,输出结果的正确性以及对各种异常情况的容错处理,权限控制等。
接口测试的分类
- 内部接口:测试被测系统各个子模块之间的接口,或者被测系统提供给内部系统使用的接口
- 外部接口: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 从任意目录开始查找(相对路劲):
.expliresin从任意目录开始查找(相对路劲):…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执行数据库操作
- 1.准备数据库的驱动jar包
方式一:在测试计划里面引用
方式二:放到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报告的文件夹(这文件夹必须空目录)
以上是关于接口测试学习之旅的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?
我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?