Day01 软件测试基础总结
Day02 测试用例知识点总结(上)
Day03 测试用例知识点总结(下)
Day04 禅道-从安装到卸载
Day05 MySql的基础使用
Day06 MySql知识点总结
Day07 MySql知识点再总结与多表查询
Day08 redis的基础知识
Day08 VMware的安装、Linux系统安装和Linux基础命令
Day09 Linux常用命令总结
Day10 Linux环境部署和项目构建
Day11 shell脚本基础知识
Day12 接口和协议
Day13 Postman的使用
Day13 Windows环境下的JDK安装与Tomcat的启动
Day14 jenkins部署
Day15 jenkins的简单使用
Day16 charles的基本使用
Day17 考试
Day18 考试
Day19 Fiddler的简单使用
Day20 Python基础
Day21 python 语句基础
Day22 Python数据类型(上)
Day23 Python数据类型(下)
Day24 Python函数
Day25 Python的文件操作和异常处理
Day26 Python面向对象
Day27 Python的部分算法
Day28 单元测试 unittest
Day29 单元测试 pytest
Day30 接口测试requests
Day31 Web端自动化基础
Day32 Web自动化进阶
Day33 PO模型
Day34 移动端测试(上)
Day35 移动端测试(下)
Day36 移动端自动化(上)
Day37 移动端自动化(下)
Day38 性能测试理论
Day39 JMeter的使用(上)
目录
性能测试的主流测试工具有两种,loadrunner和jmeter。loadrunner也被成为LR是一种工业级标准性能测试负载工具。jmeter则是Apache组织开发的基于JAVA的开源软件。两者对比,LR能支持用户以万为单位,且分析报表详细,支持IP欺骗,但是收费,且体积庞大无法定制功能;而jmeter开源免费,体积小,有丰富发资料与扩展组件,但不支持IP欺骗,分析能力相对于LR欠缺精度,支持用户量较少,但可以使用扩展组件和其他方式弥补缺陷。因此,本篇使用JMeter。
首先配置java环境变量(使用 java -version 验证 )
配置JMeter环境变量 (使用 jmeter 验证)
bin 目录(常用文件介绍)
jmeter.bat:windows下启动文件
jmeter.sh:Linux下启动文件
jmeter.log:Jmeter运行日志文件
jmeter.properties:Jmeter配置文件
/docs目录——Jmeter帮助文档
/lib/ext目录——存放Jmeter依赖的jar包
Options-> Chose Language->Chinese
这种语言修改方式只是当前有效,再次运行依旧是英语,因此需要修改配置文件:
在JMeter的bin目录下,修改jmeter.properties 文件 将language=zh_CN 添加到language=en下方(不需要加#号),保存后就是中文
可以调整界面的颜色
元件:多个类似功能组件的容器(类似于 类)
取样器 | 发送请求 |
逻辑控制器 | 控制语句的执行顺序 |
前置处理器 | 对请求参数进行预处理 |
后置处理器 | 对响应结果进行提取 |
断言 | 检查接口的返回结果是否与预期结果一致 |
定时器 | 设置等待 |
测试片段 | 封装一段代码,供其他脚本调用 |
配置元件 | 测试数据的初始化配置 |
监听器 | 查看Jmeter脚本的运行结果 |
组件:实现独立的某个功能(类似于 方法)
元件的作用域:是靠测试计划的树形结构中元件的父子关系来确定的
所有组件都是以取样器为核心来运行的。组件添加的位置不同,生效的取样器也不同
作用域的原则:
取样器:核心,不和其他元件互相作用,没有作用域
逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
其他元件:
- 如果是某个取样器的子节点,则该元件只对其父节点起作用
- 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)
元件的执行顺序:
同一作用域下的不同元件:配置元件,前置处理器,定时器,取样器,后置处理器,断言,监听器
同一作用域下相同的元件:从上到下的顺序依次执行
作用:线程组就是控制jmeter用于执行测试的一组用户
位置:右键点击‘测试计划’-->添加-->线程(用户)-->线程组
特点:
- 模拟多人操作
- 线程组可以添加多个,多个线程组可以并行或者串行
- 取样器和逻辑控制器必须依赖线程组才能使用
- 线程组下可以添加其他元组下组件
分类:
普通线程组,常用的线程组,可以看做是一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
setup线程组:一种特殊类型的线程组,可用于执行预测试操作
teardown线程组:一种特殊类型的线程组,可用于执行测试后工作
作用:向服务器发送HTTP和HTTPS请求
位置:进入线程组-->右键-->添加-->取样器-->HTTP请求
作用:监听器可以动态的监控JMeter测试执行的过程,实时查看测试结果
位置:在线程组->添加->监听器->聚合报告/察看结果树
参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法。
本质:使用参数的方式替代脚本中的固定的测试数据
实现方式:文件定义的方式/数据库的方式/定义变量
作用:定义全局变量
位置:测试计划-->线程组-->配置元件-->用户定义的变量
使用${变量名}进行引用
作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
位置:测试计划-->线程组-->前置处理器-->用户参数
作用:让不同的用户在多次循环时,可以取到不同的值
位置:线程组>>配置原件>>CSV数据文件设置
上面使用的是txt文本格式的数据, csv格式与上面的步骤相同
作用:计数函数,一般做执行次数统计使用
位置:工具>>函数助手对话框>>_counter
位置:工具>>函数助手对话框>>_CsvRead
位置:工具>>函数助手对话框>>randomstring
判断预期结果和实际结果是否一致
jmeter在请求的返回层里面有个自动判断机制(响应状态码)
但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性
常见断言:
响应断言/json断言/xpath断言/持续断言
作用:对http请求的任意格式的响应结果进行判断
位置:测试计划-->线程组-->http请求-->(右键添加)断言-->响应断言
断言通过测试就直接通过,没有回馈信息
响应断言只是识别文本内容,适应大部分情况
作用:对http请求的json的响应结果进行判断
位置:测试计划-->线程组-->http请求-->(右键添加)断言-->json断言
定义:xpath基于XML的树状结构,提供在数据结构树中寻找节点的能力
位置:测试计划-->线程组-->http请求-->(右键添加)断言-->xpath断言
区别:响应断言(适用任何的返回类型),json断言(只适用于json的返回类型),Xpath Assertion断言针对返回信息为Xpath的数据类型进行断言
作用:检查http请求的响应时间是否超出要求范围
位置:测试计划-->线程组-->http请求-->(右键添加)断言-->持续时间断言
当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用关联处理
常见关联:
正则表达式提取器 --提取任意格式的数据
json提取器 --提取html格式的数据
xpath提取器 --提取json格式的数据
正则表达式:就是一个公式,或者是一套规则,使用这套规则可以从任意字符串中提取想要的数据内容
公式格式:左边界(匹配符号)有边界:可以提取出想要获取的数据内容
.:是通配符,可以代表任意字符(除换行回车)
*:代表前面的字符出现0或者多次
.*匹配规则:找到左边界值后,往右查找有边界,找到最后面的有边界,中间的所有的数据都被记录下来
?:代表非贪婪匹配,找到左边界后,往右查找匹配走边界,只要右匹配的右边界就停止继续查找;再次查找
左边界的右边界
公式格式:左边界(.*?)有边界
(.*?)
百度一下,你就知道
通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可
每一组数据都可以由一个或者多个值
json提取器 :就是json表达式提取数据,从返回格式是json中提取想要的数据内容
位置:线程组>>添加>>后置处理器>>json提取器
json提取方式与正则表达式相同,不同之处在下面:
xpath提取器 :针对于HTML格式的响应结果数据进行提取
位置:线程组>>添加>>后置处理器>>xpath提取器
用于解决不同线程组之间的关联
__setProperty函数:将值保存成jmeter属性
__property函数:在其他线程组中使用property函数读取属性