Jmeter功能概要
JDK常用文件目录介绍
Bin目录:存放可执行文件和配置文件
Docs目录:是Jmeter的API文档,用于开发扩展组件
printable_docs目录:用户帮助手册
lib目录:存放JMeter依赖的jar包和用户扩展所依赖的Jar包
修改默认配置——Jmeter界面的汉化
临时性:
启动Jmeter->选择菜单“option"->Choose language->Chinese(Simplified)
永久性——修改配置文件:
- 找到Jmeter安装目录下的bin目录
- 打开jmeter.properties文件,把第37行修改为”language=zh_CN"
- 重启Jmeter即可。
修改默认配置——修改主题
Jmeter默认主题是黑色的,可以通过以下步骤修改:
- 启动Jmeter->选择菜单“选项”->外观->windows(选择自己喜欢的主题即可)
Jmeter元件和组件的介绍
元件的基本介绍
元件:多个类似功能组件的容器(类似于类)
组件的基本介绍
组件:实现独立的某个功能(类似于方法)
例如:取样器的组件
Jmeter元件作用域和执行顺序
元件的作用域
元件的作用域:是靠测试计划的树形结构中元件的父子关系来确定的。
提示:所有的组件都是以取样器为核心来运行的。组件添加的位置不同,生效的取样器也不同。
作用域的原则:
- 取样器:核心,不和其他元件相互作用,没有作用域
- 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用。
- 其他元件:
- 如果是某个取样器的子节点,则该元件只对其父节点起作用。
- 如果其父节点不是取样器,则其作用域是该 元件父节点下的其他所有后代节点(包括子节点、子节点的子节点等。)
例:固定定时器3是HTTP请求3的子节点,则该元件只对HTTP请求3起作用
固定定时器1的父节点是线程组 ,其作用域是HTTP请求1 HTTP请求2 HTTP请求3
固定定时器2的父节点是如果(If)控制器,其作用域是HTTP请求2
元件的执行顺序
同一个作用域下不同类型元件:
-
配置元件(config elements)
-
前置处理程序(Per-processors)
-
定时器(times)
-
取样器(Sampler)
-
后置处理程序(Post-processors)
-
断言(Assertions)
-
监听器(Listeners)
同一个作用域下多个相同类型元件:
- 按照在测试计划中从上到下的顺序依次执行。
案例:执行顺序
定时器1-HTTP请求1-定时器1-定时器2-HTTP请求2-定时器1-定时器3–HTTP请求3
Jmeter使用示例
Jmeter第一个案例
需求:使用Jmeter访问百度首页接口,并查看请求和响应信息
步骤:
- 启动Jmeter
- 在“测试计划”下添加“线程组”
- 在“线程组”下添加“HTTP请求“取样器
- 填写”HTTP请求”的相关请求数据
- 在”线程组“下添加”查看结果树“监听器
- 点击”启动“按钮运行,并查看结果
线程组
作用:线程组就是控制JMeter用于执行测试的一组用户
位置:右键点击”测试计划“->添加->线程(用户)->线程组
特点:
- 模拟多人操作
- 线程组可以添加多个,多个线程组可以并行或串行
- 取样器(请求)和逻辑控制器必须依赖线程组才能使用
- 线程组下可以添加其他元件下组件
线程组分类
-
线程组
普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户。
-
SetUp线程组
一种特殊类型的线程组,可用于执行预测试操作
- TearDown线程组
一种特殊类型的线程组,可用于执行测试后工作
线程组参数详解:
练习:编写JMeter脚本,访问百度
要求:
- 模拟10个用户并行执行;
- 模拟10个用户5s内启动完成;
- 模拟2个用户各循环3次;
- 模拟2个用户运行30s;
- 模拟2个用户等待10s后开始执行。
案例分析:
使用1个线程组,添加HTTP请求(百度)
- 配置线程数为2,循环次数为3时,运行观察结果
- 配置线程数为3,循环次数为2时,运行观察结果,对比是否有不同
相同点:从请求数量来说,是完全相同的
不同点:场景不同
- 线程数:代表用户数,即性能测试时的负载量(线程数为2比线程数为3对应的负载量小)
- 循环次数:代表时间,即性能测试时的运行时间(循环次数3比循环次数2对应的时间长)
HTTP请求
作用:向服务器发送http及https请求
位置:选择线程组->右键->添加->取样器->HTTP请求
参数:
案例一(使用HTTP请求路径来传递get请求参数)
(1)使用1个线程组,添加HTTP请求(百度),路径为/S
- 使用HTTP协议,GET请求方法,路径中添加参数为:wd=test,运行观察结果
案例二(使用参数列表来传递get请求的参数)
- 使用HTTPS协议,GET请求方法,路径中添加参数为: wd = test,运行观察结果
案例三(使用参数列表来传递POST请求的form格式参数)
- 使用HTTPS协议,POST请求方法,消息体数据中添加参数为: wd = test,运行观察结果
案例四:
- 使用HTTP协议,POST请求方法,消息体数据中添加参数为: wd = test,运行观察结果
查看结果树
案例1:查看结果树种的HTTP请求种,有多个子请求的HTTP请求
原因分析:
- 第一个HTTP请求中,URL错误,导致服务器产生了重定向,提供了新的URL路径
- JMeter会自动发送第二个HTTP请求(使用第一个HTTP请求中返回的URL路径)
- 点击最外层HTTP请求时,显示的内容与最后一个HTTP请求的请求和响应数据一致
案例2:HTTP响应数据中存在乱码,需要修改取样器结果的编码格式