百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

jmeter DDT数据驱动性能测试之 jdbc实战

wxin55 2024-11-20 22:42 7 浏览 0 评论

前置工作

需要将jdbc的jar放置在jmeter的lib文件夹中,重启jmeter,此时,jmeter就可以写jdbc请求了

添加 配置元 件 > setup 线程组 >JDBC Connection Configuration

  1. 填写数据库的:ip、port、dbname、user、password、pool、字符集 、驱动类.....
  2. variable name for created pool: 自定义一个线程池变量名 为mysqlpool (规则: 字母、数字、下划线)
  3. 配置database Connection Configuration

不同的数据库 url 写法不一样: mysql jdbc:mysql://serverip:port/dbname

  • mysql:com.mysql.jdbc.Driver
  • mysql8驱动:com.mysql.cj.jdbc.Driver

添加线程组> jdbc request

连接池: 一定要与JDBC Connection Configuration中配置的连接池名称要一致,

SELECT id,mobile,gqid, token FROM cb_account
where `password` = 'e10adc3949ba59abbe56e057f20f883e' AND LENGTH(mobile)=11
LIMIT 100 OFFSET 1000
 查询手机号等于11位 从1000行开始查询100条数据

query type包含:select statement 、 update statement、 prepared select statement 、 prepared update statement

使用jmeter导出数据库中的数据

添加保存响应到文件组件

填写文件名称前缀

  • 勾选: Don't add number to prefix
  • 勾选: Don't add content type suffix

运行脚本, 保存文件,在jmeter的bin文件夹下

数据合并,得到多次数据的合并的结果

现在遇到一个问题,就是反复执行,都是覆盖原来的文件,永远都只得到1份数据,没有把多次请求的数据合并,想要得到多次数据的合并的结果,还需要手工进行拼接、

需要使用sqllite数据库 -- SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎,不需要安装

sqlite的jar包,放到jmeter的lib文件夹,重启jmeter

Connection Configuration配置:

  • url: jdbc:sqlite:自定义一个dbfile文件名.db
  • class: org.sqlite.JDBC
  • user\password: 不需要填写

脚本执行之后,发现,在jmeter的bin文件夹下面有一个db文件

从mysql查询数据写入到sqlite数据库

从mysql查询数据并定义接受数据的变量

使用循环控制器取出数据

引用变量并指定类型

循环控制器中指定循环次数为,查询mysql的数据条数,就可以将从mysql查询的数据全部导入到sqllite中

从sqlite读取文件保存到当前文件

保存成功的数据

目前为止,从项目的mysql数据库中,获取数据,保存了两份数据

  • 1份是在sqlite数据库中, =====DDT数据?
  • 1份txt文件中 =====你可以去做最传统的csv数据文件设置的原始数据文件份数据、

循环控制器从sqlite 获取10个用户变量

设置属性到全局


设置一个计数器,然后调用属性

调用属性

执行,这样就可以从sqlite读取数据并直接请求测试接口了

相关问题

  • Q:数据库中的这份数据,是否可以用于性能测试
  • A:如果sqlite数据库中的这份数据可以用于性能测试,

  • Q:设置属性,我需要设置n多个属性,这n多个属性是否占用资源,与csv比较有什么有优劣?
  • A:如果设置2w个,是不是就要2w个属性 要占用资源 读写csv文件,是不是 要大量的磁盘IO(换入换出操作)

Q:保存响应到文件,可以直接保存为csv文件吗?

A:默认情况,保存文件,用\t进行列分隔,所以,保存文件,txt,xlsx, 不能为csv,因为csv是用逗号分隔


Q:如果我一定要用csv文件怎么办? 取舍,放弃txt,xlsx 怎么做? jmeter.properties

A:jmeter.save.saveservice.default_delimiter


Q:现在的数据来源是项目的数据库中来的,有没有其他方式生产账号?

A:先调用注册接口,同时,写一份到本地sqlite数据库中。

相关推荐

ES6中 Promise的使用场景?(es6promise用法例子)

一、介绍Promise,译为承诺,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大在以往我们如果处理多层异步操作,我们往往会像下面那样编写我们的代码doSomething(f...

JavaScript 对 Promise 并发的处理方法

Promise对象代表一个未来的值,它有三种状态:pending待定,这是Promise的初始状态,它可能成功,也可能失败,前途未卜fulfilled已完成,这是一种成功的状态,此时可以获取...

Promise的九大方法(promise的实例方法)

1、promise.resolv静态方法Promise.resolve(value)可以认为是newPromise方法的语法糖,比如Promise.resolve(42)可以认为是以下代码的语...

360前端一面~面试题解析(360前端开发面试题)

1.组件库按需加载怎么做的,具体打包配了什么-按需加载实现:借助打包工具(如Webpack的require.context或ES模块动态导入),在使用组件时才引入对应的代码。例如在V...

前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?

Promise的finally方法是一个非常有用的工具,它无论Promise是成功(fulfilled)还是失败(rejected)都会执行,且不改变Promise的最终结果。它的实现原...

最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式

看了全网手写Promise的,大部分对于新手还是比较难理解的,其中几个比较难的点:状态还未改变时通过发布订阅模式去收集事件实例化的时候通过调用构造函数里传出来的方法去修改类里面的状态,这个叫Re...

前端分享-Promise可以中途取消啦(promise可以取消吗)

传统Promise就像一台需要手动组装的设备,每次使用都要重新接线。而Promise.withResolvers的出现,相当于给开发者发了一个智能遥控器,可以随时随地控制异步操作。它解决了三大...

手写 Promise(手写输入法 中文)

前言都2020年了,Promise大家肯定都在用了,但是估计很多人对其原理还是一知半解,今天就让我们一起实现一个符合PromiseA+规范的Promise。附PromiseA+规范地址...

什么是 Promise.allSettled()!新手老手都要会?

Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的pr...

前端面试-关于Promise解析与高频面试题示范

Promise是啥,直接上图:Promise就是处理异步函数的API,它可以包裹一个异步函数,在异步函数完成时抛出完成状态,让代码结束远古时无限回掉的窘境。配合async/await语法糖,可...

宇宙厂:为什么前端离不开 Promise.withResolvers() ?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.为什么需要Promise.with...

Promise 新增了一个超实用的 API!

在JavaScript的世界里,Promise一直是处理异步操作的神器。而现在,随着ES2025的发布,Promise又迎来了一个超实用的新成员——Promise.try()!这个新方法简...

一次搞懂 Promise 异步处理(promise 异步顺序执行)

PromisePromise就像这个词的表面意识一样,表示一种承诺、许诺,会在后面给出一个结果,成功或者失败。现在已经成为了主流的异步编程的操作方式,写进了标准里面。状态Promise有且仅有...

Promise 核心机制详解(promise机制的实现原理)

一、Promise的核心状态机Promise本质上是一个状态机,其行为由内部状态严格管控。每个Promise实例在创建时处于Pending(等待)状态,此时异步操作尚未完成。当异步操作成功...

javascript——Promise(js实现promise)

1.PromiseES6开始支持,Promise对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示。简单说就是处理异步请求的。之所以叫Promise,就是我承诺,如果成功则怎么处理,失败怎...

取消回复欢迎 发表评论: