jmeter笔记7

一、脚本录制(Jmeter):

Jmeter 脚本(.jmx)为 xml 格式,树形结构,由元件组成,使用“取样器”产生请求。

在“工作台”添加“HTTP 代理服务器”

端口:

代理服务器的端口,默认 8080,可自行修改,但不要与其它应用端口冲突

目标控制器:录制的脚本存放的位置,可选择项为测试计划中的线程组

分组:

对请求进行分组。“ 分组”的概念是将一批请求汇总分组,可以把 url 请求理解为组。

“不对样本分组”: 所有请求全部罗列

“在组间添加分隔”: 加入一个虚拟的以分割线命名的动作,运行同“不对样本分组”,

无实际意义

“每个组放入一个新的控制器”: 执行时按控制器给输出结果

“只存储每个组的第一个样本”: 对于一次 url 请求,实际很多次 http 请求的情况,这

个选项很好用,因为我们常常是不关心后面的那些请求的。

记录 HTTP 信息头:

录制 request 的 head 信息

添加断言:

录制时加入空的检查点

Regex matching:

录制时加入空的正则匹配

在浏览器中录制

启动 HTTP 代理服务器后,打开浏览器(IE,Firefox,Opera 等),添加代理,地址填

写本机 ip 或 host name,端口填写刚刚设置的代理端口,在浏览器中进行正常网页浏览,即

可录制下对应的操作。

二、脚本录制(Badboy):

使用 jmeter 的代理服务器可以顺利录制完整的 http 请求,包括请求的头;但无法录制

cookies,对于网站脚本,大多需要 cookies 支持,可以使用 badboy 来录制。Badboy 是澳大

利亚的一个软件公司设计的,有免费版可以下载。当然不通过录制也可以自己添加 cookies

Badboy 使用:

下载安装包,一键安装,“ 开始”>“程序”>“badboy”

点击红色的 record 按钮开始录制,输入 url,与在浏览器中操作一样。左边的脚本栏会

显示录制下来的请求。

录制完成后,“ File”>“Export to Jmeter”, 保存成 jmeter 的脚本 jmx 文件;

用 jmeter 打开脚本,可以看到比较完整的请求。

三、参数化:

方法一:使用“函数助手”添加从文件中读取字符串的函数。

通过菜单“选项”à“函数助手对话框”调出“函数助手”。 选择“__StringFromFile”

填写文件路径;可以填入命名以便在其它地方使用该函数。点击生成。“ 函数助手”保

留最近一次生成的函数信息。拷贝字符串,粘贴到需要调用该函数的地方即可,如:

在其它地方调用时使用函数填写的命名${命名},如${keywords}:

方法二:使用“CSV Data Set Config”元件

在脚本中添加“配置元件”à“CSV Data Set Config”

Filename 与 Variable Names 的定义与“__StringFromFile”函数一样,填写后即可使用。

调用时使用 Variable Names 的命名${填写的 Variable Names},如${keywords}:

四、使用关联参数:

在 http请求下加入“后置处理器”>“

正则表达式提取器”:

引用名称即使用的参数名;填入正则表达式;模板选取匹配的组;匹配数字为匹配的个

数,负数表示全部匹配;缺省值为没有匹配到时的取值。

示例中用正则表达式匹配出产品 id 作为后续使用的参数。

提取到的参数,调用时用${product_id_1},${product_id_2},${product_id_3}……;

如果想要得到匹配出的参数的个数,用${product_id_matchNr};如果想随机选取其中一个,

只需将匹配数字设为0,使用${product_id}调用即可。

可以一次匹配多组;示例中只匹配了一个,假如正则表达式为 name="chkProductIds"

id="chk(.+?)" value="(.+?)",就会有两组参数。想获得匹配到的组个数用${product_id_g}。模板针对的是匹配到的字符串再做组的区分,比如希望${product_id}取出的是第二组参数的值,用$2$。

五、添加检查点:

在脚本中添加“断言”à“响应断言”

使用正则表达式进行检查,可以选择正则的模式匹配规则,以及检查的文字段。

六、设置思考时间:

在脚本中添加“定时器”à“固定定时器”

设定延迟时间。

七、设置集合点:

在脚本中添加“定时器”à“Synchronizing Timer”

设置集合点处的并发用户数,即“多少”个用户达到集合点后再执行。

八、使用 cookies:

访问的页面需要 cookies 时,在脚本中加入“配置元件”>“

HTTP Cookies 管理器”,

要点:cookies 管理器元件需要位于需要使用 cookies 的请求的上一级节点。

在示例中加入了一个事务控制器,在该任务控制器下的节点都使用同一个 cookies 管理器

九、模拟浏览器操作:

HTTP Cache 管理器

一般来说不建议使用,因为在 LR 中我们一般也不让页面 cache,避免由于 cache 导致

