数据库测试

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语句的问题。多加几个限制条件

就好了。其实,主管级别的用户是有这个查询的权限,但都是按条件查,实际不会做查询全部用户的操作。

(转)学习使用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. [python学习] 语言基础—排序函数(sort()、sorted()、argsort()函数)

    python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 ls = list([5, 2, 3, 1, 4]) new_ls = sorted ...

  2. redis使用watch完成秒杀抢购功能

    Redis使用watch完成秒杀抢购功能: 使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表. 它的优点如下: 1. 首先选用内 ...

  3. Java 异常java.lang.IllegalArgumentException: Illegal group reference

    当字符串方法replaceAll()中替换字符含有特殊字符$如, String test = "<StreamingNo>abc</StreamingNo>" ...

  4. 配置Office 365单点登录摘要

    O365: 如果O365账号之前做过测试,则停用同步,强制删除已有用户涉及命令:Remove-MsolUser -UserPrincipalName zhang_san@company.cn (-Re ...

  5. numpy常用用法总结

    numpy 简介 numpy的存在使得python拥有强大的矩阵计算能力,不亚于matlab. 官方文档(https://docs.scipy.org/doc/numpy-dev/user/quick ...

  6. HTML第二本书学习后记

    1,换行标记<br>,不换行标记<nobr></nobr> 2,添加水平线 <hr> 3,插入特殊符号:   空格 &nbsp    " ...

  7. 【译】SQL Server索引进阶第八篇:唯一索引

    原文:[译]SQL Server索引进阶第八篇:唯一索引     索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就 ...

  8. wordpress取文章时间

    wordpress的时间处理, 取文章的本地时间用get_the_time('c'),其中c可以用“D, d M Y H:i:s"等替代. 取文章的UTC时间用get_post_time(' ...

  9. NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds

     Bugly:  Trapped uncaught exception 'NSRangeException', reason: 'NSMutableRLEArray objectAtIndex:eff ...

  10. iOS 面试题(三):为什么 weakSelf 需要配合 strong self 使用 --转自唐巧

    问题 继续回答昨天的问题第二问. 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: __weak typeof( ...