自动化工具测试注册功能时,往往会遇到验证码,这个烦人的验证码怎么能够解决掉呢?

通常有两种方法

  1. 让开发禁用注册码,或在测试环境写个固定的验证码
  2. 在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获取注册验证码进行注册的更多相关文章

  1. jmeter通过cookie获取图片验证码实现登录2

    在登录时有一张图片验证码,需要获取验证码用于后续登录,见图 1.找到图片验证码接口写入jmeter 2.正则表达式提取cookie 3.Fiddler抓取登录成功的响应cookie,并设置成全局 4. ...

  2. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  3. Django项目:CRM(客户关系管理系统)--49--40PerfectCRM实现全局账号注册+验证码+页面刷新保留信息

    # gbacc_urls.py # ————————38PerfectCRM实现全局账号登录注销———————— from django.conf.urls import url from gbacc ...

  4. react项目中登陆注册验证码的倒计时,页面刷新不会重置

    目前很多的网站和app在做登陆注册时都会用到手机验证码,为了防止验证码轰炸,也就是随意的点击验证码,一般我们需要对获取验证码进行一些限制,最常用到的是在规定时间内不得重复发送. 实现倒计时很简单,可以 ...

  5. flask中注册验证码和分页

    注册验证码.核心思路,替换注册页面的img标签的src属性. 1.准备好文件夹:captcha2.导包 from utils.captcha.captcha import captcha3.验证码生成 ...

  6. EF获取DbContext中已注册的所有实体类型

    /// <summary> /// 获取DbContext中已注册的实体类型 /// </summary> /// <typeparam name="T&quo ...

  7. 关于Java的jdbc中 DriverManager.registerDriver(driver); //注册驱动 有没有必要写的思考

    加载数据库驱动的时候,有如下部分代码: /1) 注册驱动程序 //给java.sql.Driver接口的引用赋值 com.mysql.jdbc.Driver 实现类对象// Driver driver ...

  8. frida- registernatives获取so层动态注册函数

    frida获取so层动态注册函数 谢谢大佬的无私奉献https://github.com/lasting-yang/frida_hook_libart 一.js模板一 function hook_Re ...

  9. JAVA jdbc获取数据库连接

    JDBC获取数据库连接的帮助类 import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManage ...

随机推荐

  1. Python实现打印螺旋矩阵功能的方法

    Python实现打印螺旋矩阵功能的方法 本文实例讲述了Python实现打印螺旋矩阵功能的方法.分享给大家供大家参考,具体如下: 一.问题描述 输入N, 打印 N*N 螺旋矩阵 比如 N = 3,打印: ...

  2. java:(json,ajax,path,Oracle的分页实例,Filter拦截器)

    1.json: <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...

  3. 点云ICP注册

    原文链接 背景 两个点云要注册在一块,一般分两个步骤:先做一个大致的对齐,也就是所谓的初始注册,一般可以通过一些可靠的点对来计算得到(如图3所示):然后在初始注册的基础上进行精细注册,提升注册的精度( ...

  4. 2 Java中常见集合

    1)说说常见的集合有哪些吧? 答:集合有两个基本接口:Collection 和 Map. Collection 接口的子接口有:List 接口.Set 接口和 Queue 接口: List 接口的实现 ...

  5. Fuzzy logic

    Fuzzy logic is used in artificial intelligence. In fuzzy logic, a proposition has a truth value that ...

  6. The system has no LUN copy license

    [问题描述] ipsan作为cinder后端的时候,通过快照创建磁盘失败,报以下错误: { u 'data': {}, u 'error': { u 'code': 1077950181, u 'de ...

  7. springboot基于方法级别注解事务的多数据源切换问题

    springBoot多数据源配置 配置读数据源 @Component @ConfigurationProperties(prefix = "jdbc.read") @Propert ...

  8. 【转帖】国产x86处理器KX-6000发布

    国产最先进x86处理器KX-6000发布:8核3.0GHz 力压酷睿i5处理器 https://www.cnbeta.com/articles/tech/858981.htm 全网所有的网页都写错了 ...

  9. IOMETER的简单使用

    1. 网上下载文件: 一般至少包含两个: 2. 使用IOmeter 进行 功能测试. 注意选择 测试需要的盘 注意 选择的磁盘 会被充满. 会产生一个特别大的文件 3. 选择测试对象 4. 可以查看实 ...

  10. 洛谷 P1593 因子和 题解

    题面 这道题在数学方面没什么难度: 对于每一个正整数n: 质因数分解后可以写成n=a1^k1a2^k2……*ai^ki 所求的数的因数和f(n)就等于f(n)=(1+a1+a1^2+……+a1^k1) ...