[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)

目录结构

一、数据构造的必要性、构造方法分析
二、BadBoy创建用户注册脚本
    1.利用Badboy录制注册脚本,导出脚本
    2.添加Badboy录制的脚本到JMeter
    3.修改or优化JMeter脚本
三、JMeter迭代生成账号
    1.目标分析
    2.数据准备
    3.配置JMeter
    4.批量执行注册
    5.注册效果检查
四、Navicat备份数据库
    1.备份数据库数据
    2.使用备份的数据


一、数据构造的必要性、构造方法分析

深入了解被测业务交互过程、确定脚本用例后,还需要构造性能测试过程中所需的测试数据。以登录为例,为了更真实的模拟不同用户登录、随机购买商品等行为,可针对登录用户名、随机购买的商品信息进行参数化设计,保证每次登录or购买的商品信息都不相同,尽可能模拟真实的业务行为。因此,测试开始之前需要在系统中存在大量使用到的用户信息和商品信息。

以本次测试为例,在2h内5w个用户登录,则ECShop系统需存在5w以上的可用帐号,而系统安装初期并没有提供这么多帐号。此时可利用JMeter构造测试数据;也可直接在数据库中利用存储过程生成测试数据是最好的办法,因为效率相对较高,但要求对表结构相对熟悉。
本次测试所需的5w+可用帐号,利用JMeter模拟真实用户注册行为,设置20个线程,每个线程进行3000次迭代,即可完成6w个注册帐号,便于后期测试使用。构造好测试帐号后,可将数据库备份,便于回归测试。

Tips:
对于Badboy录制后导出的脚本,添加到JMeter中
1)需要在Step 1的Loop Controller中设置迭代的循环次数,不能在JMeter的Thread Group中设置,否则起不到循环作用
2)线程数设置可直接在JMeter的Thread Group中设置


二、BadBoy创建用户注册脚本

1.利用Badboy录制注册脚本,导出脚本

File-->Export to JMeter
脚本:Register_ECShop.jmx

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第1张图片
2.添加Badboy录制的脚本到JMeter
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第2张图片
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第3张图片
3.修改or优化JMeter脚本

可将Step1其下的HTTP取样器的名称修改为易理解的中文名称,如下:

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第4张图片

然后,记得保存以上脚本


三、JMeter迭代生成账号

1.目标分析

1)操作目标:

利用JMeter设置参数化,循环读取预先准备好的账号信息,实现批量注册用户账号并成功保存到数据库中

2)注册前分析:

对于Badboy录制的注册过程脚本,导入到JMeter之后,可以观察分析,事实上只有“填写注册信息,并提交注册”这一步是最关键的,其余步骤都是为了过渡到此步or从此步过渡到其他步骤,注册步骤对应的url可以访问打开注册界面,正常情况下,填写合法的注册信息提交后即可注册成功。
因此,为了提高注册效率,就只保留注册界面填写和提交数据的步骤,其余步骤暂时不用(右键设置为Disable)。

PS:若实际做关于注册模块的性能测试过程中,所有步骤都需要保留,才能综合评估注册模块的性能表现

3)注册策略:

除了以上选择“填写注册信息,并提交注册”此步作为注册运行的关键,还需要实现批量读取注册。此时,为了实现不同字段的有效性、区分用户信息,需要对注册所需的各个字段中需要参数化的字段有:username (用户名)、email (邮箱)、extend_field5 (手机)。

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第5张图片

目标注册效果:

username email extend_field5
Test00001 19000000001
Test00002 19000000002
Test00003 19000000003
... ... ...
Test${user_id} Test${user_id}@666.com 190000${user_id}

为了实现以上样式的注册信息,只需要对三个字段中的末尾5位数字所在区域进行参数化即可,参数化的存储变量user_id取值为:

00001
00002
00003
...
00100

2.数据准备

准备.csv格式的文件user_id.csv,保存数值字符串00001-00100;或者也可保存为.txt格式文件,JMeter也能识别

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第6张图片

3.配置JMeter

Step 1-->Add-->Config Element-->CSV Data Set Config

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第7张图片
设置读取预先准备的数据
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第8张图片
设置注册参数
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第9张图片
设置线程数=10
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第10张图片
在Loop Controller中,设置注册的循环次数=10

PS:Badboy录制的脚本添加到JMeter中,配置注册的循环次数不能在Thread Group中修改,只能在Step1(对应 Loop Controller)中设置

4.批量执行注册

Step 1-->Add-->Listener-->View Results Tree
执行Run-->Start

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第11张图片
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第12张图片

5.注册效果检查

利用Navicat工具连接Mysql数据库,然后定位到goods库-ecs_users表,根据以下SQL语句即可查询以上注册的数据

SELECT user_id,email,user_name,`password`,mobile_phone FROM goods.ecs_users;
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第13张图片
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第14张图片

以上,在数据库中查询到批量注册用户数据,正好是JMeter读取到的100个用户,全部注册成功并存储到数据库中
(因大量注册需要花费不少时间,本文暂且批量注册100个用户,若后续需要更多数据,再另作注册)


四、Navicat备份数据库

1.备份数据库数据

数据库goods-->Dump SQL File(转储SQL文件)-->Structure And Data

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第15张图片
备份数据
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第16张图片
[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第17张图片

2.使用备份的数据

数据库goods-->Execute SQL File(运行SQL文件)-->从File中选取备份的goods.sql文件-->Start...

[PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户)_第18张图片

你可能感兴趣的:([PT_04] 性能测试-利用JMeter构造测试数据(批量注册用户))