2016年7月

三分钟带你掌握Jmeter集合点和检查点(常用断言),赶快来领略一下吧

一、添加集合点

1、右击“添加-定时器-Synchronizing Timer”如下图所示

  注意集合点的位置,要放在集合的操作之前

jihedian1

2、设置集合点数和线程数

jihedian2

名词解释:

Number of Simulated Users to Group by:多少用户进行集合点的并发

3、调整集合点的位置,添加监听器,保存测试计划,点击运行

二、添加检查点(断言)

1、需要添加断言的请求,右击“添加-断言-响应断言”

jihedian3

2、输入要测试的模式,格式为${参数名}

jihedian4

3、对相应请求添加“断言结果”,右击“添加 -监听器-断言结果”

jihedian5

4、如需求是响应时间不超过150ms,这时候就可以添加断言持续时间来进行判断,右击“添加-断言-断言持续时间”

jihedian6

5、如果需要对请求的字节大小进行判断,则可以添加Size Assertion来判断,右击“添加-断言-Size Assertion”

jihedian7

6、运行,成功通过,断言结果就会显示一行,失败则会显示多行

一、用户参数方法

1、添加“前置处理器-用户参数”,如下图所示

jmetercanshu

2、添加参数信息,点击下方添加即可,“用户”即为变量值,勾选“每次迭代更新一次”

jmetercanshu2

3、HTTP请求中,将设置的参数名称以${参数名}格式写进去

或者直接在路径path下写

jmetercanshu3

4、如果添加“响应断言”,则格式也为${参数名},添加“断言结果”

jmetercanshu4

5、在线程组里设置线程数,好读取变量值

6、保存计划,运行即可

二、通过CSV Data提取(文件)

1、右击→添加→配置元件→CSV Data Set Config,如下图所示

2、准备数据文件,输入对应设置

jmetercanshu5

名词解释:

Filename:文件名,即参数化要引用的文件名,一般以.csv,.dat等结尾的文件。

File encoding:文件编码,可以不填,如果有乱码,可输入“utf-8”或“gbk”。默认是ANSI

Variable Names(comma-delimited):变量名(用逗号分割),多个变量可以引用同一个文件,用逗号分割。

Delimiter(use '\t' for tab):参数文件中多个变量值的分隔符,\t表示用tab键分割。默认是逗号,不需修改

Allow quoted data?:双引号相关,如果参数中需要显示【,】或者【”】等,外层需要双引号显示,且这边修改为“true”

txt中这样书写:

则获取的变量值为【a"b】、【b,c】、【ccc】、【ddd】

Recycle on EOF?:结果后是否循环?默认是True,允许循环取值。如线程设置10个,循环10次,实际只取了前10个的值。改为false后,则取前100个的值。

Stop Thread on EOF: 当Recycle on EOF为false并且Stop Thread on EOF为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效

Sharing Mode: 设置是否线程共享

  • All threads:所有线程,所有线程循环取值,线程1取第一行,线程二取下一行;
  • Current thread group:当前线程组,各个线程组分别循环取值;
  • Current thread:当前线程,该测试计划内的所有线程都取第一行。

3、txt文本参数书写格式

下面为一个变量名称时的书写方式:

变量值1

变量值2

变量值3

......

下面为两个变量名称时的书写方式:(逗号或者tab,默认是逗号)

变量值1,变量值a

变量值2,变量值b

变量值3,变量值c

       ……

      不需任何符号,换行即可。保存为csv或dat格式(可放入下面的函数对话框)。

4、剩下的步骤与一中的3、4、5、6一样。

三、函数助手对话框

1、选项→函数助手对话框,可以选择你需要使用的函数类型,假设选择函数“_Random”

jmetercanshu6

2、输入最小值为1 ,最大值为100,点击生成

jmetercanshu7

3、将生成的函数字符串复制粘贴到上文提到的3、4步骤中,进行变量替换,保存测试计划,点击运行即可。

也可以自己添加文件(dat文件),设置值,0表示读取第一列,1表示读取第二列。逗号隔开。然后生成,变成被引用的函数。然后按照最上面的3步骤去引用就行。

 以上三种方式都介绍完了,是不是so easy呀,赶紧去试试吧!

 

Badboy是一款免费的web自动化测试工具,一般与JMeter结合使用,下面主要介绍了Badboy的安装和基本功能的使用。

一、下载和安装

下载地址:http://www.badboy.com.au 下载后直接安装即可

二、使用-录制脚本

1、找到安装目录,打开badboy.exe文件,如下图所示:

  • 红色的点表示正在录制中,badboy默认打开即开始录制,可以手动修改,点击【Preferences-General】,取消“Enable Recording on Startup?”的勾选,点击确定即可。
  • Badboy录制分为两种模式,Request和Navigation,其中Request是默认模式,如需切换,点击下面的大写“N”即可。

两种模式的区分:

Request:

  • 优点:如果测试的网页模版修改了,不影响脚本的回放;可以支持badboy导出脚本到jmeter进行性能测试。
  • 缺点:request模式需要添加大量的断点来检查页面上的item。

