性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)

目录

一、JMeter直连数据库

1.1 准备工作

1.2 配置JDBC连接池参数

1.3 编写JDBC脚本

二、逻辑控制器

2.1 如果(if)控制器

2.2 循环控制器

2.3 ForEach控制器

2.3.1 ForEach控制器与用户定义的变量配合使用

​2.3.1 ForEach控制器与正则表达式配合使用

三、定时器

3.1 同步定时器 (Synchronizing    Timer)【集合点】

3.2 常数吞吐量定时器(Constant Throughput Timer)

四、JMeter分布式

4.1 分布式测试原理

4.2 分布式配置与运行

4.2.1 代理机(Agent)配置( Jmeter.property)

4.2.2 控制机(controller)配置( Jmeter.property)

4.2.3 分布式运行   

五、JMeter性能测试常用图表及并发数

5.1 插件下载与安装

5.1.1 插件安装

5.1.2 性能测试常用图表

5.1.3 基于jmeter客户端监控服务器硬件资源

5.2 并发数计算

六、JMeter测试报告

6.1 聚合报告

6.2 HTML报告


一、JMeter直连数据库

在软件测试工作中,连接数据库通常是为了校验数据。

1.1 准备工作

1)启动tpshop数据库

库名:tpshop2.0

表名:tp_goods

商品id字段:goods_id

商品名字段:goods_name

2)加载mysql的DBC驱动

方法1:在测试计划下方,点击浏览添加JDBC的jar包;

方法2:将JDBC的jar拷贝到lib目录,重启jmeter;

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第1张图片

1.2 配置JDBC连接池参数

添加方式:测试计划—>线程组—>(右键添加)配置元件—>JDBC Connection Configuration

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第2张图片

1.3 编写JDBC脚本

脚本编写步骤:以搜索指定商品,在返回结果中检查是否包含指定商品的ID的详情URL为例:

1)添加JDBC  Request请求

JDBC连接池名称:必须与“JDBC连接池”中的连接名一致

要执行sql语句

variable name中:写明要保存的数据的参数名

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第3张图片

2)添加HTTP请求--搜索请求

 参数为中文时,将参数写到下方参数位置,并勾选上"编码"

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第4张图片

3)添加断言

在响应断言中配置要检查的数据内容

注意:应用JDBC Requests查询出的结果时,需要加上索引(因为JDBC查询的结果保存为一个列表)

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第5张图片

二、逻辑控制器

控制脚本执行顺序

常用的逻辑控制器:

  • 如果(if)控制器
  • 循环控制器
  • foreach控制器

2.1 如果(if)控制器

if 控制器用来控制他下面的测试元素是否运行

添加方式:测试计划-->线程组-->(右键添加)逻辑控制器-->如果(if控制器)

案例:1)使用“用户定义的变量”,定义一个变量neme,name的值可以是“baidu”或者“itcast”;

2)根据name的变量值实现对应的访问网站

分析操作步骤: 

  • 添加线程组
  • 用户定义变量
  • 添加if控制器,判断name是否等于baidu
  • 添加HTTP请求,用来访问百度
  • 添加if控制器,判断name是否等于itcast
  • 添加http请求,用来访问传智播客
  • 添加结果查看树

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第6张图片

 第二种配置方法:

勾选上Interpret Condition as Variable Expression,判断条件需要使用jex13函数。(使用这个函数来进行判断时,Jmeter自身的执行效果要更高一些。

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第7张图片

2.2 循环控制器

通过设置循环次数,来实现循环发送请求

添加方式:测试计划-->线程组-->(右键添加)逻辑控制器-->循环控制器

案例:1)循环访问百度10次

操作步骤

1)添加线程组

2)添加循环控制器

3)添加http请求

4)添加查看结果树 

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第8张图片 思考:循环控制器与线程组循环次数对比

循环控制器只控制其子节点下的http请求,线程组对所有的请求都有效;

加入线程组循环次数为2次,循环控制器次数为3,则循环控制器下的请求执行次数为2*3=6次;

  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第9张图片
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第10张图片
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第11张图片

2.3 ForEach控制器

与用户定义的变量或者正则表达式提取器配合使用,循环读取用户定义的变量和正则表达式结果中的所有数据。

添加方式:测试计划-->线程组-->(右键添加)逻辑控制器-->foreach控制器

2.3.1 ForEach控制器与用户定义的变量配合使用

配置参数:

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第12张图片

案例:1)有一组关键字[hello,python,测试],使用用户定义的变量存储;

2)依次取出关键字,并在百度搜索,例如:https:www.baidu.com/s?wd=hello

操作步骤:

  • 新建线程组
  • 用户定义的变量
  • 添加foreach控制器
  • 添加http请求
  • 添加结果树查看结果

ForEach控制器结合用户自定义变量使用

添加用户自定义变量 

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第13张图片

