jmeter学习笔记

 

jmeter是进行接口测试的利器,因为开源,倍受测试人员喜爱,这里简单的介绍一下jmeter脚本录制,关联,参数化,检查点及与FTP,MySQL数据库进行连接,帮助大家加深对jmeter的了解。



jmeter使用时不用安装直接从官网上下载,然后打开解压目录中的bin中的jmeter.bat就ok了(Windows系统打开,jmeter.bat,Linux系统打开jmeter.sh)





一、脚本录制的方法:(代理服务器方法,不推荐使用!)

1.    创建一个 线程组(右键点击“测试计划”—“添加”—“线程组”)

2.    创建一个http代理服务器(右键点击“工作台”—“添加”—“非测试元件”—“http代理服务器”)

3.    设置代理服务器的参数

注:http服务器代理设置—分组详解:

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

在组间添加分隔:加入一个虚拟的以分割线命名的动作

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

只存储每个组的第一个样本:保存对于一次URL请求

 

4.    设置完成要启动代理服务器,录制完成记得关闭

5.    IE----“Internet属性”—连接—局域网设置

 

 

 

 

 

二、脚本录制的最新方法,使用badboy方法

badboy下载地址www.badboy.com.au

 

1.打开以后点击开始录制按钮,然后进行相应的操作,这样会在左侧的step中进行录制,点击停止,停止录制,

2.点击File—export to JMeter,对文件重命名后保存

3.在Jmeter中打开文件,可以对录制的脚本进行回放!

 

三、badboy添加检查点

在badboy网址导航栏通过前进后退可以切换网页的界面,在右侧的网页界面中选中需要检查的参数,然后点击tools—选中add Assertion for selection就添加检查点,

回放脚本,可查看!

注意:如果回放过程中出现乱码,可能是编码问题,在左侧的步骤中双击ie=utf-8,在配置属性中改变编码如gbk,查看是否正常

 

四、badboy参数化

1.右键点击左侧窗口的Variable选项,点击Add Variable,弹出Variable Properties 对话框,为变量命名(如sW),当前值(如zxw),然后添加,再设置需要添加的参数(如:CCTV)点击OK

2.在需要设置参数的地方右键点击Properties,弹出Item Properties对话框,设置Valve的值为${sW}点击确定!

3.右键选中Step点击Properties,为step设置重复次数,点击For each valve vari 点击确定(可以通过回放,查看参数化是否成功,当参数设置检查点的时候,参数化的检查点也可以根据属性设置检查点的参数化,本例中将参数zxw,设置为${sW})

 

 

 

五、JMeter元件作用域和执行顺序

(1)元件的作用域

被执行的元件(逻辑控制器、配置元件、定时器、前置处理器,后置处理器,sample,断言,监听器),取样器是典型的不与其他元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其他元件(配置元件、定时器,断言、监听器)需要与取样器等元件交互

       在Jmeter中元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的作用域的原则:

1.    取样器元件不和其他元件相互作用,因此不存在作用域的问题

2.    逻辑控制器元件只对其子节点中的取样器和逻辑控制器作用

3.    除取样器和逻辑控制器元件外,其他6类元件,如果是某个取样器的子节点,则该元件对其父子节点起作用,如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

(2)元件的执行顺序

1.配置元件

2.前置处理程序

3.定时器

4.取样器

5.后置处理程序

6.断言

7.监听器

 

注意:

前置处理器、后置处理器和断言等元件功能对取样器作用,因此如果在他们的作用域内没有任何取样器,则不被执行

如果在同一作用域范围内有多个同一类型元件,则这些元件按照他们在测试计划中的上下顺序执行

 

 

 

QPS  query Per Second每秒查询率,是一台查询服务器每秒能够处理的查询次数,在因特网上,作为域名系统服务器的性能经常用每秒查询率来衡量!

 

六、线程组主要包含三个参数:线程数,准备时长、循环次数

线程数:虚拟用户数

准备时长:设置的虚拟用户数需要多久时间全部启动

