jmeter使用jdbc获取注册验证码进行注册
自动化工具测试注册功能时,往往会遇到验证码,这个烦人的验证码怎么能够解决掉呢?
通常有两种方法
- 让开发禁用注册码,或在测试环境写个固定的验证码
- 在jmeter中用 jdbc获取数据库中验证码
今天通过一个实例给大家介绍一下第二种方法
首先我们的整理思路是这样的:
1.随机的手机号码
2.获取该手机号码的数据库验证码
3.手机号+验证码,发送请求
4.注册成功
(一)获取数据库中的数据
添加 DBC Connection Configuration
右键线程组->添加->配置元件->JDBC Connection Configuration

不同数据库具体的填写方式,可以参考下面的表格:
|
Datebase |
Driver class |
Database URL |
|
MySQL |
com.mysql.jdbc.Driver |
jdbc:mysql://host:port/{dbname} |
|
PostgreSQL |
org.postgresql.Driver |
jdbc:postgresql:{dbname} |
|
Oracle |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:thin:user/pass@//host:port/service |
|
Ingres (2006) |
ingres.jdbc.IngresDriver |
jdbc:ingres://host:port/db[;attr=value] |
|
MSSQL |
com.microsoft.sqlserver.jdbc.SQLServerDriver 或者 net.sourceforge.jtds.jdbc.Driver |
jdbc:sqlserver://IP:1433;databaseName=DBname 或者 jdbc:jtds:sqlserver://localhost:1433/"+"library" |
我这边测试用的是mysql数据库,值得注意的是mysqll数据库需要指出本机的数据库实例的名称,例如如果实例叫mysql,那么,rul为:jdbc:mysql://localhost:3306/mysql

(二)设置变量
分析整体思路,我们可以看出来,在这个实例中需要两个变量,一个是手机号,一个是验证码,其中只有验证码是需要从数据库获取的
1.我们先处理简单的,设置手机号这个变量,我这里命名为account
右键线程组->添加->配置元件->用户定义的变量

利用jmeter自带的函数即可设置手机号这个随机变量,如图所示,我这里设置的account即手机号是13000000000~13999999999随机

2.接着我们再来处理较为复杂的验证码这个变量,我这里设置的变量名是ACTIVE_CODE
右键线程组->添加->Sampler->JDBC Request
注意Variable Name要和JDBC Connection Configuration中Variable Name一致,否则将获取不到这个变量的值


然后我们再看JDBC Request中查询ACTIVE_CODE这个变量值的sql
SELECT ACTIVE_CODE FROM uc_user_active WHERE EXCHANGE_ID='108991'and ACCOUNT=${ACCOUNT};根据手机号码查询验证码,由于手机号码也是一个变量,所以我们where条件语句的写法是ACCOUNT=${ACCOUNT},当然这里你也可以设置手机号码为固定值去验证这个验证码是否获取成功

(三)录制脚本
当数据库和变量都设置好之后,我们通过jmeter自带的录制功能,录制发送验证码和注册这两个请求
我们可以看到录制下来的请求参数,其中cellPhone(注册手机号),和account的值是相等的,我们设置这个变量的参数值为${ACCOUNT}

参数 设置完成之后,我们可以运行一下,看看验证码是否能够获取成功,查看结果树,这个验证码获取成功了,验证码是805173

接着我们再看注册这个请求,正确的参数填写应该是这样,这里有个地方要注意,当使用jdbc request的结果作为参数时,要写成${ACTIVE_CODE_1}这样子,1代表你查出来的数据第一行,想取第几行就把1改成几,这和用户自定义的变量稍微有点区别

(四)运行脚本
以上操作都完成以后,我们就可以试测试一下我们的脚本是否可靠,运行脚本,查看结果数和数据库,我们可以看到已经注册成功


