从csv外部文件中获取参数值
当参数的值没有规律且量不太大时,可以使用这种方法。具体做法如下:
(1)创建一个csv文件,内容为参数的值集,每一个参数占一列,第一行就开始写参数值,不要写参数名;
(2)在需要用到参数值的组件中添加一个“配置元件”→“CSV Data Set Config”;
(3)Filename中填写步骤中csv文件的相对路径(相对于jmeter安装路径下的bin目录而言);
(4)Virable Names中填写变量名,如果csv文件中有多个变量,则用逗号隔开;
(5)直接在输入参数中调用Virable Names,语法为:${variable names}。
这个需要放到循环里面,要不然每次只会读取第一行.
从数据库中获取参数值
当参数的值没有规律且量比较大时,可以选用这种方法。具体做法如下:
(1)下载MySQL JDBC;
(2)解压下载的zip包后,将其中的mysql-connector-java-5.1.12-bin.jar放到Jmeter的lib目录下;
(3)添加“配置元件”→“JDBC Connection Configuration”,设置下列参数:
Database URL:jdbc:mysql:host:port/db JDBC Driver class:com.mysql.jdbc.Driver username:连接数据库的用户名(如root) password:连接数据库的密码\
(4)添加“Sampler”→“JDBC Request”:
为我们在接口测试中,更多的时候是获取数据,所以基本都用“SELECT“,所以要在“Query Type”选项中选择“Select Statement”。 在使用过程中注意以下几点: SQL语句不要加分号; 如果查询条件是变量,在语句中用“?”号代替,具体的值在下面的“Parameters Value”定义,如果有多个参数,中间要用分号隔开,当然也可以用${变量名}(在用户定义变量组件中已经定义); 对于“variable names“ 数据表中有多少列就可以设置多少变量,对于不需要设置变量的列用逗号占位就可以了; 获取查询结果数据在Beanshell里
Test Fragment , Module Controller , Include Controller的使用:
Test Fragment
测试片段是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个Module Controller(模块控制器)或者是被控制器所引用时才会被执行
可理解为步骤的集合片段。比如把某个流程的一部分(登录)存储为test Fragment,那么当其他线程也需要做同样操作(登录)时,就可以直接引用这个片段,而不需要重新编写。当线程数量很多时,可以方便管理某个关键步骤。
Test Fragment 【右键 Test Plan - Add - Test Fragment - Test Fragment】
Module controller
模块控制器提供了一种在运行时将测试计划片段替换为当前测试计划的机制。
测试计划片段由控制器和包含在其中的所有测试元素 (取样器等) 组成。该片段可以位于任何线程组中。如果该片段位于线程组中, 则可以禁用其控制器, 以防止除模块控制器以外运行该片段。也可以将片段存储在虚拟线程组中, 并禁用整个线程组。
可以有多个片段, 每个碎片在它们下面有不同的取样器系列。然后, 通过在下拉框中选择适当的控制器, 可以使用模块控制器轻松地在多个测试用例之间切换。这为快速轻松地运行许多备用测试计划提供了方便。
Module Controller【右键 Thread Group - Add - Logic Controller - Module Controller】
一般,在线程组中新建Module Controller,在Module To Run下面选择需要的Test Fragment 即可。这样,在执行线程组中的Module Controller即相当于执行了Test Fragment
【注意】
Test Fragment名称由控制器名称及其所有父名称组成。上面的截图并没有按规范命名,这是不正确的。正确命名例如:
Module Controller使用的任何Test Fragment都必须具有唯一的名称, 因为该名称用于在重新加载测试计划时查找目标控制器。因此, 最好确保控制器名称从默认值更改-如上面的示例所示-否则, 当新元素添加到测试计划中时, 可能会意外地创建重复项。
Include controller
包含控制器设计为使用外部 JMX 文件。要使用它, 请在测试计划下面创建一个测试片段Test Fragment, 并在它下面添加任何所需的取样器、控制器等。然后保存测试计划。该文件现在可以作为其他测试计划的一部分包括在内。
为了方便起见, 还可以在外部 JMX 文件中添加一个线程组以进行调试。模块控制器可用于引用测试片段。在包含过程中, 线程组将被忽略。
如果测试使用 Cookie 管理器或用户定义的变量, 则应将它们放在顶级测试计划中, 而不是包含的文件中, 否则它们将无法保证工作。
如果定义了属性 includecontroller. 前缀, 则该内容用于对路径名进行前缀。如果在前缀 + 文件名指定的位置找不到该文件, 则控制器将尝试打开相对于 JMX 启动目录的文件名。
BeanShell一些常用的语法:
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
log:用来记录日志文件,写入到jmeber.log文件,使用方法:log.info(“This is log info!”);
ctx(JmeterContext)通过它来访问context,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
vars - (JMeterVariables):操作jmeter变量,提供读取/写入访问变量的方法。这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),
它是测试用例与BeanShell交互的桥梁,常用方法:
vars.get(String key):从jmeter中获得变量值
vars.put(String key,String value):数据存到jmeter变量中
例如:vars.put("temp",count); temp :temp为你自定义的变量,count为你在bean shell中提到的变量,是把count的值保存到temp中.vars.putObject("OBJ1",new Object());
更多方法可参考:org.apache.jmeter.threads.JMeterVariables
props - (JMeterProperties - class Java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,
但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义
props.put("PROP1","1234");
prev - (SampleResult):获取前面的sample采样的结果,常用方法:
getResponseDataAsString():获取响应信息
getResponseCode() :获取响应code
更多方法可参考:org.apache.jmeter.samplers.SampleResult
sampler - (Sampler):gives access to the current sampler 访问当前采样
还没有评论,来说两句吧...