压力不足,结果过于乐观。

HTTP 请求的“从HTML 文件获取所有内含的资源”

如果勾选了该项,则对 html 文件所调用的外部链接也会产生压力,响应的服务必须是

在待测系统范围内,即 该服务也是受压的系统之一。一 般来说当不具备该服务环境时不勾选。

Embedded URLs must match

这个用于匹配 html 中的资源链接,正则表达式,只有匹配符合的才会去请求比如正则

表达式http://www\.baidu\.com/.*,意味着只有http://www.baidu.com相关的链接才会被请求。

十、控制器实现脚本逻辑:

If 控制器:

条件符合时执行控制器的子节点内容

示例:判断${is_run}=1 是否成立,如果成立就执行 http 请求;复选框“Evaluate for all

children?”表示是否对所有子节点使用判断条件,不选择的话,只对第一个子节点生效。

无 else 判断,可以用非条件来实现。

随机控制器:

随机执行某一个子节点内容

示例中随机控制器下有四个子节点:HTTP 1、HTTP 2、简单控制器、HTTP 3,简单控

制器下有两个子节点:HTTP 3、HTTP 4;

当复选框“忽略控制器块”未勾选时,简单控制器是作为一个节点跟其它随机控制器子

节点一起参与随机执行;勾选时,简 单控制器下的子节点直接参与其它随机控制器子节点一

起参与随机执行。

随机顺序控制器:

子节点全部执行,但顺序随机。

循环控制器:

设置执行控制器子节点的次数,也可以设置永远执行。

十二、示例脚本(Examples.jmx)内容:

1. https 脚本:https get 请求

2. icbulogin

脚本:https post 请求,cookies 管理器,head 管理器,断言(检查点)

3. icbuwww1

脚本:参数化 unique 方式,关联参数(获取参数个数判断是否执行请求,

随机选择一个参数)

4. icbuwww2

脚本:参数化 sequential 方式,关联参数(获取参数个数判断是否执行请求,

固定选择参数)

5. 集合点脚本:集合点(同步定时器)

6. 逻辑控制:仅一次控制器(init),switch(根据不同的 vuser 选择不同请求),随机控制器(随机选取一个请求执行),随机顺序控制器,

十三、设置场景

设置测试计划:

测试计划就是一个完整的场景

“独立运行每个线程组”: 勾选以后所有的线程组都是顺序执行的了。一般不勾选,让所有

的线程组并发启动。

“函数测试模式”: 勾选后会有详细的请求记录,消耗资源,影响客户端性能。一般不勾选。

用户定义的变量:全局变量

添加线程组:

取样器错误后要执行的动作:继续,停止线程,停止测试

线程数:可理解为当前线程组下脚本运行的“并发用户数”。

RampUp

Period (in seconds):开始运行时线程数在“设定的时间”内由 0 增加到设置值。

循环次数:当前线程组下脚本运行循环次数;“ 永远”选项,无限次循环

启动时间:脚本自动启动时间

结束时间:脚本自动结束时间

持续时间(秒):持续运行的时段

启动延迟(秒):延迟指定时间后启动

线程组参数分析:

1. 取样器错误后执行的动作:“ 停止线程”为停止当前的线程运行;“ 停止测试”为停止测

试计划运行。

2. RampUp

Period 表示从 0 增加到指定线程数的时间,是线性增加,如:线程数为20 个,

RampUp

Period 为 50s,50/20=2.5s/个,所以是每隔 2.5s 增加一个线程。

3. 循环次数:勾选“永远”, 启动后必须手工“停止”才会停止;次数达到时若调度器未

运行完毕,则调度器无效,停止执行;调度器中运行完毕,次数尚未达到,则次数设置

无效,停止执行。

4. 调度器:在手工启动后生效,设置生效原则:启动延迟的优先级高于启动时间,持续时

间优先级高于结束时间,设置针对“未来时间”有效,针对“过去时间”无效;即启动

延迟与启动时间同时设置如果不一致,则以启动延迟为准,持续时间与结束时间同时

设置如果不一致,则以持续时间为准,设置为过去的时间则不生效。

线程运行状态显示:

在 jmeter 右上角处。图示含义为:绿色表示正在运行;共 20 个线程,已启动 8 个。

十四、响应数据

图形结果:添加“监视器”à“图形结果”

显示内容含义:

样本数目:运行时得到的取样器响应结果个数

最新样本:最近一个取样器结果的响应时间

平均:所有取样器结果的响应时间平均值

偏离:所有取样器结果的响应时间标准差

吞吐量:每分钟响应的取样器结果个数

中值:所有取样器结果的响应时间中间值

显示图线为随时间变化曲线,但 x 轴不是时间轴,是取样器个数的均匀分布轴

