首页 > 数据库 >第八节 JMeter基础-高级登录【数据库数据驱动】

第八节 JMeter基础-高级登录【数据库数据驱动】

时间:2024-07-19 19:07:29浏览次数:8  
标签:变量名 数据库 第八节 sqlusername JDBC 取样器 序号 JMeter

声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改。

背景:获取数据库用户表中的数据进行登录接口测试。
思路

  • 引用jar包【测试计划】。
  • 设置数据库的连接信息,取变量名db1--数据源【配置元件】。
  • 数据取样器引用数据源,填写查询sql,定义用户名密码变量名【取样器】。
  • 循环登录场景【循环控制器】:计数器、拼接变量。

1.配置

(1)下载

夸克网盘
链接:https://pan.quark.cn/s/934385c13d1f
提取码:j12w

(2)Navicat直接解压即可

 

2. 认识JMeter

(1)配置元件JDBC Connection Configuration

  一个数据库连接池配置。一个测试计划可以有多个JDBC Connection Configuration,但是可以通过创建池的变量名称来区分开来。

(2)取样器【JDBC Request

  主要是向数据库发送 JDBC 请求(sql 语句),并获取返回的数据集。需要和数据库连接池配置(JDBC Connection Configuration)一起使用。

(3)配置元件【计数器

  循环递增生成数字,可以在线程组任意地方添加计数器。

(4)配置元件【调试取样器

  生成一个包含JMeter变量或属性值的样本,并且这些值可以在组件【查看结果树】的响应窗格中看到。

 

3.【JDBC Connection Configuration】

(1)引用MySQL的jar包

  点击【测试计划】点击【浏览】,选择【mysql-connector-java-5.1.48-bin.jar】。

(2)新建【JDBC Connection Configuration】

  线程组【右击】【添加】【配置元件】【JDBC Connection Configuration】

(2)设置【JDBC Connection Configuration】

① Variable Name for created pool:创建池的变量名称:db1。需要定义一个变量名来区分每个数据库连接池,一个线程组可以有多个连接池,所以每个连接池变量名需唯一(在后面JDBC Request时需要用到)。

② Database URL:数据库连接URL,本次配置:jdbc:mysql://商城IP:端口/数据库名

③ JDBC Driver class:数据库驱动,下拉选择:com.mysql.jdbc.Briver

④ Username:数据库登录用户名

⑤ Password:数据库登录密码

 

4.【JDBC Request】

(1)新建【JDBC Request】

线程组【右击】【添加】【取样器】【JDBC Request】

(2)设置【JDBC Request】

① Variable Name of Pool declared in JDBC Connection Configuration:数据库连接池配置的名称:db1。

② Query Type:sql 语句的类型,这里选择Select Statement。

③ Query:SELECT username,pwd FROM sxo_user LIMIT 5

④ Variable names:保存sql语句返回查询结果字段、用,分隔、后面登录设置参数时需用到:sqlusername,sqlpwd。

(3)查看结果树

 

5.调试取样器

在开发脚本的时候调试用的:添加调试取样器后在查看结果树中能看到在脚本中所有参数化变量所取的值,这样有利于排错。右击整个线程组,新建【调试取样器】。

调试经历:设置好【JDBC Connection Configuration】与【JDBC Request】后,就可以新建【调试取样器】与【查看结果树】查看执行结果。

(1)新建【调试取样器】

【右击】【添加】【取样器】【Debug Sampler】

(2)【查看结果树】

通过结果总结JMeter读取数据库表中的数据,是通过【变量名_序号=值】的方式依次读取,最后再通过【变量名_#=总数】的方式给出读取的总次数

 

6.【HTTP请求默认值】

  养成习惯,把多个接口访问同一个服务器地址提取出来,设置http请求默认值。

 

7.【循环控制器】

(1)新建【循环控制器】

  右击【线程组】【添加】【逻辑控制器】【循环控制器】

