利用JMeter进行压力测试(3)
如何在JMeter中使用外部数据,JMeter也提供了一系列元件,大多包含在配置元件中,例如:CSV Data Set Config,Random Variable,用户定义的变量等,另外,前置处理器 >> 用户参数也可以使用自定义的变量。
我这里着重介绍用户参数和CSV Data Set Config的使用方法。
用户参数可以给测试计划或者测试计划中的每个线程设置参数,如果设置的参数比线程数少的话,这些参数就会被重复利用。
继续以Google为例,如果你想用不同的关键字来搜索,可以在用户参数中作如下设置:
1. 右键单击[线程组],添加 >> 前置处理器 >> 用户参数,在用户参数元件中添加5个用户。然后再添加一个变量[keyword],5个用户对应的值可以随便填写。
2. 设置[线程组]的线程数为5
3. 修改脚本中名称为/search的请求。把名称为[q]的字段的值修改为${keyword}
用户参数也可以读取CSV文件,上面的例子如果改为读取CSV的话,则需要
1. 在ApacheJMeter.jar的同级目录下新建一个文件,keyword.txt,其中内容是每一行一个关键字
2. 设置[线程组]的线程数为5
3. 如下图设置用户和变量,名称为keyword,用户_1是${_StringFromFile(keyword.txt)}
4. 修改脚本中名称为/search的请求。把名称为[q]的字段的值修改为${keyword}
做完上述操作后,点击运行 >> 启动,就会看到JMeter右上角的线程数从0升到5,执行完后,又变成0
注意点:在一般情况下,线程数和用户参数中定义的变量数是相同的,除非你有特殊的需要
我一般使用用户参数定义一些很重要的常量,像读取大规模数据这样的,我们可以使用CSV Data Set Config。CSV Data Set Config默认是读取指定的CSV文件中的数据,每个线程会按照顺序使用其中一条数据,如果线程数比实际数据多的话,数据则按顺序会被重复利用。
1. 右键单击[线程组],添加 >> 配置元件 >> CSV Data Set Config,设置Filename为CSV文件的存放路径,Variable Names就是变量名,设置为keyword,Delimiter一般就是逗号了,四个选框一般就是按照下图设置即可
2. 设置[线程组]的循环次数为永远,线程数为1
3. 修改脚本中名称为/search的请求。把名称为[q]的字段的值修改为${keyword}
做完上述操作后,点击运行 >> 启动,就会看到JMeter右上角的线程数从0升到1,执行完后,又变成0
当然了,我的例子比较简单,有一个稍微复杂一点,而且经常用到的情况就是用户名、密码的组合。在大数据量测试的时候,因为涉及到缓存等的问题,不可能都用同一个用户来执行操作,所以要用很多用户来执行,这个时候CSV Data Set Config就很有用;或者是在进行数据插入的时候,也是很有用的。
怎样利用外部数据已经晓得了,但是怎样确认每个线程执行的都是我们定义好的关键字呢?
有多种方法,可以使用监听器,也可以使用断言,这两种元件留到以后再做介绍。