目录结构
一、数据构造的必要性、构造方法分析
二、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
2.添加Badboy录制的脚本到JMeter
3.修改or优化JMeter脚本
可将Step1其下的HTTP取样器的名称修改为易理解的中文名称,如下:
然后,记得保存以上脚本
三、JMeter迭代生成账号
1.目标分析
1)操作目标:
利用JMeter设置参数化,循环读取预先准备好的账号信息,实现批量注册用户账号并成功保存到数据库中
2)注册前分析:
对于Badboy录制的注册过程脚本,导入到JMeter之后,可以观察分析,事实上只有“填写注册信息,并提交注册
”这一步是最关键的,其余步骤都是为了过渡到此步or从此步过渡到其他步骤,注册步骤对应的url可以访问打开注册界面,正常情况下,填写合法的注册信息提交后即可注册成功。
因此,为了提高注册效率,就只保留注册界面填写和提交数据的步骤,其余步骤暂时不用(右键设置为Disable
)。
PS:若实际做关于注册模块的性能测试过程中,所有步骤都需要保留,才能综合评估注册模块的性能表现
3)注册策略:
除了以上选择“填写注册信息,并提交注册
”此步作为注册运行的关键,还需要实现批量读取注册。此时,为了实现不同字段的有效性、区分用户信息,需要对注册所需的各个字段中需要参数化的字段有:username (用户名)、email (邮箱)、extend_field5 (手机)。
目标注册效果:
username | 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也能识别
3.配置JMeter
Step 1-->Add-->Config Element-->CSV Data Set Config
PS:Badboy录制的脚本添加到JMeter中,配置注册的循环次数不能在Thread Group中修改,只能在Step1(对应 Loop Controller
)中设置
4.批量执行注册
Step 1-->Add-->Listener-->View Results Tree
执行Run-->Start
5.注册效果检查
利用Navicat工具连接Mysql数据库,然后定位到goods库-ecs_users表,根据以下SQL语句即可查询以上注册的数据
SELECT user_id,email,user_name,`password`,mobile_phone FROM goods.ecs_users;
以上,在数据库中查询到批量注册用户数据,正好是JMeter读取到的100个用户,全部注册成功并存储到数据库中
(因大量注册需要花费不少时间,本文暂且批量注册100个用户,若后续需要更多数据,再另作注册)
四、Navicat备份数据库
1.备份数据库数据
数据库goods-->Dump SQL File(转储SQL文件)-->Structure And Data
2.使用备份的数据
数据库goods-->Execute SQL File(运行SQL文件)-->从File中选取备份的goods.sql文件-->Start...