用jmeter可以对数据库进行关联吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用jmeter可以对数据库进行关联吗相关的知识,希望对你有一定的参考价值。

一、需求:

1、业务需求:根据手机号到数据库中查看用户id,再根据用户id查看该注册用户下关联的健康成员。

2、参数化分析

1)需要根据不同的手机号进行查询,所以手机号需要进行参数化

2)用户id要作为下一个查询的参数,所以也需要参数化

二、实现

1.   下载数据库驱动包,并在jmeter中添加该jar包

下载mysql-connector-java.jar,存放到本地如:D:\\jmeter相关

引入jar包:测试计划->浏览->选择jar文件

2.   添加 DBC Connection Configuration

右键线程组->添加->配置元件->JDBC Connection Configuration

配置

说明:

Variable Name:注意该变量名,后面添加jdbc请求时都需要与该名称保持一致。

Database URL:jdbc:mysql://mysql_host_ip:mysql_port/mysql_db_name

JDBC Driver class:com.mysql.jdbc.Driver

username:数据库用户名

password:数据库密码

3.  添加用户变量

4. 添加JDBC Request

右键线程组->添加->Sampler->JDBC Request

配置:

Variable Name:注意与之前配置的名称保持一致

Query Type:含变量的sql查询,选择Prepared Select Statement

Query:输入sql语句,注意不要加分号

Parameter values:引用用户定义的变量$my_phone

Parameter types:变量的类型varchar

Variable names:保存查询结果,供后续接口调用,注意调用时加“_1”

5.添加HTTP请求

右键线程组->添加->Sampler->HTTP Request

注意:

服务器名称或IP:不要加http://

变量值:使用数据库查询结果作为变量 $my_id_1,注意加“_1”

6.添加查看结果树

右键线程组->添加->监听器->查看结果树

7.运行

参考技术A 1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。可以在“测试计
划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in
seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up
= 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。

jmeter提取json数据进行接口参数关联

参考技术A 案例场景:在测试创建订单使用系统的企业支付时,需要获取到创建订单后的订单编号才能支付,在jmeter里面可以直接提取上一个接口json里面的值(sysno)作为下一个支付接口的入参。我现在有一个创建订单接口A,创建成功后会返回一个sysno值。企业支付请求接口B必须要获取到接口A返回订单编号才能支付。这里介绍一下jmeter使用后置处理器【json extractor】获取你想要得到的值,根据上一个接口具体返回的json格式去自定义【json path expressions】json路径表达式。

A接口创建订单接口文档基本信息

请求类型:POST

请求头部:application/json

请求参数:["soType":0,"distributorSysNo":100001,"receiverInfo":"receiveAddress":"收货地址","receiveAreaSysNo":2620,"receiveContact":"联系人","receivePhone":"15878788784","products":["productSysNo":42753,"quantity":2,"memo":null,"expectDeliveryDate":null,"productSysNo":41681,"quantity":1,"memo":null,"expectDeliveryDate":null,],"customerMemo":客户备注信息,"deliveyType":54]

A接口的请求和返回的报文信息如下

B接口企业支付的接口文档基本信息

请求类型:POST

请求头部:application/json

请求参数:"orderSysNos":["$ordersysno"],"soSysNo":"$ordersysno","payTypeId":"balancepay","orderType":0,"balancePwd":"123456"

创建订单请求

JSON提取器

注意:添加后置提取器时一定要放在http请求下面,不能放在线程组下面否则会一直提取不到下一个接口读取的值就会错误

JSON提取器参数说明:

Names of created variables 参数名称

JSON Path expressions 提取表达式

Match No.(0 for Random) 匹配规则,-1所有,0随机,1第一个

Compute concatenation va 如果有匹配到多个值,选择此项,会将全部值保存到_ALL,并使用逗号分割每个值,注意Match No. (0 for Random)需要为-1才有效,不然只能匹配到一个值了

Default Values 没提取到就给默认值

JSON提取器表达式说明,如果是获取第一层级的直接用$.参数,比如我们要获取接口A返回的code,JSON Path expressions就用$.code;如果是返回的是一个数组就要根据返回内容去找到对应参数即可,比如我们获取的是接口A返回的data第一个sysno,就用data[0].sysNo,注意写参数时一定要和返回的一样(最好是复制),比如写成了data[0].sysno就提取不到,因为在data中找不到sysno

关联请求

以上是关于用jmeter可以对数据库进行关联吗的主要内容,如果未能解决你的问题,请参考以下文章

jmeter关联的常用方法(关联token)

jmeter提取json数据进行接口参数关联

jmeter测试数据会提交到数据库里面吗?

jmeter 单接口测试方案(接口无业务关联)

jmeter之关联操作

转 jmeter 关联