察看结果树:添加“监视器”à“察看结果树”

显示内容含义:

取样器结果:显示的是取样器相关参数(客户端参数与响应参数)

请求:http request

响应数据:http response data

聚合报告:添加“监视器”à“聚合报告”

显示内容含义:

Label:取样器名称

Samples:运行时得到的取样器响应结果个数

Average:所有取样器结果的响应时间平均值

Median:所有取样器结果的响应时间中间值

90%Line:所有取样器结果的响应时间 90%线

Min:所有取样器结果的响应时间最小值

Max:所有取样器结果的响应时间平均值

Error%:出错的取样器结果占所有取样器结果的比例

Throughput:每秒钟响应的取样器结果个数

KB/sec:每分钟响应的数据流量

Summary Report:添加“监视器”à“Summary Report”

显示内容含义:

Label:取样器名称

Samples:运行时得到的取样器响应结果个数

Min:所有取样器结果的响应时间最小值

Max:所有取样器结果的响应时间平均值

Std.Dev.:所有取样器结果的响应时间标准差

Error%:出错的取样器结果占所有取样器结果的比例

Throughput:每秒钟响应的取样器结果个数

KB/sec:每分钟响应的数据流量

Avg.Bytes:所有取样器返回 http response data 字节数的平均值

将响应情况保存到文件中以供统计:

给单个取样器添加监视器后,在“所有数据写入一个文件”下方的输入框输入响应情况

记录的保存文件,或者浏览选择;可使用全路径,也可使用相对路径,相对路径基准为脚本

保存路径;多个取样器使用一个监视器时,得到的统计结果是累加起来的。

十五、服务器资源监控(Linux)

Linux 服务器上加入监控脚本:

登录到被监控的服务器上,将 status 脚本放上去。该脚本执行时会在所在路径生成

status.xml 文件,可以直接将 status 脚本放在 web server 的目录下,也可以用软链接来链到

status.xml 文件。下面介绍在基于apache 的 web server 上的配置方法:

在 apache 的配置文件 httpd.conf 中找到 DocumentRoot,一般默认是 apache 目录下的

htdocs,将 status 脚本放到该目录下;

更改执行权限:

chmod 744 status

启动该脚本:

./status start

启动起来之后就会在当前目录下产生 status.xml 文件

不需要监控时,停止该脚本:

./status stop

Jmeter 上使用监控:

使用

打开 jmeter,建立一个线程组,添加一个 http 请求,ip 就是要监控的服务器地址,端口

号就是 apache侦听的 http端口,协议是“http”, 路径是“/status.xml”, 勾选“用作监视器”;

再为该 http请求添加一个“固定定时器”组件和一个“监视器结果”组件,“ 固定定时

器”的延时要设置为大于 1 秒的时间,即数据的采样时间。

在线程组中循环次数设置勾选“永远”;

Run 一下,就可以在监视器结果上看到刚刚添加的监控服务器了,目前已经监控了6 个

参数:cpu%user,cpu%iowait,load,mem%(used/total),swap in,swap out。

将监控到的资源情况保存到文件中以供统计:

方法同“将响应情况保存到文件中以供统计:”

十六、统计分析

将记录响应情况和资源监控情况的文件生成 html 图表报告以便进行分析(注意:记录

文件格式为 xml,若不完整是无法解析的;即脚本运行中生成的文件是无法解析的,必须在

脚本运行完毕后才能进行以下处理);生成方法如下:

设置 jmeter 保存的文件地址

打开 jmeter 目录的 bin 目录下的JmeterDataChart.

ini 文件,按照格式:

response=响应文件路径

resources=监控资源文件路径

进行填写。比如有 2 个响应文件 res/r1.jtl,res/r2.jtl,1 个监控资源文件 res/linux.jtl,则

填写文件内容为:

response=res/r1.jtl

response=res/r2.jtl

resources=res/linux.jtl

保存退出。

双击运行 bin 目录下的JmeterDataChart.

bat,进行文件的解析和图表生成。解析处理成

功后,在 bin 目录下会生成一个名为 CurDataChartIndex.

html,双击打开,可以看到相应的

图表链接,是原文件名+ res.

html 的文件

点击链接打开报告,IE 提示脚本风险

点击允许,即可看到完整的图表:

响应图表:

资源监控图表:

注意:因为该图表采用 vml 编写,在不支持 vml 的浏览器上无法显示。

附录

监控器实现的是 linux 系统上的资源监控,要求:服务器上至少有一个 web server

(因需要通过http请求获取资源xml), 用 于生成服务器资源xml的脚本中使用了sysstat

包中的指令,所以需要安装 sysstat 包。

如果被监控的 linux 上没有安装 sysstat 包,是无法正常生成监控数据的,这里附上

sysstat 包的安装方法:

