声明:本文所记录的仅本次操作学习到的知识点,其中商城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)查看【查看结果树】

第八节 JMeter基础-高级登录【数据库数据驱动】的更多相关文章

  1. 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作

    目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...

  2. 『动善时』JMeter基础 — 43、JMeter对数据库的查询操作

    目录 1.使用"用户自定义变量"实现参数化 2. 在SQL Query中使用占位符传递参数 (1)传递的参数值是常量 (2)传递的参数值是变量 3.Variables names参 ...

  3. 数据库基础 非关系型数据库 MongoDB 和 redis

    数据库基础 非关系型数据库 MongoDB 和 redis 1 NoSQL简介 访问量增加,频繁的读写 直接访问(硬盘)物理级别的数据,会很慢 ,关系型数据库的压力会很大 所以,需要内存级的读写操作, ...

  4. JMeter基础之--元件的作用域与执行顺序

    前面有介绍过jmeter的元件类别,对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了 ...

  5. jmeter 基础功能详解

    jmeter 基础功能详解 thread group:包含一组线程,每个线程独立地执行测试计划. sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求, ...

  6. 转 JMeter基础之--元件的作用域与执行顺序

    前面有介绍过jmeter的元件类别,对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了 ...

  7. jmeter压测mysql数据库

    jmeter连接并压测mysql数据库,之前一直想用jmeter一下测试mysql数据库的性能,今天偶然看到一篇博客,于是乎开始自己动手实践. 一.准备工作 1.安装好mysql数据库,可以安装在本地 ...

  8. mybatis关联查询基础----高级映射

    本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录 ...

  9. JMeter基础之一 一个简单的性能测试

    JMeter基础之一 一个简单的性能测试 上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测 ...

  10. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

随机推荐

  1. AI实战 | 手把手带你打造校园生活助手

    大家好,我是努力的小雨.最近,我开始将我的经验逐渐分享到B站,希望能够帮助大家通过扣子助手真正解决一些问题.最近有粉丝提出了一个需求,为了满足大家的期待,我已经制作了视频,详细介绍了这个助手的搭建思路 ...

  2. Json.Net Deserialize a Collection from BSON

    Deserialize a Collection from BSON (newtonsoft.com) This sample sets ReadRootValueAsArray to true so ...

  3. 【已解决】docker overlay2占用大量磁盘空间处理方法

    在使用docker容器的时候遇到了容量上的问题,做一个记录 处理方式1:在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容. 此时,可 ...

  4. FreeSWITCH使用soundtouch进行变声

    操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9   FreeSWITCH里面有个mod_soundtouch模块,支持通话实时变声,今天整理下CentOS 7环境下 ...

  5. Vue3使用Composition API实现响应式

    title: Vue3使用Composition API实现响应式 date: 2024/5/29 下午8:10:24 updated: 2024/5/29 下午8:10:24 categories: ...

  6. itest(爱测试)开源接口测试&敏捷测试&极简项目管理 7.0.0 发布,重大升级

    (一)itest 简介及更新说明 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包 ...

  7. 2024-06-05:用go语言,给定三个正整数 n、x 和 y, 描述一个城市中由 n 个房屋和 n 条街道连接的情况。 城市中存在一条额外的街道连接房屋 x 和房屋 y。 需要计算对于每个街道数(

    2024-06-05:用go语言,给定三个正整数 n.x 和 y, 描述一个城市中由 n 个房屋和 n 条街道连接的情况. 城市中存在一条额外的街道连接房屋 x 和房屋 y. 需要计算对于每个街道数( ...

  8. 易盾逆向分析-知乎login

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  9. jquery中封装了三种ajax请求方式

          // jQuery中封装了3种 ajax 请求方式         // 1, get请求方式         // 2, post请求方式         // 3, 综合请求方式    ...

  10. 设计模式:命令模式(Command Pattern)及实例

     好家伙,   0.什么是命令模式 在软件系统中,"行为请求者"与"行为实现者"通常呈现一种"紧耦合". 但在某些场合,比如要对行为进行&q ...