3.2容量负载测试执行
我们采用二分逼近法来寻找容量负载测试的拐点,用过python脚本向数据库中注入数据,通过delete SQL语句删除数据。固定在线用户数为100,每次测试仍旧持续运行10分钟,如果测试错误百分比在5%以内(含5%)认为测试正常,否则认为测试出现异常。设置通过的最小值与失败最大值之间差值 (精度) 为<10000。
1)建立如下代码,目的是向数据库中加入数据。
if __name__=='__main__': db = DB() db.connect() tablename ="goods_goods" for i in range(100000,200000): j = i % 10 if j ==0: values =str(i)+",'茶叶',67.87,'/static/image/1.jpg','这是款好的茶叶'" elif j ==1: values =str(i)+",'火腿肠',100.47,'/static/image/2.jpg','这是款好的火腿肠'" elif j ==2: values =str(i)+",'五香豆',100.47,'/static/image/2.jpg','这是款好的五香豆'" elif j ==3: values =str(i)+",'花生',100.47,'/static/image/2.jpg','这是款好的花生'" elif j ==4: values =str(i)+",'烤鸭',100.47,'/static/image/2.jpg','这是款好的烤鸭'" elif j ==5: values =str(i)+",'瓜子',100.47,'/static/image/2.jpg','这是款好的瓜子'" elif j ==6: values =str(i)+",'大排',100.47,'/static/image/2.jpg','这是款好的大排'" elif j ==7: values =str(i)+",'烤肉',100.47,'/static/image/2.jpg','这是款好的烤肉'" elif j ==8: values =str(i)+",'羊肉串',100.47,'/static/image/2.jpg','这是款好的羊肉串'" elif j ==9: values =str(i)+",'辣子鸡丁',100.47,'/static/image/2.jpg','这是款好的辣子鸡丁'" db.insert(tablename,values) db.close()
2)用Jmeter打开ebussine_old.jmx,把购物车吞吐量控制器与查看商品详情吞吐量控制器中的吞吐量设置为0。
3)把查询商品吞吐量控制器的吞吐量设置为100。这样也就仅仅对查询商品进行设置。
4)线程组并发数改为100,其他不变。
5)循环控制器循环时间为10。
6)通过脚本设置商品中的数据为100000条,运行10分钟,错误百分比为7.67%,超过了5%的阈值。
7)通过SQL语句删除商品中的数据,使其个数为70000条,运行10分钟,错误百分比为1.87%,说明容量测试拐点在70000与100000之间。
8)通过脚本设置商品中的数据为80000条,运行10分钟,错误百分比为5.52%,说明容量测试拐点在70000与80000之间。
9)通过脚本设置商品中的数据为75000条,运行10分钟,错误百分比为1.75%,说明容量测试拐点在75000与80000之间。二者之间的差值为5000,低于我们预先设置好的精度<=10000,所以认为拐点为75000。
10)打开压测端与被测端的监控工具(详见第11章介绍),对在商品数为75000的场景下运行10分钟测试进行监控。
11)将测试产生的拐点数据jtl导入到各个报表中进行分析。
3.3疲劳性测试执行
1)用JMeter打开ebussines_old.jmx或者ebusiness.jmx,将线程组中的线程数设置为100,Ramp_Up时间设置为5,循环次数为永远。打开调度器,持续时间为48小时(606024*2=172800秒)。延迟启动为60秒。如图15所示。
图15 疲劳性测试线程组设置
2)如果打开的是ebusiness.jmx,线程组(新)也按照上一步进行设置。
3)查询商品的同步定时器模拟用户数量设置为50。
4)查看商品详情的同步定时器模拟用户数量设置为30。
5)查看商品详情的同步定时器模拟用户数量设置为20。
6)如果打开的是ebusiness.jmx,查看商品详情同步定时器和商品列表同步定时器模拟用户数量设置为50。
7)打开被测程序
8)测试,保证设置无误。
9)启动压测端监控程序,比如将在第11.1节讲的JMeter集群+InfluxDB存储+Grafana。
10)打开被测端监控程序,比如将在第11.2节讲的Exporter + Prometheus + Grafana。
11)根据需求打开全链路监控程序,比如将在第11.3节讲的SkyWalking。
12)启动测试。
13)在测试过程中随时查看监控软件的状态。
14)测试完毕,将测试jtl数据导入到JMeter中,进行分析。