0


Day40 JMeter的使用(下)

系列文章目录

Day01 软件测试基础总结

Day02 测试用例知识点总结(上)

Day03 测试用例知识点总结(下)

Day04 禅道-从安装到卸载

Day05 MySql的基础使用

Day06 MySql知识点总结

Day07 MySql知识点再总结与多表查询

Day08 redis的基础知识

Day08 VMware的安装、Linux系统安装和Linux基础命令

Day09 Linux常用命令总结

Day10 Linux环境部署和项目构建

Day11 shell脚本基础知识

Day12 接口和协议

Day13 Postman的使用

Day13 Windows环境下的JDK安装与Tomcat的启动

Day14 jenkins部署

Day15 jenkins的简单使用

Day16 charles的基本使用

Day17 考试

Day18 考试

Day19 Fiddler的简单使用

Day20 Python基础

Day21 python 语句基础

Day22 Python数据类型(上)

Day23 Python数据类型(下)

Day24 Python函数

Day25 Python的文件操作和异常处理

Day26 Python面向对象

Day27 Python的部分算法

Day28 单元测试 unittest

Day29 单元测试 pytest

Day30 接口测试requests

Day31 Web端自动化基础

Day32 Web自动化进阶

Day33 PO模型

Day34 移动端测试(上)

Day35 移动端测试(下)

Day36 移动端自动化(上)

Day37 移动端自动化(下)

Day38 性能测试理论

Day39 JMeter的使用(上)

Day40 JMeter的使用(下)



前言


一、JMeter直连数据库

使用场景:

1.用作请求的参数化(登录使用的用户名与密码直接从数据库中提取)

2.作为结果的断言(如购物车下单,检查接口返回的订单号,是否与数据库中的一致)

3.清理垃圾数据(添加商品(商品编号不能重复),再执行该脚本不能成功,需要在下次执行前删除该商品数据)

4.准备测试数据(通过数据库来准备大量的性能测试数据)

1.配置

1.下载驱动

首先需要jdbc的jar包,下载官网

2.添加MySQL的驱动jar包

方式1:在测试计划面板点击“浏览”按钮,将jdbc驱动添加进来

方式2:将MySQL的驱动jar包放在lib/ext目录下,重启jmeter

3.配置数据库链接信息

位置:测试计划-->线程组-->配置元件-->JDBC Connection Configuration

Variable Name:连接池名称。JDBC Request会通过此名称来获取连接池的配置,名称可以随意填写,但是最好具体实际的业务意义,方便理解和记忆。
其他的可以默认,可以根据实际情况来调节优化性能。
Database URL:数据链接url,格式:jdbc:mysql://localhost:3306/host
注释:数据库的ip地址+端口/数据库名(查询数据库端口号show global variables like 'port')
jdbc:mysql://127.0.0.1:3306/mydb2?serverTimezone=UTC& allowMultiQueries=true
JDBC Driver Class:驱动器名称。固定:com.mysql.jdbc.Driver
Username:用户名
Passowrd:密码
添加一个JDBC Request。

位置:右键线程组【添加】-【Sampler】-【JDBC Request】


Updata Statement:更新语句
支持测试非select语句,并且支持测试多条,若其中夹杂select语句,自动忽略,若第一条语句为select语句,报错
Callable Statement:所有语句
只要语法正确,任何语句,再多的条数都能支持
Prepared Select Statement:预编译查询语句。(长时间执行效率更高,支持占位符)
Prepared Update Statement:预编译更新语句。(同上)
Commit (立即提交)Rollback(回滚)

Parameter values:参数值。参数化sql语句中的值
Paramter types:参数类型。数据库的参数你可以去查看一下。这里是varchar类型。
Variable names:变量名字,也就是将筛选出来的值放在变量里面。例如这三列数据分为放在变量:A,B,C中(实际操作中命名一定要有实际意义)。
Result variable name:存储变量名。将整个结果存储在变量中。取名:rs
Query timeouts :超时时间。