首先到 http://perso.wanadoo.fr/sebastien.godard/ 下载最新的版本,最好是源码包,

比如 sysstat5.1.1.

tar.gz

1.解包:

tar zxvf sysstat5.1.1.

tar.gz

2.安装:

cd sysstat5.1.1

make config

这步可以省略,有些发行版中会出错;如果不用这个命令,可以直接安装到其默认

的/usr/local/lib 目录中

make

编译

make install

安装__

时间: 2024-08-30 07:05:22

jmeter笔记7的相关文章

jmeter笔记1

使用 JMeter 分布式性能测试 作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的, 所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, 甚至还会引起JAVA内存溢出的错误.不过,JMeter 也可以像 LoadRunner 一样通过使用多台机器运行所谓的 Agent 来分担 Load Generator 自身的压力,并借此来获取更大的并发用户数. 根据 JMeter官方文档的署名,你需要自己完成这个配置,不过不用担心,这将非

jmeter笔记5

性能测试是任何分布式或Web应用程序测试计划的重要组成部分.在计划和开发周期中进行性能评价,可以保证交付给客户的应用程序满足客户对于高负载.可用性和可伸缩性的要求. 性能测试是任何分布式或Web应用程序测试计划的重要组成部分.在计划和开发周期中进行性能评价,可以保证交付给客户的应用程序满足客户对于高负载.可用性和可伸缩性的要求.提前确定软件的负载限制可以为适当地进行系统配置提供帮助,从而避免出现意料之外的故障.系统性能分析中要处理的几个问题是:系统或服务器能否处理数百个或数千个客户端的同时请求,

jmeter笔记2

使用jmeter它来完成最常用的三种类型服务器,即 Web 服务器.数据库服务器和消息中间件,压力测试的方法.步骤以及注意事项. 讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试.但是软件仅仅只是功能正确是不够的.在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度.影响软件响应速度的因素有很多,有些是因为算法不够高效:还有些可能受用户并发数的影响. 在众多类型的软件测试中,压力测试正是以软件响应速度为测试目标,尤其是针对在较短时间内大量并发用户的访问

Jmeter笔记:响应断言详解

平时我们使用jmeter进行性能测试时,经常会用到断言.jmeter提供了很多种断言,本来想全都写一下,但发现每一个断言里面的东西都很多,所以就先写一下我们经常使用的响应断言. 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只

Jmeter笔记

熟悉几个专有名词: 1.测试计划是顺序执行的,一个性能测试必须有的三部分:测试计划.线程组.sampler(采样器)--核心 2.控制器(用来定义请求执行的):loop if else 3.timer:请求与请求之间的延时. 4.断言:可以直接加载采样器之后,用于判断采样器的输出结果是否符合预期. 5.监听器:统计结果,输出测试报告用--聚合报告 =========================================================== jmeter目录结构说明: 测

Jmeter笔记2:参数化

案例:邮箱登录操作,参数化登录的用户名 方法一.依赖Jmeter自带的函数助手 选项-->函数助手对话框,即可打开函数助手弹窗 (1)比如使用函数_Random 输入最小值.最大值,点击下方的[生成]按钮,即会生成:${__Random(1,5,)} 假如邮箱是163的,则用户名参数的值直接填入:${__Random(1,5,)}@163.com,我测试的邮箱是内网测试用的域名是180chen.cn,则填写${__Random(1,5,)}@180chen.cn (2)比如使用函数__CSVRe

【转】Jmeter笔记:响应断言详解

平时我们使用jmeter进行性能测试时,经常会用到断言.jmeter提供了很多种断言,本来想全都写一下,但发现每一个断言里面的东西都很多,所以就先写一下我们经常使用的响应断言. 第一次在cnblog上写东西,不会排版,希望达人指点. 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sam

jmeter笔记4

软件测试中使用JMeter测试Web应用 JMeter作用领域 JMeter可以用于测试静态或者动态资源的性能(文件.Servlets.Perl脚本.java对象.数据库和查询.ftp服务器或者其他的资源).JMeter用于模拟在服务器.网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况.你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为. 使用JMeter测试Web应用 接下来的章节里,作者将

Jmeter 笔记

Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库, FTP 服务器, 等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能.另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果.为

JMeter笔记4:测试结果-聚合报告的字段说明

1.Lable :定义 HTTP 请求名称2.Samples :表示这次测试中一共发出了多少个请求3.Average :平均响应时长---默认情况下是单个Request的平均响应时长,当使用Transcation Controller时,也可以以Transcation为单位显示平均响应时长4.Median :中位数,也就是50%用户的响应时长5.90%Line :第90百分位用户的响应时长(响应时长按从小到大排序,第90%个用户的响应时长)6.Min:访问页面的最小响应时长7.Max:访问页面的