业务需求

假设公司领导现在给你分配了一个性能测试需求如下:
1:公司有1000人在上班时间段会登录平台进行打卡操作,可能会登录打卡多次
2:业务高峰时间段在8:00-8:30,半小时
3:需要保证90%用户的响应时间在1s以内
4:保证在半小时内支撑5000笔打卡业务完成,同时90%业务时间不超过1s,半小时内最大系统并发数能达到多少?每秒最大用户并发能达到多少?

需求分解

1:注册用户是1000人
2:业务时间段是半小时,也就是30分钟,1800s
3:需要保证90%业务响应时间在1s以内
4:需要测试半小时内的最大系统并发和每秒的最大用户并发数

测试模型构建 & 用例设计

这种需求是典型的根据负载量计算并发数的场景。首先我们需要设计一下业务场景

性能测试连载 (20)-负载场景模型构建_用户名

 

模型构建

选取的测试业务为:登录业务、考勤打卡业务。此两项业务对应的操作流程,如下:
1.登录业务-操作流程:
1)访问打开首页
2)点击【请登录】,跳转到登录页面
3)输入:用户名+密码,点击【立即登录】,跳转到首页
4)点击【退出】,跳转到首页

2.考勤打卡-操作流程:
1)访问打开首页
2)点击【请登录】,跳转到登录页面
3)输入:用户名+密码,点击【立即登录】,跳转到首页
4)点击考勤打卡,跳转到考勤页面
5)点击考勤
6)点击【退出】,跳转到登录首页

场景设计

性能测试过程中,首先应该设计测试场景,然后针对场景设计脚本。为了真实反映被测对象的性能问题,需要尽可能模拟出被测对象可能发生瓶颈的业务场景。然后设计针对业务的测试场景。

常用测试场景的类型

性能测试通常有几种常用测试场景:单业务基准测试、单业务压力测试、单业务负载测试、综合业务基准测试、综合业务压力测试、综合业务负载测试。
归属为4种测试类型:基准测试、压力测试、负载测试
1)基准测试
测试某个具体业务是否满足系统设计or用户期望的性能指标。
如期望登录接口支持500个用户并发登录,同时响应时间不超过需求值。满足则认为基准测试完成,否则失败。基准测试过程中,性能指标的任何一项均需成功,才认为基准测试完成。基准测试可分为并发基准、业务量基准,其目的都在于验证是否满足预期目标设定。

2)压力测试
测试某个具体业务在最大负载下,持续服务的时长,以此验证被测业务的稳定性

压力测试过程中所设计的负载,是以系统基准测试为标准,如登录接口最大并发为500个并发,则压力测试的负载设为500个。通过运行时长的变化,验证服务器在系统最大负载下持续服务的能力。

3)负载测试
测试某个具体业务能够承受的最大负载,验证被测业务能够承受的最大负载数
如系统基准测试最大并发为500个,则通过多次测试,逐步加大负载,最终获得被测业务的最佳负载。在最佳负载下,系统需要满足各项性能指标。
确定本次性能测试的场景主要有下面4个场景:
①登录并发基准测试
②登录业务量基准测试
③考勤并发基准测试
④考勤业务量基准测试

业务线程数确定

场景设计中需设置线程数,以本次测试为例,要求在30分钟内支持5000次用户登录。线程数计算方式如下:

Thread = BC*[t/(60*T)]
T:考察的时间段,本例 T=30min
t:单用户单次业务消耗时间,尽可能模拟用户的真实行为
BC:业务量,本例 BC=5000
利用JMeter测试单次业务消耗时间
1)登录业务-线程数确定
利用抓包工具, 编写"登录,退出"的脚本。收集聚合报告的数据,加了事物控制器,归总了一下整体事物,响应时间如下图

性能测试连载 (20)-负载场景模型构建_压力测试_02

性能测试连载 (20)-负载场景模型构建_用户登录_03

由上图数据结果可知,若采用90%采样,ECShop用户登录系统,单次消耗时间为:317ms。
实际情况下,还需要考虑模拟用户输入用户名及密码、登录成功后等待返回主页、退出后等待返回主页等操作的思考时间。作如下假设:
用户输入用户名及密码:5s用定时器模拟思考时间
则单用户登录退出所消耗时间为:0.317+5=5.317s

性能测试连载 (20)-负载场景模型构建_用户登录_04

计算模拟30min时间、5000次用户登录最大所需的线程数为:.
Thread = 5000×[5.317/(30×60)] = 147.69,取整为15

性能测试连载 (20)-负载场景模型构建_响应时间_05

2)考勤打卡-线程数确定
利用抓包工具, 编写"登录-考勤打卡"的脚本。收集聚合报告的数据,加了事物控制器,归总了一下整体事物,响应时间如下图:

性能测试连载 (20)-负载场景模型构建_压力测试_06

采用90%采样,用户登录后考勤打卡单次消耗时间为1055ms
实际情况,还需要考虑以下情形的思考时间,作如下假定:
用户输入用户名、密码:5s
登录后在首页等待时间:5s
打开考勤后等待时间:3s
用定时器模拟思考时间

性能测试连载 (20)-负载场景模型构建_用户名_07

所以单用户登录后考勤的时间为:
5+5+3+1.055=14.055s
计算模拟30min时间、5000次用户登录考勤打卡所需的线程数为:
Thread = 5000×[14.055/(30×60)] = 39.04,取整39

性能测试连载 (20)-负载场景模型构建_压力测试_08

未完待续。。。