学习目标
1.Jmeter环境搭建
2.Jmeter元件介绍
3.Jmeter的作用域
4.JMeter执行顺序
5.使用JMeter录制并回放脚本
我的环境:win7 64位 JDK:jdk-8u191-windows-i586
JMeter:apache-jmeter-5.0
JMeter环境搭建
安装java依赖环境
JDK下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
配置java环境地址:https://jingyan.baidu.com/article/9f63fb91d87fb0c8400f0e93.html
校验
cmd命令 --- java -version
运行
jmeter官网:http://jmeter.apache.org/download_jmeter.cgi
进入...\apache-jmeter-3.2\bin\解压目录,双击ApacheJMeter.jar启动(注:一定要配置Java环境)
JMeter中组件中的常见的元件介绍
测试计划与线程组不属于元件
取样器
取样器(Sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter原生支持多种不同的sampler ,如 HTTP Request Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。
逻辑控制器
逻辑控制器,包括两类无件,一类是用于控制测试计划(test plan) 中 取样器(sampler) 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。。
配置元件
配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制元件则可以修改Sampler的默认数据。(例如,HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的 cookie 进行管理)
监听器
这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。 图形结果、察看结果树、聚合报告等都是我们经常用到的元件。
定时器
定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
前置处理器
用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修饰符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的SessionID
后置处理器
用于对 Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath值获得的数据
断言
断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
JMeter的作用域
JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(配置元件 、定时器 、后置处理器、断言、监听器、)需要与取样器(sampler)等元件交互。我们从各个元件的层次结构就可以判断每个元件的作用域。
采样器
采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。
逻辑控制器
逻辑控制器可以改变其子测试元件的请求执行顺序。
监听器
监听器可以在测试的任何地方添加,包括直接放在测试计划之下。它们仅收集测试树中相同或者更低级别测试元件的数据。
定时器
定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
断言
断言会影响作用域内的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项
配置元件
配置元件仅对其所在的测试树分支有效。例如,假设测试人员在一个简单逻辑控制器中放置了一个HTTP Cookie管理器,那么该HTTP Cookie管理器只对放置在简单逻辑控制器内的其他逻辑控制器生效。
前置处理器
前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。
后置处理器
如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。
Jmeter的执行顺序
配置元件(config elements ) --- 前置处理器(Per-processors) --- 定时器(timers ) --- 取样器(Sampler) --- 后置处理器(Post-processors) --- 断言 (Assertions)--- 监听器(Listeners)
注意:
前置处理器、后置处理器和断言等元件只能对 取样器作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。
一个断言在测试树中是分等级的。如果它的父元件是请求,它就被应用于那个请求。如果它的父元件是控制器,它就影响所有那个控制器下的所有请求。
使用JMeter创建一个简单的性能测试
JMeter录制脚本并回放
1.新建线程组
新建线程组以及重要的属性解释
2.新建HTTP Cookie管理器
3.新建HTTP代理服务器
netstat -an使用这个命令查看已用的端口号,这里填写的端口号必须是唯一的
包含和排除模式
包含模式
包含模式可以写为:.*服务器地址.* 例如:".*192\.168\.1\.100.*"
排除模式
.*\.js.*|.*\.css.*|.*\.jpg.*|.*\.jpeg.*|.*\.gif.*|.*\.png.*|.*\.bmp.*
4.设置代理服务器
如果被测的客户端是PC机,如图下设置代理
线程组地址:该处填写Jmeter代理服务器所在的机器的IP。(如果jmeter代理服务器和客户端在同一台电脑上,则该处可以填写localhost。)
端口:该处填写Jmeter代理服务器所配置的端口。
win7 设置代理
设置浏览器代理5.执行操作
如果客户端与被测服务器是同一台电脑,访问时不要使用localhost,应该使用ip地址,否则代理不生效
6.关闭连接
JMeter停止代理服务器
还原客户端的代理设置,否则客户端无法访问外网。
我碰见的问题
1.问题如下:
解决:
蠢!!!!是JMeter5.0的新特性
录制特性增加了一个始终在顶部的弹出框,当你在浏览器中操作时,可以命名你的事务。
2.响应数据乱码
解决:
1:指定请求节点下,新建后置控制器"BeanShell PostProcessor"
2:其脚本框中输入:prev.setDataEncoding("UTF-8");
3:保存
网友评论