Navigation:

  • 优点:会记录网站交互过程中browser中的元素的点击动作。
  • 缺点:无法使用navigation脚本进行性能测试,因为性能测试引擎运行时候不显示任何用户界面,所以无法执行navigation中模拟点击等动作。

如界面趋于稳定,还是使用N方式做回归测试比较方便。

2、输入需要访问的地址,点击后面的箭头即开始录制。

我录制的时候会弹出页面脚本报错,找了网上也没找到解决方法,然后将ie从8升级到11就自己好了。

3、录制结束之后,点击小红点就停止录制了。

badboy

三、使用-参数化

1、 如图所示,选择“Variables”,空白处右击,选择“Add Variables”

2、 输入参数名称“Enter a name for the variable”,然后在“Current Value”中填入参数数值,点击右侧【Add】

badboy3

3、选中需要参数化的字段,右击选择“Properties”,在Value下填写“${参数名称}”,如图所示:

badboy4

4、设置循环次数,选中步骤,右击选择“Properties”,选择第二种方式,根据我们设置的参数列表里面的参数个数来执行几次(第一种是直接设置循环几次),如图所示:

badboy6

四、使用-检查点(断言)

如图所示,选择“Checks”,选择需要添加断言的脚本处,选中要添加的断言类型,右击“Add to Script”。

badboy2

添加参数化的断言,选择“Variable Check”,选择已经添加的参数,点击“确定”即可

badboy5

断言参数化的另一种方式,选择有问号图标的断言,右击选择“Properties”,在“The following”下面填写设置的参数,格式:${参数名}

五、使用-断点

选中需要断点的地方,右击“Toggle Break Point”即可

六、使用-回放

1、选中计划右击点击【Clear Responses】,清除响应及其他反馈信息。

2、点击双箭头(play all)即可,暂停回放点击黑色小方块。

七、查看结果

点击【View-Report】,选择不同的报告模式,一般选择“Detail Report”

badboy7

 

 

扩展——JMeter自身录制脚本的功能

1、在工作台右击添加->非测试元件->HTTP代理服务器,如图所示

只要选择必要的目标控制器(你所创建的线程组)和Type(一般会选择httpClient4),点击保存即可

其他概念的解释,可以查看下面的文章:

http://blog.jianjiexuan.com/tools/jmeter/205.html

2、在浏览器中设置代理

3、在浏览器中访问需要测试的项目,代理录制会得到相应的路径。

利用jmeter自身的录制功能,虽然方便,但是会得到很多没有作用的路径,筛选比较麻烦。

另外,这个只能录制http,如果需要录制https,需在bin目录的system.properties中加载证书。

下面主要针对测试mysql的性能,如每秒往数据库插入1000条数据,查看数据库的性能

1、创建一个测试计划,如图所示,导入数据库驱动jar包

下载地址:http://www.mysql.com/downloads/connector/j

111

2、添加线程组,设置线程数、启动时间、循环次数

3、选中线程组,右击->配置元件->JDBC Connection Configuration,设置数据库信息,其他默认

如果Variable Name填写的话,对应的JDBC Request-Variable Name也要填写对应的。

jdbc2

数据库驱动类和URL格式:

Datebase Driver class Database URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://host:port/{dbname}
PostgreSQL org.postgresql.Driver jdbc:postgresql:{dbname}
Oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@//host:port/service OR

jdbc:oracle:thin:@(description=(address=(host={mc-name})

(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
Ingres (2006) ingres.jdbc.IngresDriver jdbc:ingres://host:port/db[;attr=value]
MSSQL com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver
jdbc:sqlserver://IP:port;databaseName=DBname

或者

jdbc:jtds:sqlserver://localhost:1433/"+"library"

4、选中线程组,右击->sampler->JDBC Request,选择更新模式,设置SQL语句及参数数据,写语句时注意前提:数据库已存在该表及字段

jdbc3

Query Type选择

Select Statement:查询语句,下面参数不需要填写

Update Statement:更新语句,下面参数不需要填写

Callable Statement:执行存储过程

Prepared Select Statement:预查询语句,在sql quety中使用“?”作为占位符,并传递参数值和参数类型

Prepared Update Statement:预更新语句,在sql quety中使用“?”作为占位符,并传递参数值和参数类型

Commit:提交

Rollback:回滚

AutoCommit(false):自动提交(否)

Query:输入需要执行的sql语句,末尾不需加";"

Parameter valus:参数值

Parameter types:参数类型

Variable names:保存sql语句返回结果的变量名

Result variable name:创建一个对象变量,保存所有返回的结果

5、查询操作可以添加断言,选中线程组,右击->断言->响应断言,点击添加,输入需要断言的内容(可忽略)

6、添加监听器:选中线程组,右击->监听器->察看结果树、图形结果以及断言结果

7、启动,查看运行结果,也可在命令端查看数据库数据变化及性能响应

查看数据库被插入了多少条数据:select count(*) from tablename;

♥Tips:sql语句的参数化

如果有多条sql语句,把整条sql语句当作参数,然后把多条sql语句放在csv文件中,然后在JDBC Request的Query中使用参数代替sql语句,参数书写的格式:${SQL_Statement}