jmeter使用jdbc获取注册验证码进行注册的更多相关文章
- jmeter通过cookie获取图片验证码实现登录2
在登录时有一张图片验证码,需要获取验证码用于后续登录,见图 1.找到图片验证码接口写入jmeter 2.正则表达式提取cookie 3.Fiddler抓取登录成功的响应cookie,并设置成全局 4. ...
- tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...
- Django项目:CRM(客户关系管理系统)--49--40PerfectCRM实现全局账号注册+验证码+页面刷新保留信息
# gbacc_urls.py # ————————38PerfectCRM实现全局账号登录注销———————— from django.conf.urls import url from gbacc ...
- react项目中登陆注册验证码的倒计时,页面刷新不会重置
目前很多的网站和app在做登陆注册时都会用到手机验证码,为了防止验证码轰炸,也就是随意的点击验证码,一般我们需要对获取验证码进行一些限制,最常用到的是在规定时间内不得重复发送. 实现倒计时很简单,可以 ...
- flask中注册验证码和分页
注册验证码.核心思路,替换注册页面的img标签的src属性. 1.准备好文件夹:captcha2.导包 from utils.captcha.captcha import captcha3.验证码生成 ...
- EF获取DbContext中已注册的所有实体类型
/// <summary> /// 获取DbContext中已注册的实体类型 /// </summary> /// <typeparam name="T&quo ...
- 关于Java的jdbc中 DriverManager.registerDriver(driver); //注册驱动 有没有必要写的思考
加载数据库驱动的时候,有如下部分代码: /1) 注册驱动程序 //给java.sql.Driver接口的引用赋值 com.mysql.jdbc.Driver 实现类对象// Driver driver ...
- frida- registernatives获取so层动态注册函数
frida获取so层动态注册函数 谢谢大佬的无私奉献https://github.com/lasting-yang/frida_hook_libart 一.js模板一 function hook_Re ...
- JAVA jdbc获取数据库连接
JDBC获取数据库连接的帮助类 import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManage ...
随机推荐
- 2019JAVA第三次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.9.24 评分等级 实验三 String类的应用 一.实验目的 掌握类String类的使用: 学会使用JDK ...
- ef core 动态拼接 条件
var sql = new List<string>(); var sqlparams = new List<string>(); ; foreach (var p in ph ...
- nginx配置本地域名反向代理实现本地多域名80访问
什么是反向代理? 代理:通过客户机的配置,实现让一台服务器代理客户机,客户的所有请求都交给代理服务器处理. 反向代理:用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器. ...
- SpringMVC-JSON数据交换
在上Springmvc-JSON数据交换的时候,老师提出了两个问题: 1.JSON数据交互两个注解的作用? 2.静态资源访问的几种配置方式,并简述? 老师刚提出这两个问题的时候我一头雾水的.JSON数 ...
- linux:文件/目录权限设置
一.权限修改命令: chmod [OPTION]... MODE[,MODE]... FILE...二.文件/目录MODE指定方式: 1).八进制(r=4,w=2,x=1) [root@pin ...
- [转载]Ubuntu如何切换到命令行模式
来源:https://blog.csdn.net/lyy14011305/article/details/76325067 Ubuntu提供两种进入方式,一个是我们平常最熟悉的图形界面形式,还有一种是 ...
- [转载]Linux运行模式及紧急、救援模式
运行模式 在Linux中,存在一个叫init(initialize)的进程,其进程号是1,该进程存在一个对应的配置文件inittab,叫做系统的运行级别配置文件,位置在/etc/inittab.(但是 ...
- jQuery全选功能
$(document).ready(function(){ //为父按钮添加事件 $("#chk_all").click(function(){ var a=$("#ch ...
- js apply与call的用法与区别
apply和call function Person(c, d) { return this.a + this.b + c + d } var o = {a: 1, b: 2} Person.cal ...
- 手把手教你上传文件到GitHub上(已获取ssh密钥)
如何提交一个文件到GitHub(已经生成ssh key) 1.新建一个文件夹,当作本地仓库 2.初始化仓库 $git init 3.将想要上传的东西复制到仓库中 4.将文件提交到暂存区 $git ad ...