七、JMeter提供了一个定时器,Constant Throughput Timer(常数吞吐量定时器),该定时器可以方便的控制给定的取样器发送请求的吞吐量(在取样器上右键添加—定时器—Constant Throughput Timer)主要的参数有两个:arget throughput 目标吞吐量,这里的单位是每分钟,

CalculateThroughput based on 里面有5个选项可以选,具体看题目要求

八.聚合报告分析(响应时间单位:毫秒)

Label:每个JMeter的元素都有一个name属性,这里显示的就是name属性的值

#Sample:表示这次测试中一共发出多少请求

Average:平均响应时间

Median :中位数,50%用户的响应时间

90%Line :90%用户的响应时间

Min:最小响应时间

Max:呵呵

Error%:出现错误的请求的数量/请求的总数

Throughput:吞吐量 默认表示每秒完成的请求数

KB/sec 每秒从服务器端接收到的数据量

 

九、Jmeter断言

注:在添加断言的时候,需要在出现断言结果的取样器下添加,例如webtours示例在登录取样器下添加会断言失败,需要在跳转到welcome页面的取样器下添加

1.响应断言

可在取样器中对响应添加响应断言,并对断言进行查看结果树!

2.Size Assertion(Size断言)

对响应的字节进行断言,可设置大于等于小于等选项

4.    DurationAssertion (持续时间断言)

如果响应时间大于设置的响应时间,则断言失败,否则成功!

 

十.Jmeter 参数化

1,用户参数,在取样器的上方添加用户参数,(步骤:右键取样器—添加—前置处理器—用户参数)可添加用户,添加变量!

然后在取样器的请求对话框中设置同请求一同发送的参数(${用户参数中设置的变量名})

2.csv数据配置

在取样器的上方添加文件中的参数,(步骤:右键取样器—添加—配置元件—csv Data Set Config弹出对话框)

在对话框中设置选项:

Filename:需要加载的用户参数的文件全路径

Variable Names :变量的名称,自己定义

Delimiter:分隔符,参数多时不同变量间的分隔符

然后在取样器的请求对话框中设置同请求一同发送的参数(${用户参数中设置的变量名})

十一 、JMeter集合点和关联

1.    集合点

简单的意思就是很多用户同时完成某一操作,需要在取样器请求的前面添加(步骤:右键点击取样器—添加—定时器—Synchronizing Timer)

需要设置的参数有:Number of Simulated Users to Group by :模拟的用户数,当所设的用户数还未生成时,不会发送请求 Timeout in milliseconds用户数全部生成发送请求前的延迟时间
2.关联

在取样器右键-添加-后置处理器-正则表达式提取器

正则表达式部分配置说明:

(1)引用名称:下一个请求要引用的参数名称,如填写activityID则可用${activityID}引用他

(2)正则表达式,需要提取的内容,需要符合的表达式如:name=userSession Valve=(.*)>