(2)配置【循环控制器】:

  ① 循环次数:${sqlusername_#}

    由于这次是从数据库表中读取数据,而读取数据的方式是通过【变量名_序号】的形式。而这里还有一个特例,就是【变量名_#】的值统计了总数,所以循环次数是通过【变量名_#】取值获取:${sqlusername_#}

 

8.【计数器】

由于是从数据库表中读取数据,且通过【变量名_序号】的形式,所以这里还需要【计数器】来保存【序号】,这个序号是为了【登录】HTTP请求时给参数赋值需要用到。

sqlusername_1=XXX

sqlusername_2=XXX

... ...

sqlusername_#=5(总数)

(1)新建【计数器】

在【循环控制器】层级下【添加】【配置元件】【计数器】

(2)设置【计数器】

① Starting Value:初始值,默认为0,long整型。数据库读取是从序号1开始,这里设置:1。

② 递增:1。

③ Maximum value:同【循环控制器】一样,设置:${sqlusername_#}

④ 引用名称:自定义一个变量名称,设置:n,后面【登录】HTTP请求会用到。

 

9.HTTP请求【登录】

(1)新建【HTTP请求】

  在【循环控制器】层级下新增【登录】

(2)设置【HTTP请求】

① 名称:登录。

② 请求方法:选择POST。

③ 路径:?s=api/user/login&application=app&application_client_type=weixin。

④ 参数accounts,值:${__V(sqlusername_${n})}

参数取值方式:一般通过 ${变量名} 的方式就可以参数取值成功,但是这次变量名不同,它是由变量名拼接序号【变量名_序号】的方式而来的变量名,不能通过${变量名_序号}的方式取值,需先通过__V()函数把变量名跟序号拼接在一起,然后再通过${}来进行取值

第一步【拼接】:__V(变量名_序号)==__V(sqlusername_${n}),拼接的才是变量名的一个整体。注意:这里是两个下划线_连在一起__,而不是一个下划线_。

第二步【取值】:${第一步}==${__V(sqlusername_${n})}

正确的写法:${__V(固定变量名_${序号})},例如:${__V(sqlusername_${n})}。

错误的写法:${_V(固定变量_${序号})}、${__V(固定变量_序号)}、${_V固定变量_${序号}}、__V(固定变量_${序号})等等。

⑤ 参数pwd,值:123456。(数据库密码加密显示,直接读取还需要解密,先不管。测试账号密码基本上是123456)

⑥ 参数type,值:username。

(3)设置【断言】

 

10.查看结果树

(1)查看【查看结果树】

标签:变量名,数据库,第八节,sqlusername,JDBC,取样器,序号,JMeter
From: https://www.cnblogs.com/duguxiangyao/p/18312165

相关文章

  • 【接口】接口+jmeter测试问题汇总
    【问题一】接口返回405【时间】2024/7/19【解决】HTTP405错误(MethodNotAllowed)表示客户端尝试使用了服务器不支持的方法来访问资源【问题二】给所有接口设置统一的域名?【时间】2024/7/19【解决】添加HTTP请求默认值,只能配置除请求头之外的数据【问题三】http的请求默......
  • 20240719数据库关联查询、条件查询
    mysql关联外键查询商品表和图片表是分开的,用一张商品图片表关联起来了。查询商品表所有字段和图片信息。其余的,商人id、区域id、分类id都是直接关联,没有中间表SELECTp.id,p.name,p.price,p.unit,f.file,p.description,p.is_on_sale,p.......
  • 基于Java和MySQL的数据库优化技术
    基于Java和MySQL的数据库优化技术大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何基于Java和MySQL进行数据库优化,提升系统的性能和稳定性。我们将从查询优化、索引使用、事务管理以及连接池配置几个方面来介绍具体的优化技术。1.查询......
  • oracle数据库状态查询
    oracle数据库状态查询(表空间,表空间利用率,是否自动扩展,IOPS,MBPS,数据库总大小)排除了('SYSAUX','USERS','SYSTEM','UNDOTBS1')结果示例--查询用户自定义表空间的使用信息WITHuser_tablespacesAS(SELECTDISTINCTtablespace_nameFROMdba_segmentsWHERE......
  • 数据库的备份和恢复
    四、数据库的备份和恢复4.1备份的目的:备灾。(防止数据丢失)在生产环境中,数据的安全性非常重要。造成数据丢失的原因:1、程序出错2、人为的问题3、磁盘的故障备份的分类:物理备份:对磁盘或者对文件直接进行备份。**冷备份:**脱机备份,先把指定的程序关闭然后对资料进行备......
  • 使用Java和JPA构建健壮的数据库应用
    使用Java和JPA构建健壮的数据库应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨如何使用Java和JPA(JavaPersistenceAPI)来构建健壮的数据库应用。JPA是JavaEE规范的一部分,用于对象关系映射(ORM),简化了数据库操作和数据管理。1.JPA基础......
  • java比较mysql两个数据库中差异
    java对比两个库之间差异packagecom.ruoyi.shht;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.tex......
  • PG夜话(第20期):数据库老陈、德哥、快立方华总,聊一聊数据库内存管理
     PostgreSQLPG夜话(第20期):数据库老陈、德哥、快立方华总,聊一聊数据库内存管理(PG夜话,CUUG陈卫星,与数据库大伽一起聊PG数据库相关的话题) 老陈:“数据库内存管理是永远不变的话题,本期分享pg&oracle内存管理...”德哥:“DuckDB&PG的内存管理” 时间:07月20日19:30直播地址:......
  • idea内置数据库DataGrip + 多表操作sql语句
    多表操作:一对多(多对一),一对一,一对多可以通过物理外键实现,但实际上更推荐使用逻辑外键以下均为物理外键使用方法--=====================================多表设计================================---------------------一对多职位与员工--员工子表createta......
  • 打破僵局:深度解析数据库死锁的策略与实践(专家篇)
    在多任务操作系统和数据库管理系统中,死锁是一个常见问题,它发生在两个或多个进程/线程因争夺资源而相互等待,导致系统资源无法继续执行。有效地检测和预防死锁对于确保系统稳定性和提高系统性能至关重要。本次探讨不同的死锁检测与预防策略,以及如何在实际应用中实现这些策略......