JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本。根据脚本,JMeter可通过线程组来模拟真实用户对Web服务器做压力测试。本文描述使用JMeter进行数据库测试的过程。创建测试计划,模拟并发用户发送SQL请求到数据库。测试数据库。
性能测试的目标是找到系统的性能瓶颈。本文将通过构造测试场景,完成对数据库的测试。
场景:
1.单用户: a.SQL语句优化; b.数据库约束检查; c.分页查询;
2.并发用户: a.数据库连接池、WEB线程池、数据库死锁;
步骤:
(数据库)测试计划:
1.添加并发用户:
添加线程组(Thread Group),修改名称为JDBC Users。设置线程数为5,循环次数为2。其他配置项不变。
2.添加JDBC请求
2.1.选中线程组,右键 添加->配置元件->JDBC Connection Configuration。其实,这个就是通过JDBC连接数据库的配置文件。
修改 DataBase Connection Configuration 的配置:
Database URL:jdbc:mysql://localhost:3306/jmetertest
JDBC Driver class:com.mysql.jdbc.Driver
Username:username
Password:passwd
Variable Name:mysql 连接配置名在测试计划中是唯一的,后面会与JDBC请求绑定。
2.2.选中线程组,右键添加->采样器(Sampler)->JDBC Request。这个就是通过JDBC向数据库发送的请求。
修改:
Variable Name:mysql 这个和数据库连接配置(JDBC Connection Configuration)中的配置名是一致的,代表一种对应关系。即我的这个JDBC请求是要通过名为mysql的
数据库连接配置文件来向数据库发送的。
Query:SELECT id,name,sex FROM users WHERE name='lisi'
3.添加监听器用于查看/存储测试结果
选中线程组,右键添加->监听器->查看结果树。
选中线程组,右键添加->-监听器->聚合报告。
选中测试计划,右键添加->监听器->图形结果。
以上监听器用来查看、保存测试结果。
说明:在点击 “运行”之后,若在结果树看到红色的 JDBC Request 或是 聚合报告中Error一列非零。则说明测试执行有错误。
查看结果树,取样器结果页签,找到 Response message 信息,提示的就是错误原因。
比如:no suitable driver found for jdbc 。说明JDBC驱动(我连接的是mysql数据库)有问题。
查看数据库版本为 5.1.30。网上找到mysql-connector-java-5.1.30-bin.jar。复制到jmeter主目录的lib子目录下,然后在测试计划页最下方添加Library即可解决此问题。
结果分析:
我在实际工作中很少接触数据库测试。所以也是摸着石头过河。
接触过一例数据库假死的问题,原因是开发写的SQL语句不严谨造成的。比如:SELECT * FROM user; 看着语句好像没什么,但是这表里面有上千万条数据。
在WEB页面是只有主管级别的用户才可以操作执行的,但是一执行的话WEB就进入假死状态。大约30分钟才结束这种状态,实际是开发SQL语句的问题。多加几个限制条件
就好了。其实,主管级别的用户是有这个查询的权限,但都是按条件查,实际不会做查询全部用户的操作。
注:
0.5pt;font-family:Arial;color:black'>