1. Jmeter使用
1.1 接口测试分类
内部接口:被测系统各个子模块之间的接口
外部接口:被测系统调用外部的接口、系统对外提供的接口
接口测试重点:检查接口参数传递的正确性、接口功能的正确性、输出结果的正确性、异常情况的处理、权限控制、分页、调用次数的限制
1.2 接口架构设计
基于SOAP架构。基于XML规范、WebService协议,以接口地址?wad结尾
基于RPC架构。基于dubbo和thrift协议,SpringCloud微服务
基于RestFul架构。基于json规范,http协议。
RestFul规则:
接口地址:http://127.0.0.1/user,get,post,put,delete
http协议:请求头、请求行、请求正文;响应头、响应行、响应正文
1.3 接口测试工具
Jmeter+Ant+git+Jenkins
Postman+Newman+git+Jenkins
1.4 Jmeter目录介绍
backups:备份目录
bin:Jmeter启动脚本
docs:离线帮助文档
extras:存放与第三方的集成构建文件。集成Ant、Jenkins
lib目录:存放jar包
lincensce:许可证文件
1.5 Jmeter常用组件
-
测试计划:起点,所有组件的容器
-
线程组:代表一定数量的用户
-
取样器:向服务器发送请求的最小单元
-
逻辑控制器:结合取样器实现一些复杂逻辑
-
前置处理器:请求前的工作
-
后置处理器;请求后的工作
-
断言:判断请求是否成功
-
定时器:负责请求之间的延迟间隔
-
配置元件:配置信息
-
监听器:负责收集结果
顺序:测试计划>线程组>配置元件>前置处理器>定时器>取样器>后置处理器>断言>监听器
作用域
必须组件:测试计划、线程组、取样器
辅助组件:除了必须组件外
辅助组件作用与父组件、同级组件、同级组件的子组件
1.6 Jmeter执行接口测试
-
拿到api文档
-
编写接口测试用例:正例+反例
反例:
鉴权:空、错误、过期、次数限制
参数:空、类型错误、长度错误、错误码覆盖
其他:黑名单、分页。
-
使用接口工具执行
Jmeter+Ant+Git+Jenkins实现持续集成生成测试报告。通过电子邮件发送
http: 80
https: 443
1.7 Jmeter接口关联
正则表达式实现:查看结果树选择RegExp Tester
一个请求中有多个请求器,使用正则表达式提取返回值,然后传递给下一个url的参数,在查看结果树前添加调试取样器查看结果
JsonPath实现:查看结果树选择JsonPath Tester
$.xx.xx.xx:$表示从根目录开始找
1.8 Jmeter动态参数处理
tools>函数助手对话框
文件上传可以使用java
1.9 Jmeter断言
响应文本:返回的json数据
响应代码:200,404
响应信息:OK
文本文档:返回的json数据以文本的方式判断
忽略状态:当有多个断言时,一个失败另一个成功,结果是成功
字符串:响应内容包含需要匹配的字符串,不支持正则
包含:支持正则
匹配:响应内容等于匹配字符串,支持正则
相等:支持正则
测试模式:测试的内容
1.10 Jmeter接口调试方案
通过察看结果树查看
使用调试取样器
Jmeter结合fiddler实现调试:
http默认配置>高级>代理服务器
1.11 Jmeter参数化处理
csv数据文件配置:第一行是参数,其余行是参数值
1.12 必须带请求头的接口
添加HTTP请求头配置元件
1.13 Jmeter脚本录制
测试计划>添加>非测试元件>代理服务器
1.设置端口和录制的位置
2.设置本机走代理
1.14 Bean Shell组件和语言规则
Beanshell可以用自己的语言写,也可以用java写
BeanShell内置变量和语法:
1. 打印:log.info("xxx"), info.error("xxx"), System.out.println("xxx")(在cmd中显示) 2. vars(只能在当前线程使用):变量,操作Jmeter变量,在用户自定义变量中进行定义,使用vars.get("xxx")获取值,vars.put(key, value)进行定义 3. props(跨线程):存取全局静态变量,props.get("xxx") 4. prov:获取前一个取样器返回的信息,prov.getResponseCode() 5. ctx:上下文变量,ctx.getProperties()
1.15 Jmeter执行数据库操作
1.准备jar包:mysql,oracle
方式一:在测试计划里面引用
方式二:将jar包放入Jmeter的lib目录
2.新建JDBC Connection Configuration并进行配置
3.新建JDBC Request并进行配置获取结果
4.使用BeanShell对结果进行处理(打印等)
1.16 Jmeter非GUI方式运行
1.执行JMX文件命令:jmeter
2.命令行参数:
-n # 非界面方式 -t # 指定位置 -l # 指定生成jtl格式的结果 -e # 生成HTML报告 -o # 指定生成HTML的路径,必须是空文件夹
1.17 使用Jmeter+Ant+Jenkins实现持续集成
1.下载Ant并将bin路径添加到path中
2.需要build.xml文件,并将该文将和jmx文件放到同一个目录
3.配置全局文件jmeter.properties中的output_format为xml
4.输入命令:ant