学习目标
能知道JMeter的优缺点
能掌握JMeter的安装流程
能掌握JMeter线程组的设置
能掌握JMeter参数化的使用
能掌握JMeter直连数据库操作
能掌握JMeter的断言
一、什么是JMeter?
JMeter是Apache组织使用Java 开发的一款测试工具:
1、可以用于对服务器、网络或对象模拟巨大的负载;(高并发)
2、通过创建带有断言的脚本来验证程序是否能返回期望的结果。
二、JMeter的优缺点
优点:1.开源、免费;2、跨平台;3、支持多协议;4、小巧;5、功能强大。
缺点:1、不支持IP欺骗;2、使用JMeter无法验证J S程序,也无法验证页面Ul,所以要和Selenium配合来完成Web2.0应用的测试。
三 、JMeter安装
一、JMeter 是使用Java 编写的,必须安装Java 环境
1、JDK: Java SE Development Kit (java 开发工具包,为JAVA程序开发提供环境支持)
2、JRE: Java Runtime Environment (java 运行环境,为JAVA程序运行提供环境支持)
二、下载并安装JMeter
下载地址:https://jmeter.apache.org/download_jmeter.cgi
安装:直接解压缩即可
第三步、修改编码集
会有中文乱码问题,修改D:\apache-jmeter-5.6.2\apache-jmeter-5.6.2\binjmeter.properties文件中的sampleresult.default.encoding=UTF-8
第四步、打开JMeter
点击ApacheJMeter.jar或jmeter.bat
四、 JMeter测试使用的项目介绍
五、JMeter简介
以测试该接口为例:
首先要有个测试计划
测试计划右键点击添加-线程-线程组
线程组右键点击添加-取样器-Http请求
想查看结果,右键点击测试计划-添加-监听器-查看结果树,当jmeter执行完接口后会获取结果
六、JMeter线程组
进程:正在运行的程序
线程:是进程中的执行线索
线程组: 进程中有许多线程,为了方便管理,可以对线程按照性质分组,分组的结果就是线程
PS: 三者关系,一个进程可以包含多个线程组,一个线程组可以包含多个线程
JMeter线程组中的线程默认是并发执行的,如果要顺序执行,需要勾选如下:
setUp线程组:最优先执行的线程组 。
tearDown线程组:最后执行的线程组。
如图所示:
线程组常用的设置属性
七、HTTP请求默认值
把http请求中的重复值添加到HTTP请求默认值,然后可以把http请求中对应的重复值删除
八、HTTP信息头管理器
新增修改实现时,提交的数据是JSON 格式的,需声明提交的数据的内容类型
九、参数化
当提交的数据量较大,怎么提交?每测试一次就修改一次吗?
定义:动态的获取、设置或生成数据,是一种由程序驱动代替人工驱动的数据设计方案,提高脚本的编写效率以及编写质量
以下四种方式实现参数化:
1、用户定义的变量
2、CSV 数据文件设置
3、用户参数
4、函数
9.1、用户定义的变量
当需要调用时,使用 ${变量名}
9.2、 CSV 数据文件设置
CSV:逗号分隔值,是一种简洁且常见的数据存储格式,存储语法如下图所示
实现步骤
1、使用CSV文件存储测试数据
2、编写被复用的学院新增脚本模板注意2:编码集使用UTF-8(无BOM格式)
3、关联脚本与数据(将文件数据导入脚本)
使用CSV文件存储测试数据:
配置csv的地址
关联数据 ${变量名}
勾选线程组永远循环,因为不清楚csv有多少条数据
数据库中的结果
9.3、用户参数
实现步骤:
1、编写被复用的学院新增脚本模板
2、使用用户参数存储测试数据
3、将数据导入脚本模板
4、设置执行次数
添加变量即添加数据库中的一个字段,添加用户即添加几条数据
关联数据 ${变量名}
结果:
9.4、函数
常见函数
_counter:计数器函数。TRUE(每个用户都有自己的计数器) FALSE (所有用户共用一个计数器)
_Random:随机数函数。参数1: 取值范围最小值(包含);参数2:取值范围最大值(包含)
_time:获取当前时间的函数。无参:获取的是距离1970/01/01 00:00:00的毫秒值;参数1:yyyyMM_dd HH:mm:ss 格式化成 年\月_日 时:分:秒 格式
十、直连数据库
添加以下jar包后,就可以在JMeter直连数据库
线程组中添加的请求就不是HTTP请求,而是JDBC Request,同时需要设置数据库连接池。
十一、断言
断言:让程序代替人工判断响应结果是否符合预期
分类:
响应断言=断言状态码和响应体
大小断言 =判断响应内容的字节长度
断言持续时间=判断响应时间
步骤:
1、按照之前的实现编写测试脚本
2、为被判断的取样器添加断言组件
3、直接运行查看结果断言通过: 无提示
断言失败:给出错误