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'>

【转】学习使用Jmeter做压力测试(三)--数据库测试的更多相关文章

  1. 学习使用Jmeter做压力测试(一)--压力测试基本概念

    学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...

  2. (转)学习使用Jmeter做压力测试(三)--数据库测试

    数据库测试 JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本. 根据脚本,JMeter可通过线程组来模拟真实用户对Web ...

  3. (转)学习使用Jmeter做压力测试(一)--压力测试基本概念

    一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...

  4. 【转】学习使用Jmeter做压力测试(二)--压力测试的实施

    JMeter测试步骤: 1.建立测试计划 2.添加线程组 3.添加HTTP请求 4.增加监听器 5.执行测试计划 6.根据JMeter提供的报告分析结果 一.目标 测试访问目标服务器网站首页的每秒查询 ...

  5. 【转】学习使用Jmeter做压力测试(一)--压力测试基本概念

    一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...

  6. 学习使用Jmeter做压力測试(一)--压力測试基本概念

    一.性能測试的概念         性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...

  7. 使用JMeter做压力测试

    使用JMeter做压力测试 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter 运行bin/jmeter.bat ...

  8. 学习总结——JMeter做http接口功能测试

    JMeter对各种类型接口的测试 默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59):本地配好了JMeter ...

  9. 学习总结——JMeter做http接口压力测试

    JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做 ...

随机推荐

  1. Hypernetes简介——真正多租户的Kubernetes Distro

    http://www.dockone.io/article/838 Hypernetes是一个真正多租户的Kubernetes Distro. Hypernetes在Kubernetes基础上增加了多 ...

  2. extundelete实现Linux下文件/文件夹数据恢复!

    我用的是Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel. 这里用:yum install e2fsprogs ...

  3. cmd 导出 SQLite数据库

  4. Ajax基础(五)--封装库

    jQuery ajax请求的基本语法: 一.封装为对象: ajax.txt代码: {"id":"102","username":" ...

  5. Tavas and Karafs 二分+结论

    二分比较容易想到 #include<map> #include<set> #include<cmath> #include<queue> #includ ...

  6. vuejs,angularjs,reactjs介绍

    1.https://www.zhihu.com/question/263782718/answer/274623434 (Vue 除了SPA(单页面应用)还适用于什么类型网站?) 而一个项目采用什么前 ...

  7. python面向对象编程 继承 组合 接口和抽象类

    1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均用点来访问自己的 ...

  8. elasticsearch负载均衡节点——客户端节点 node.master: false node.data: false 其他配置和master 数据节点一样

    elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: false node. ...

  9. QT延时方法

    (转自:http://blog.sina.com.cn/s/blog_613cfe940100kacm.html) 1. void sleep(unsigned int msec){    QTime ...

  10. react-redux: async promise

    1.the simple sample action: 事实上,只是返回个一个至少包含type的对象{ },用于reducer接收. import {RECEIVE_DATA} from " ...