性能测试相关知识(四) 性能测试的测试计划模板

1.背景

公司之前的测试团队做API的自动化测试都是使用JMeter等工具来进行,这样的话测试效率而言不是特别高,而且在扩展性方面不是很有竞争力,所以开发了新的测试平台,但是考虑到公司的测试人员有1000多人,那么就需要验证1000人同时使用测试平台是否会出现平台无响应以及崩溃(雪崩)的情况。

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

序号 工作内容 负责人 时间 备注
1 测试场景梳理 XXX 2022-2-18-2022-2-18 今天完成
2 资源采购(阿里云服务器等。。。。) XXX 2022-2-18-2022-2-18 与生产保持一致
3 目标输出 XXX 2022-2-18-2022-2-18  
4 测试数据的准备 XXX 2022-2-18-2022-2-19 需要1000W的数据
5 人员不够 测试经理协调   需要一人协调

3.测试工具的引入

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

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

4.测试计划

4.1背景

公司之前的测试团队做API的自动化测试都是使用JMeter等工具来进行,这样的话测试效率而言不是特别高,而且在扩展性方面不是很有竞争力,所以开发了新的测试平台,但是考虑到公司的测试人员有1000多人,那么就需要验证1000人同时使用测试平台是否会出现平台无响应以及崩溃(雪崩)的情况。

4.2前置工作

序号 工作内容 负责人 时间 备注
1 测试场景梳理 XXX 2022-2-18-2022-2-18 今天完成
2 资源采购(阿里云服务器等。。。。) XXX 2022-2-18-2022-2-18 与生产保持一致
3 目标输出 XXX 2022-2-18-2022-2-18  
4 测试数据的准备 XXX 2022-2-18-2022-2-19 需要1000W的数据
5 人员不够 测试经理协调   需要一人协调

 

4.3人员配备

4.4技术(工具)选择

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

4.5测试范围

序号 场景 目标 负责人 时间 是否完成 备注
1 测试并发登录 满足100人同时登陆 XX 2022-2-18    
2 产品列表加载 同时满足50个人加载,响应时间小于5秒 XX      
3 同事执行API测试用例 响应时间小于5秒,最大并发100 XX      
4 上传文件最大支持2G 不能出现OOM XX      
5 支持持续的发送API请求 验证服务的稳定性,请求都是OK的 XX      
6 产品搜索 响应时间小于5秒 XX      

4.6测试风险

目前无风险

5.测试设计与开发

5.1JMeter工具

测试并发登录

性能测试相关知识(四) 性能测试的测试计划模板

 

 性能测试相关知识(四) 性能测试的测试计划模板

 

 5.2关于文件上传需要考虑的店

1.Socked Time Out (可以将文件进行柴文,但也有可能出现 2、3的问题)

2.文件上传成功  文件缺失
3.文件上传成功 文件内容乱码

5.3如何进行排查

1.打开JVM

2.获取pid

3.查看监控(cpu memory)

4.页面上进行操作 文件上传

5.当内存达到顶点时,观察日志 看看有没有发生OOM

5.4Locust开发

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

6.测试执行与管理

6.1登录场景

性能测试相关知识(四) 性能测试的测试计划模板

 

 性能测试相关知识(四) 性能测试的测试计划模板

 

 性能测试相关知识(四) 性能测试的测试计划模板

 

 性能测试相关知识(四) 性能测试的测试计划模板

 

上一篇:结构化思维:掌握这3点,分析报告不再愁


下一篇:使用VS Code编译Marlin固件