4.2通过MySQL参数化步骤 JMeter提供对数据库的访问,我们可以用数据库来进行参数化。 1)在MySQL中的某个数据库中建立表,在表中插入参数化的数据,如图25所示。
图25 MySQL存储的参数化数据
同样,确保使用这些用户名和密码均可以登录成功的。 2)把访问MySQL的JDBC的jar包mysql-connector-java-5.1.7-bin.jar放入%JMETER_HOME% libext目录下,重新启动JMeter。 3)右键点击循环控制器,在弹出菜单中选择“添加->配置元件->JDBC Connection Configuration”。如图26进行设置。
图26 JDBC Connection Configuration
- Variable Name for create pool输入:data_ebusiness。
在这个元件的上部分设置中,仅需要设置这里,其他使用默认值即可,关键在于下面的设置。
- Database URL:jdbc:mysql://localhost:3306/php_ebusiness。其中localhost为MySQL所在的服务器所在的机器名或IP地址;3306为MySQL所占用的端口,默认就是3306;php_business为数据库名。
- JDBC Driver Class:由于我们用的是MySQL,这里选择com.mysql.jdbc.Driver。在这里通过下拉条,我们可以看到JMeter支持MySQL、Oracle、SQL Server、SQLite等多个主流的数据库。
- Username为数据库的用户名:root。
- Password为数据库的密码:123456。
2)右键点击循环控制器,在弹出菜单中选择“添加->取样器->JDBC Request”。如图27进行设置。
图27 JDBC Request
- Variable Name of Pool declared in JDBC Connection Configuration中的设置的字符串必须同JDBC Connection Configuration中的Variable Name for create pool保持一致,即:data_ebusiness。
- Query Type选择:Select Statement。下面输入查询语句:select username,password
from user;。
- Result variable name随便起一个名字:list。
- 其他使用默认值即可。
3)运行后,在查看结果树中获得。
代码语言:javascript复制list=[{password=654321, username=jerry}, {password=123456, username=cindy},
{password=zxcvb, username=peter}, {password=knyzh158, username=linda},
{password=qwert, username=susan}]
下面我们都过对变量list进行提取获得用户名和密码。 4)右键点击循环控制器,选择“添加->后置处理器->正则表达式提取器”。把它拖到JDBC Request下面。按照图28进行设置。
图28 通过MySQL获取用户名和密码
- 修改名称为:通过MySQL获取用户名和密码。
- Apply to:选择JMeter Variable Name to use:list
- 引用名称为:pram。
- 正则表达式为:{password=(.?), username=(.?)}。
- 模板为:12,表示正则表达式中有2个参数。
- 匹配数字为:0。不是随机获得匹配项。
- 缺省值为:NULL。
5)进入商品列表HTTP请求元件,用户名输入:{pram_g2},密码输入:{__digest(SHA-256,${pram_g1},,,)}。 6)运行,结果正常。检查每一个变量pram,从参数list中随机获取值。 检查一下调试取样器中的变量pram参数。
代码语言:javascript复制pram=qwertsusan
pram_g=2
pram_g0={password=qwert, username=susan}
pram_g1=qwert
pram_g2=susan
关于JDBC 连接设置和JDBC Request我们将在第5.4-2节和第5.5-1节中详细介绍。 到此,建立登录功能的接口测试代码完毕,保存脚本为ebussines_interface.jmx。如图29所示。
图29 ebussines_interface.jmx
图30 ebussines_login.jmx
然后在“CSV Data Set Config参数化”或“JDBC参数化”保留一个(我这里保留“CSV Data Set Config参数化”);“登录响应断言”或“登录BeanShell断言”保留一个(我这里保留“登录响应断言”);“商品列表信息响应断言”或“商品列表BeanShell断言”保留一个(我这里保留“商品列表BeanShell断言”);去掉商品列表(new)HTTP请求及其下面的子节点。保存为ebussines_login.jmx后保证运行正常。如图30所示。