(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式匹配,需要用到第几个解析的值如$1$表示解析到的第一个的值

(4)匹配数字:0代表随机取值,1代表全部取值

(5)缺省值:如果参数没有取得到值,那默认给一个值让他取

然后在另一请求中需要上一请求的参数时,直接在请求配置中配置参数

 

 

 

十二、Jmeter图形监控扩展

插件地址http://jmeter-plugins.org/downloads/all/

下载两个文件 JMeterplugins-Standard-1.2.1.zip和ServerAgent-2.2.1.zip(在这个下载文件中没有找到serverAgent的链接,可以直接输入网址:http://jmeter-plugins.org/downloads/file/ServerAgent-2.2.1.zip)

首先将JMeterplugins-Standard-1.2.1.zip中的JmeterPluging.jar包复制到Jmeter的Lib目录下面的ext目录下面然后重新启动,然后将ServerAgent下载包目录及下面的文件复制到我们测试的服务器上,然后点击打开SerVerAgent.Bat,Linux系统用后缀为.sh的,它的默认端口4444(特别是对于PerfMon Metrics Collector 测试一定要启动ServerAgent),

1.    启动ServerAgent,点击StartAgent.bat,ServerAgent就会监控事务

2.    在请求中添加—监听器—可以在多出的监听中选取有用的数据进行监听,并配置采样间隔(在jp@gc-PerfMon Metrics Collector中可以通过add row的方式添加CPU 内存等的监控)

3.    点击运行时,运行完成可对图表右键保存

 

十三、Jmeter FTP服务器连接

1.    创建一个线程组

2.    线程组---添加—配置元件—FTP请求缺省值

3.    线程组—添加—Sample—FTP请求

FTP请求配置:

IP:FTP服务的IP

Remote file:FTP服务器上的一个文件

Local file :本地存放到本机上的路径

选择get 为下载方式,put为上传方式

登录配置:FTP服务器登录的用户名密码

4.    添加一个监控器:线程组—添加—监控器—Spline Visualizer

十四、Jmeter MySQL 测试

1.    准备一个有测试数据表的MySQL数据库

2.    在测试计划面板的add directory or jar to classpath中点“浏览”按钮,将你的JDBC驱动jar包添加进来

3.    添加一个线程组,然后在下面添加—配置元件—JDBC Connection Configuration 并配置好各项参数

配置的参数主要为Variable name:(可随便起,这个名字会在jdbc Request 取样器中使用)

Database Connection Configuration:(数据库连接配置)

DataBase URL:(数据库的地址,如:jdbc:mysql://localhost:3306/mytest,mytest是数据库的名称)

JDBC Driver class:org.gjt.mm.mysql.Driver(这个是jar包里面的class类)

Username:数据库用户名

Password:数据库密码

4.    线程组—添加—Sample—JDBC Request

配置请求参数:包括前面JDBC Connection Configuration 配置的参数名称,还有SQL Query 语句

5.    可在请求的后面添加响应断言,断言结果,查看结果树 Summary Report等元件方便连接执行的结果!

十五、Jmeter分布式测试

 

 

背景:

由于Jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的用户就有些力不从心,甚至还会引起Java内存溢出的错误,要解决这个问题,可以使用分布式测试,运行多台机器运行所谓的Agent来分担Jmeter自身的压力,并借此来获得更大的并发用户数

需要进行的修改步骤如下:

1.    安装Jmeter,并确定其中一台作为controller,其他机器作为Agent,然后运行所有Agent机器上的Jmeter-Server.bat文件—假定我们使用两台机器192.168.0.11和192.168.0.12作为Agent(agent机器上必须安装jdk,并设置环境变量)

2.    在Controller机器的%JMeter_home%/bin下,编辑Jmeter.Properties中“remote_hosts=127.0.0.1”其中的127.0.0.1表示运行Jmeter Agent的机器,这里需要修改为“remote_hosts=192.168.0.11:1099,192.168.0.12:1099”—其中的1099是端口号

3,启动Controller机器上的Jmeter.bat,选择菜单Run中的“Remote Start“ 中的192.168.0.11;1099和192.168.0.12:1099来运行Agent

4.如果要让某个电脑执行,可以点击该电脑的IP地址就行,如果都要执行,可以点击Run菜单下的远程运行全部的菜单

5.有时仍不能满足需要,则需要将作为Controller的电脑也当做Agent,则同样需要修改Jmeter.peoperties文件,将Controller的IP地址写入,同时需要先打开Controller电脑中Jmeter下Bin目录中的Jmeter-Server.bat然后再打开Jmeter.bat,此时,进入Run-Remote Start菜单,可以看到Controller也作为远程机器进行运行!

常见问题:

1。确定在Controller机器上安装jdk版本和Jmeter一致

2.Agent机器启动Jmeter_server.bat时,后台提示”could not find ApacheJmeter_core.jar”

解决方法:需要添加环境变量JMETER_HOME,路径为bin目录的上一级目录

3.Jmeter分布式控制过程中,各个Agent启动      的线程数等于线程组中的配置

 

 

 

 

 

你可能感兴趣的:(软件测试)