二、逻辑控制器

可以按照设置的逻辑控制取样器的执行顺序执行脚本

常见逻辑控制器:

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

1.if控制器

作用:if控制器来控制它下面的测试元素是否运行
位置:测试计划-->线程组-->逻辑控制器-->如果(if)控制器

if控制语句参数有两种形式:

1.js语句

2.函数

2.循环控制器

作用:通过设置循环次数,来实现循环发送请求
位置:测试计划-->线程组-->逻辑控制器-->循环控制器

控制的作用域不同:线程组控制的是线程组下的所有的请求,循环控制器是该控制器下的所有请求
如果线程组循环次数为M,循环控制器循环次数为N

  • 循环控制器下的HTTP请求运行:M*N次
  • 线程组下的其他HTTP请求运行:M次

3.ForEach控制器

作用:一般和用户定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量值
位置:测试计划-->线程组-->逻辑控制器-->循环控制器

三、定时器

1.同步定时器

定义:同步定时器:堵塞线程(积累一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力
提示:在jmeter中叫做同步定时器,在loadrunner中叫集合点
位置:测试计划-->线程组-->http请求-->定时器-->Synchronizing Time

2.常数吞吐量定时器

作用:让jmeter按指定的吞吐量执行,以每分钟为单位
位置:测试计划-->线程组-->http请求-->定时器-->Constant Throughput Time

适用场景:

需要被指定的吞吐量发送请求时,可以使用常数吞吐量定时器
规定好每个用户每分钟发送的请求数

QPS单位为次每秒,而吞吐量单位为次每分钟,注意需要换算单位

同样也需要注意线程数量QPS*60/线程数

3.固定定时器

作用:固定定时器:定时器(Timer)负责定义请求之前添加延迟间隔

位置:测试计划-->线程组-->http请求-->定时器-->固定定时器

四、分布式

以为JMeter能够并发的用户数量有限,用户数超过单台电脑的极限时,可以使用分布式来分摊用户数量,以达到测试项目的目的

1.原理

JMeter分布式测试时,选择其中一台作为控制机(Controller),其他机器作为代理机(Agent)。

  1. 执行时,控制机会把脚本发送到每台代理机上
  2. 代理机拿到脚本后就开始执行,代理机执行时不需要启动JMeter界面,可以理解它是通过命令执行的。
  3. 执行完成后,代理机会把结果传回控制机,控制机会收集所有代理机的信息并汇总。

分布式注意事项:

  • 所有的控制机,代理机,服务器都在同一个网络上
  • 所有机器的jmeter和Java版本都必须一致
  • 关闭RMI中的SSL开关

2.JMeter分布式的配置和执行

1.修改bin/jmeter.properties文件

代理机:修改服务端口:保证每个代理机都能正常启动,如果是在同一台机器上演示需要使用不同的端口,多台机器可以不修改。

控制机:配置代理机远程地址:配置每个代理的IP+端口,多个代理机之间用 “,” 连接

代理机设置jmeter.properties文件

启动代理机jmeter-server.ba

控制机设置jmeter.properties文件

启动控制机jmeter.bat

2.执行

代理机(命令行方式启动):进入bin目录,运行jmeter-server.bat文件,启动JMeter

控制机(界面方式启动):运行jmeter.bat文件,启动JMeter

                                    选择菜单:运行>>远程启动/远程全部启动

五、JMeter监听

1.聚合报告

作用:聚合报告:收集性能测试结束后,系统的各项性能指标:如响应时间,并发量,吞吐量,错误率等
位置:在线程组>>添加>>监听器>>聚合报告


lable:对应请求的名称#Samples(样本):各请求发出的数量Average:平均响应时间(单位:毫秒)Median:中位数,也就是50%用户的响应时间90%Line:90%用户的响应时间Min:最小响应时间Max:最大的响应时间Error%:请求的错误率Throughput:吞吐量,默认情况下表示每秒完成的请求数,一般认为它是tpsRecived KB/Sec:每秒从服务器端接收到的数据量,每秒接送/发送的千字节数

2.查看结果树

作用:察看结果树:收集性能测试结束后,接口的请求响应信息(请求url,请求参数,请求头,响应头,响应数据等)

位置:在线程组>>添加>>监听器>>察看结果树


通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过Thread Name:线程组名称Sample Start: 启动开始时间Load time:加载时长Latency:等待时长Size in bytes:发送的数据总大小Headers size in bytes:发送数据的其余部分大小Sample Count:发送统计Error Count:交互错误统计Response code:返回码Response message:返回信息Response headers:返回的头部信息

3.html测试报告

作用:jmeter支持生成html测试报告,以便从测试计划中获得图表和统计信息

jmeter -n -t [jmx file] -l [result file] -e -o [html report folder]
eg: jmeter -n -t hello.jmx -l result.jtl -e -o ./report

参数参数描述-n非GUI模式执行JMeter-t [jmx file]测试计划保存的路径及.jmx文件名,路径可以是相对路径也可以是绝对路径-l [result file]保存生成测试结果的文件,jtl文件格式-e 测试结束后,生成测试报告-o [html report folder]存放生成测试报告的路径,路径可以是相对路径也可以是绝对路径

注意:result.jtl和report会自动生成,如果在执行命令时result.jtl和report已存在,必须先删除,否则在运行命令时就会报错

六、并发数计算方法

1.性能测试计算TPS

性能测试的TPS,大都是根据用户真实的业务数据(运营数据)来计算的

普通计算方式:TPS=总请求数/总时间

二八原则计算方法:TPS=总请求0.8/总时间0.2 (二八原则就是指80%的请求在20%的时间内完成)

总结:普通计算方式只能满足基本的要求,但是不能很好覆盖系统正常的使用情况,二八原则计算方法能满足系统对大多数情况下的应用

2.稳定性测试的并发量

根据业务运营数据的统计计算(通常用来做稳定性测试)
并发TPS=有效的请求数80%/有效的时间20%
当你的运营数据统计的越精确时,计算出的并发tps与实际的越来越接近

3.压力测试的并发量

并发TPS=峰值的请求数/峰值的时间*系数
满足峰值请求时间段内的负载量,系数取决于项目组对未来业务量的评估

七、性能监控

性能监控需要使用第三方插件,第三方插件的下载需要jmeter插件管理工具包’

1:官网下载管理工具jar包
2:将包管理工具jar包添加到jmeter的lib\ext目录下
3:重启jmeter,可以在选项下看到插件管理器

安装第三方插件:

1:打开plugins Manager插件管理器
2:选择Available Plugins,当前可用的插件
3:选择需要下载的插件(等待右方文本内容展示出来)
4:下载右下角的下载按钮,自动的完成下载,jmeter会自动重

1.阶梯式线程组

作用:阶梯线程组:作用是阶梯加压;图形界面显示运行状态
位置:测试计划-->线程组-->Concurrency Thread Group

2.Transactions per Second

作用:每秒完成事务数:作用是统计各个事务每秒钟成功的事务个数
位置:测试计划-->线程组-->监听器--> Transactions per Second

3.PerfMon资源监控

作用:用来监控服务器的性能资源指标的工具,包含cpu,内存,磁盘,网络等性能数据
位置:测试计划-->线程组-->监听器--> PerfMon Metrics Collector
注意:使用之前需要在服务器安装监听服务程序并启动

1.下载 ServerAgent-2.2.1.zip 压缩包

2.上传到服务器,并解压ServerAgent

3.启动,如果是windows运动startAgent.bat,如果是Linux运行startAgent.sh

4.启动这个工具后,jmeter的插件perfmon就可以收集服务端的资源使用率,并在jmeter中查看


总结


本文转载自: https://blog.csdn.net/lookout99/article/details/126923083
版权归原作者 lookout99 所有, 如有侵权,请联系我们删除。

“Day40 JMeter的使用(下)”的评论:

还没有评论