jemter使用

上一篇 / 下一篇  2016-02-03 16:47:18 / 个人分类:jemter

JMeter 使用

在实际工作中,我主要应用JMeter对接口做功能测试,所以下面主要介绍一下JMeter的使用

基本介绍

下面是我的一个测试脚本,通常一个文件会包含下面这些组件。我通过简单控制器与DEBUG Sampler来组织管理不同的接口,验证点主要通过写一些Beanshell脚本来实现。对于一些复杂的操作,如果网上能找到到现成的资源,比如JAR,CLASS文件会直接在Beanshell PreProcessor/PostProcessor引用。另外在Jmeter里写Beanshell不容易DEBUG,所以还是建议复杂的功能直接在Eclipse里编写,然后生成JAR包. 关于Beanshell使用会在后面介绍

使用Beanshell 在 JMeter

BeanShell是一种完全符合Java语法规范的脚本语言,并且有自己的一些语法和方法[官网](http://www.beanshell.org/
我的脚本几乎所有验证都是通过Beanshell脚本,只有少部分应用了Response Assert。

Beanshell 常用内置变量

http://jmeter.apache.org/api/org/apache/jmeter/threads/

下面是一些实际的例子

  • 操作变量:(vars)

  • 获取前面的sample返回的信息(prev)

  • 写入信息到jmeter.log文件

log.info("log information")

  • 获取属性(props)

它是类似的与vars, 相应的属性在在文件jmeter.properties中定义

  • 引用外部文件(jar/class/java)


另外如果引用外部JAR包,也可在TEST PLAN中配置,在JMeter中点击Test Plan 结点,就会看到下面的界面,可以直接添加JAR包所在路径

其它

CSV配置组件使用

CSV_Data_Set_Config 当发送多组同样的请求,只是所带参数不同,这时可以加这个配置组件


然后在SAMPLER中可以应用上面这些变量配合循环控制器

连接数据库

在测试过程中,我们需要一些测试数据来自于数据库,这时我们需要在Jmeter连接数据库
下面以连接MySQL数据库为例


其它数据库连接请参考下图:

  • 添加JDBC request


因为我们在接口测试中,更多的时候是获取数据,所以基本都用“SELECT"。如果想INSERT数据,需要选择“Callable Statement"在"Query Type"

在使用过程中注意以下几点:

  • SQL语句不要加分号

  • 如果查询条件是变量,在语句中用“?”号代替,具体的值在下面的“Parameters Value"定义,如果有多个参数,中间要用分号隔开。当然也可以用${变量名}(在用户定义变量组件中已经定义)

  • 对于“variable names" 数据表中有多少列就可以设置多少变量,对于不需要设置变量的列用逗号占位就可以了。

  • 更具体的使用细节请参考(http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request

  • 获取查询结果数据在Beanshell里

添加监听器

  • View result tree

  • Aggregate report

Aggregate Report 是 Jmeter 常用的一个Listener, 中译为“聚合报告”,每一列具体表示如下。

Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数 KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

Jmeter 与 Jekins 集成

说这个之前简单说一下如何在命令行执行JMeter

  • 首先配置JMETER_HOME环境变量,值即为你Jmeter解压路径

  • 在命令行运行jmeter -v , 正确返回当前版本,证明环境OK

  • 运行jmeter -n -t script.jmx -l log.jtl

接下来做的事,lose同学已经推荐了一个链接 (https://testerhome.com/topics/2580),我觉得已经充分说明问题了,所以这里不再详述。
(本文完)


TAG:

 

评分:0

我来说两句

Open Toolbar