添加 ForEach控制并配置

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第14张图片在ForEach下面添加HTTP请求:

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第15张图片

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第16张图片 2.3.1 ForEach控制器与正则表达式配合使用

案例:访问传智播客首页http://itcast.cn,获取首页中的地址信息,并全部保存下来,依次取出关键字,并在百度搜索:https://www.baidu.com/s?wd=地址1

1)添加HTTP请求,获取 http://itcast.cn首页中的地址信息;

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第17张图片

2) 通过正则表达式提取所有地址

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第18张图片

3)使用ForEach循环读取地址 

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第19张图片

4)读取到的地址输入百度请求 

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第20张图片

 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第21张图片

三、定时器

3.1 同步定时器 (Synchronizing    Timer)【集合点】

在JMeter中叫做同步定时器,在其他软件中又叫做集合点(比如lr)。收到请求后保证大量的请求在同一时间进行发送,形成绝对的并发量;

实现原因:设置同步定时器,有请求要发出时,同步定时器会暂缓请求发送,一直到积攒的请求书达到要求的数量时再将所有的请求同时发送出去,形成绝对的并发(更大的压力负载)。

案例:模拟100个用户同时访问百度首页,统计高并发情况下运行情况。

  • 配置一次运行20个用户,运行观察结果
  • 配置一次运行30个用户,运行观察结果

操作步骤:

  • 1)添加线程组
  • 2)添加HTTP请求
  • 3)添加同步定时器
  • 4)添加查看结果数
  • 5)添加监听器-聚合报告

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第22张图片

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第23张图片

3.2 常数吞吐量定时器(Constant Throughput Timer)

吞吐量:单位时间内服务器处理的请求数量;

介绍:

常数吞吐量计时器可以让JMeter以以固定的吞吐量向服务器发送HTTP请求(以每分钟的样本数为单位,而不是每秒)执行,判断服务器的处理能力。

添加方式:测试计划-->线程组-->HTTP请求-->(右键添加)定时器-->Constant Throughput Timer

案例:一个用户以20QPS(20次/s)的频率访问百度首页,持续一段时间,统计运行情况;

操作步骤:1)添加线程组,循环次数设置为永远

2)添加HTTP请求

3)添加常数吞吐量定时器

4)添加查看结果树

5)添加监听器--聚合报告 

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第24张图片

注意:常数吞吐量只是帮助达到性能测试负载压力要求,不代表性能有bug或者无bug。对于bug的分析需要通过响应时间来判断。      

四、JMeter分布式

4.1 分布式测试原理

分布式主要针对测试机而言;

分布式测试:当性能测试时需要模拟的负载(用户/请求)太高,一台测试机无法模拟,需要多台测试机一起来模拟达到要求的负载量,这就叫分布式。

在使用jmeter进行性能测试时,如果并发数比较大(比如项目需要支持10000并发),单台电脑的(CPU和内存)可能无法支持,这时可以使用JMeter提供分布式测试的功能。

原理:JMeter分布式测试时,选择其中一台作为控制机(controller),其他机器作为代理(Agent),即一个控制机加上多个代理机组成。

  • 控制机:只需要给代理及发送任务,接收代理机返回的数据统计做汇总展示。
  • 代理机:往服务器发送HTTP请求,并接受服务器响应,并对相应进行处理。
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第25张图片

分布式相关注意事项:

  • 测试机上所有的防火墙关闭;
  • 所有的控制机、代理机和被测系统都在同一个子网中;
  • 所有的控制机和代理机上安装的JDK和JMeter版本必须完全一致;
  • 关闭JMeter中的RMI SSL开关。

4.2 分布式配置与运行

4.2.1 代理机(Agent)配置( Jmeter.property)

1)Agent机上需要安装JMeter

  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第26张图片

2)修改服务端口--sever_port 代理机启动的端口,不冲突即可;

  • 非必须,如果在同一台机器上演示,需要使用不同的端口,如果是多台机器可不修改;
  • 修改步骤:打开bin/jmeter.propreteries文件,修改sever_port,比如sever_port=2001

3)将RMI SSI 设置为禁用

  • -打开bin/jmeter.propreteries文件,修改为:sever.rmi.ssl.disable=true

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第27张图片

4)运行Agent上的jmeter-server.bat文件,启动JMeter。

4.2.2 控制机(controller)配置( Jmeter.property)

1)修改JMeter的bin目录下jmeter.properties配置文件,修改remote_hosts;

  • 示例:remote_hosts=192.168.182.100:1099,192.168.182.101:1099;
  • ip和port是Agent机的IP以及自定义的端口,多台Agent之间用“,”隔开;

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第28张图片

2)将RMI SSI 设置为禁用

  • 打开bin/jmeter.propreteries文件,修改为:sever.rmi.ssl.disable=true
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第29张图片

4.2.3 分布式运行   

