性能测试实战

背景

公司之前的测试团队做API的⾃动化测试都是使⽤JMeter等⼯具来进⾏,这样的话测试效率⽽⾔不是那么很⾼,⽽ 且在扩展性⽅⾯不是很有竞争⼒的。所以开发了新的测试平台,但是考虑到公司的测试⼈员有1000⼈,那么就需要 验证1000⼈同时使⽤测试平台,是否会出现平台⽆响应以及崩溃(雪崩)的情况。

性能测试过程

测试前期准备(前置工作)

序号 工作内容 负责人 时间 备注
1 测试场景梳理 A 22.2.18-22.2.18  
2 资源采购 B 22.2.18-22.2.18 与生产环境保持一致
3 输出目标 C 22.2.18-22.2.18  
4 数据准备 D 22.2.18-22.2.19  
5 人员协调 经理协调 22.2.18-22.2.18  

 

 

 

 

 

 

 

测试⼯具引⼊

基于梳理的业务场景,和服务底层稳定性体系的保障,性能测试⼯具的选择具体如下:

序号 工具 选择原因 备注
1 jmeter 开源,可以做常规以及并发测试  
2 locust 开源,基于协程,来测试服务稳定性这部分 验证服务是否出现崩溃
3 JVM监控工具 检测服务是否出现OOM  
4 Grafana&InfluxDB 数据可视化报表展示  

 

 

 

 

 

 

测试范围

序号 场景登录 目标 负责人 时间 完成 备注
1 测试并发 满⾜100⼈同时登录 A      
2 产品列加载 同时满⾜50个⼈加载,响应时间⼩ 于5秒 B      
3 产品搜索 同时满⾜50个⼈加载,响应时间⼩ 于5秒 C      
4 同时支持执行API测试用例 响应时间⼩于5秒,最⼤并发100 D      
5 上传最大文件 不能出现OOM E      
6 ⽀持持续的发送API请求 验证服务的稳定性  F      

 

 

 

 

 

 

 

 

测试⻛险

⽬前⽆⻛险

测试设计与开发

JMeter⼯具

测试并发登录

 

 

产品列表加载

测试最简单的⽅式:测试一个是否满足小于5秒,满足后在测试是否满足50人,同时测试同时满足40和60人时的响应时间,为后续测预测积累数据

上传⽂件最⼤⽀持2G

测试⽅式是:

 

 

 

locust开发

⽀持持续的发送API请求

 

import time
from locust import HttpUser,task,between
class QuickStartUser(HttpUser):
 host = 'http://47.95.142.233:8000'
 min_wait = 3000
 max_wait = 6000
 def login(self):
 r=self.client.post(
 url='/login/auth/',
 json={"username":"13484545195","password":"asd888"})
 return r.json()['token']
 @task
 def api(self):
 r=self.client.post(
 url='/interface/run/api/32',
 headers={'Authorization':'JWT {token}'.format(token=self.login())})
 assert r.status_code==200

测试执⾏与管理

登录场景

 

 

 

 

 

 CPU 资源监控,系统负载,吞吐量,响应时间。

 

posted @ 2022-02-18 19:59  晨^O^黎  阅读(81)  评论(0编辑  收藏  举报