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 ...
随机推荐
- rhel安装ambari
RHEL/CentOS/Oracle Linux 6 On a server host that has Internet access, use a command line editor to p ...
- 从git上pull下的代码,执行时提示:ModuleNotFoundError: No module named '......',解决方法如下:
方法一: 如果没有安装,如下: 1.PyCharm : file-> setting->Project interpreter–>package2.右侧有个+ 点击3.进入后 搜索p ...
- python--008文件处理
一.文件操作 1.打开文件,获得文件句柄,并将句柄赋值给一个变量 2.通过句柄对文件操作 3.关闭文件 f=open('sg',encoding='utf-8') da=f.read() print( ...
- Multi-Object-Edit With Django FormSets
I had to write a multi-object edit table the other day for a Django project and as such I dove into ...
- AKKA学习(一)
AKKA简介 什么是AKKA Akka是一个由Scala编写的,能兼容Sacala和JAVA的,用于编写高可用和高伸缩性的Actor模型框架.它基于了事件驱动的并发处理模式,性能非常的高,并且有很高的 ...
- Java初始和环境搭建
前世今生 Java语言是什么? 一种计算机编程语言.名字取自咖啡. Java语言发展简史 Java语言之父:James Gosling SUN(Stanford University Network ...
- System.InsufficientMemoryException:无法分配536870912字节的托管内存缓冲区。可用内存量可能不足
一个病人住院太久,一次性打印护理表单超过3000条时报如标题所示的错误, 个人查阅分析应该可以从如下几方面入手: 一:查看程序客户端和服务端的配置文件相关属性是否限制了缓存最大值 (应该不是这个问题, ...
- logstash7.3版本不支持从redis集群中拉取数据
filebeat可以把收集到的日志传输到redis集群中,但是logstash如何从从redis集群中拉取数据的呢? ogstash使用的是7.3版本 经过查看官网文档,发现logstash7.3版本 ...
- [.net core]2.hello word(.net core web app模版简介)
创建一个.net core web app project 弹出这个窗口 empty代表 最低依赖, 意味着往往需要手动按需添加依赖. web应用程序(模型视力控制器) 则会帮你创建好control ...
- Jquery复习(三)之链式调用
通过 jQuery,可以把动作/方法链接在一起. Chaining 允许我们在一条语句中运行多个 jQuery 方法(在相同的元素上). jQuery 方法链接 直到现在,我们都是一次写一条 jQue ...