代理机:

  • 进入bin目录下,执行JMeter_server.bat
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第30张图片

控制机:

  • 进入bin目录下,执行JMeter.bat
  • 启动时,点击“运行”--“启动远程所有”控制代理机的运行
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第31张图片
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第32张图片

五、JMeter性能测试常用图表及并发数

5.1 插件下载与安装

5.1.1 插件安装

1 )安装插件管理器
  • Jmeter官网(http://jmeter-plugins.org/istall/install/)下载插件管理器Plugins-manager-1.3.jar
  • JAR包放入到lib\ext目录下
  • 重启Jmeter,可以在选项下看到Plugins Manager选项

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第33张图片

2 )安装指定的插件(需要安装的插件有: 3 Basic Graphs PerfMon Concurrency 5
Additional
  • 打开Plugins Manager插件管理器
  • 选择Available Plugins,当前可用的插件
  • 选择需要下载的插件(等待右方文本内容展示出来)
  • 下载右下角的下载按钮,自动的完成下载,Jmeter会自动重启 
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第34张图片

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第35张图片

5.1.2 性能测试常用图表

  • Concurrency Thread Group(阶梯线程组)

 添加方式:测试计划-->线程(用户)-->Concurrency Thread Group

注意:如果此路径下没有Concurrency Thread Group,则先在Plugins Manager中plugins manager->available plugins->搜索Custom Thread Groups插件->勾选->点击Apply Changes and Restart Jmeter 安装插件;

 注:配置添加一下插件:3 Basic Graphs 、5 Additional Graphs 、Custom Thread Groups、PerfMon (Servers Performance Monitoring)  将这几个插件都安装上,用的比较多。 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第36张图片

  • TPS:运行过程中的TPS统计 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第37张图片
  • Bytes Through Over Time:运行过程中的传输速率

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第38张图片

5.1.3 基于jmeter客户端监控服务器硬件资源

  • 1、下载安装包ServerAgent-2.2.3.zip
  • 2、解压缩安装包
  • 3、启动安装包中的执行文件:服务器windows启动startAgent.bat
  • 4Jmeter中添加插件,在监听器——perForm插件,并配置
  • 5、运行性能脚本,会自动监控  

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第39张图片

5.2 并发数计算

1)普通的计算方式:

  • TPS=总的请求数
  • 问题:对于同一天的时间内,不同的时间段,请求速率会有波动,这样计算会被平均掉,无法测试负载 高的情况;

2)二八原则: 

  • 核心:80%的请求数会集中在20%的时间内完成;
  • TPS = 总的请求数 *80% / 总的时间 * 20
  • 注意:二八原则的计算方法会比平均的计算方式更准确 

3)按照每天的具体业务数据进行计算(稳定性测试TPS

  • 当获取每天的具体业务统计数据时,就可以统计出业务请求集中的时间段作为有效业务时间;并统计有效业务时间内的总请求数;
  • TPS = 有效业务时间的总请求数 * 80% / 有效业务时间 * 20%

 4)模拟用户峰值业务操作的并发量:(压力测试TPS

  • 获取每天的交易峰值的时间段,及这个时间段内的所有请求的数量
  • TPS = 峰值时间内的请求数/峰值时间段 * 系数
  • 系数可以是:23610,由项目组自己觉得要达成的性能指标

 题目:某购物商城,经过运营统计,正常一天成交额为100亿,客单价平均为300,交易时间主要为10:00-14:00,17:00- 24:00,其中19:00-20:00的成交量最大,大约成交20亿。       

 需求分析:  

  • 稳定性分析
    • 有效的交易时间为10:00-14:00,17:00-24:00,一共为7个小时
    • 有效的请求数: 100e/300
    • 稳定性 TPS = 100e/300 * 80% / (11*3600*20%)
  • 压力分析
    • 峰值的交易时间为19:00-20:00,一共为1个小时
    • 有效的请求数:20e/300
    • 峰值TPS = 20e/300/3600 * 系数       

六、JMeter测试报告

6.1 聚合报告

测试计划-->右键-->监听器-->聚合报告

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第40张图片重点查看的指标:

响应时间:

观察当前最大最小的波动范围

  • 如果波动范围不大,,以平均响应时间作为最终的性能响应时间结果;
  • 如果波动范围很大,以 90% (经验)的响应时间作为最终性能响应时间结果;

错误率

吞吐量 

6.2 HTML报告

性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第41张图片执行步骤: 

  • bin目下执行上述命令
  • 等待脚本执行完成后,进行 report 文件夹下,打开 index.html ,可看到性能测试的详细数据
    统计。
  • 性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第42张图片         

    性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第43张图片性能测试工具JMeter---直连数据库、控制器、定时器、分布式、测试报告等功能介绍(第三篇)_第44张图片

你可能感兴趣的:(性能测试,测试工具,压力测试)