Jmeter性能测试 -3数据驱动实战

news/2024/10/30 15:33:56/

什么是数据驱动?

从数据文件中读取测试数据,驱动测试过程的一种测试方法。数据驱动可以理解为更高级的参数化。

特点:测试数据与测试代码分离;数据控制过程

好处:降低开发和维护成本,减少代码量,便于用力修改和维护

Jmeter数据驱动实战

环境

我在本地搭建了数据库【如果不会可以留言,我再出搭数据库的帖子】

新建了两个表

create table movies(id integer primary key, title text, director text, year integer, Length_minutes);
create table boxoffice(movie_id integer primary, rating integer, domestic_sale, international_sales);

然后在jmeter建立数据库的连接

可以看到,我在连接数据库的url上添加了

?useUnicode=true&characterEncoding=utf8

这么一句【myDatabase是我的数据库名】不加这句的话会报编码“255”错误。

然后添加JDBC Request,对movies表进行查询

执行可以看到结果树中输出了数据库查询到的数据

我们做如下需求:如果year>=2016,就说它是新电影,否则就判断为老电影。

分析

这里有多条数据,必然要用到循环控制器

有判断,要加如果控制器

循环的次数就是调试取样器里的rows_#

所以循环控制器里循环次数就写${rows_#}

还要加判断,即如果控制器,即:如果year>=2016,则执行,也就是说我们要先把每一行的year值取出来

所以我们需要加个BeanShell提取器

二获取列名那里不能写死,第一次循环取第0行,第二次循环取第一行,以此类推。

我们加一个计数器,来解决这个问题

然后就可以编辑那个BeanShell脚本了

vars.put("year_loop", vars.getObject("res").get(${count}-1).get("year").toString());

注意:1、js脚本获取数据从0开始,所以要减1;2、结尾必须加toString(),因为这里只能处理字符串类型的变量。

现在就可以写如果控制器了

注意:下面那两个选项都不能勾上,一旦勾上就执行不出结果。

然后我们在控制台输出

执行即可看到控制台输出。

整个过程目录结构

------------------

当然这只是一种办法,还有一种办法就是查询数据库的时候不查全部,只查year这个字段

select year from movies;

这样就不需要获取year的值那个BeanShell脚本来获取了,只需要修改if控制器,但是现在"如果"里判断还是需要一个变量,我们再来看一下调试取样器获得的数据库返回

分析一下就知道,"如果"控制器只要写

把想连接那个写进去点生成,生成了Missing open brace for subscript{count},)},把它放到如果控制器判断里即可

结构目录

执行后就看到

而且在控制台输出了3个

当然除了读数据库数据,数据驱动还可以写Excel读,那就不需要循环控制器了,而且把线程加到应用有线程数。相较而言,多线程执行速度会更快,因为循环控制器,说白了就是for循环,数据是一条一条的执行,而多线程则一次发多个请求。

建议大家如果没有经验可以自己操作一下,我在操作的过程中其实遇到很多问题,其实解决问题的过程就是学习的过程。


http://www.ppmy.cn/news/83120.html

相关文章

这6个超实用的图片素材网站,高清、免费,赶紧马住

推荐6个超实用的图片素材网站,高清无水印,绝对值得收藏! 1、菜鸟图库 https://www.sucai999.com/pic.html#?vNTYxMjky 网站主要是为新手设计师提供免费素材的,素材的质量都很高,类别也很多,像平面、UI、…

通过Python的speech_recognition库将音频文件转为文字

文章目录 前言一、音频准备二、音频声音三、格式转换四、音频转文字1.引入库2.定义音频路径3.创建一个Recognizer对象4.打开音频文件,将音频文件读入Recognizer对象5.尝试使用Google Web API将语音转换为文字6.转换结果 总结 前言 大家好,我是空空star&a…

redis高级篇一

redis 是多线程还是单线程 redis单线程的操作 主要是指redis的网路IO和键值对的读写是由一个线程来完成的,Redis在处理客户端的请求时,包括获取(socket 读),解析,执行,内容返回(so…

如何在Windows 11更新后解决C盘已满的问题?

Windows 11比Windows 10需要占用C盘更多的空间,在升级到Windows 11后,如果升级后出现问题,安装程序可以帮你退回到Windows 10。无论怎样,在升级到Windows 11后,系统会自动制作以前的数据的副本,这会占用大量…

Java面试知识点(全)-分布式和微服务-dubbo面试知识点

Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。 面试官问你如果这个都不清楚,那下面的就没必要问了。 官网:http://dubbo.apache.org 为什么要用Dubbo&#xff1f…

Java之旅(二)

Java安装 检查您是否在 Windows PC 上安装了 Java,请在开始栏中搜索 Java 或在命令提示符 (cmd.exe) 中键入以下内容:java -version 在 Windows 上安装 Java: 转到“系统属性”(可以在控制面板 > 系统和安全 > 系统 >…

Nginx使用账号nginx启动后后端Tomcat报错Broken pipe

背景:接到服务器安全问题整改要求,有基线问题需要修复,里面有nginx禁止使用root账号启动,需要修改成nobody或者nginx账号启动。 1、修改nginx.conf配置文件 我使用yum安装的nginx,目录是:/etc/nginx/ngin…

OBS 基础21 之 设置窗口

目录 一、设置窗口 1、打开设置窗口 1)、通过菜单 2)、通过面板上的 设置按钮