性能测试技术笔记(三):如何设计一个压测平台

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 对于压测平台,或者说各种测试平台,其实很多同学有个误区就是:平台各种高大上牛逼,但往往忽略了开发和维护以及学习使用平台本身的成本。

前面两篇笔记介绍了如何快速上手压测项目以及压测前准备测试环境和测试数据的一些方法。


这篇文章,我想分享下关于压测平台功能设计和技术实现方案的一些技术笔记内容,内容主要来源于两方面:


  • 18年我所在性能团队使用的压测平台技术实现细节;
  • 20年后我带稳定性团队时我们开发的全链路压测平台的功能设计和技术方案;


为什么需要压测平台?


从实际工作场景出发,如果只有一两个人做性能测试工作,那其实没必要开发专门的压测平台,原因如下:


  • 成本问题:开发压测平台,前期需要投入至少1-2个专门的人力,且需要长期维护;
  • 效率问题:人数少,基本相当于压测任务并不太多,脚本管理数据管理这些可以通过本地上传到服务器,服务器只需要按照业务域和压测节点,建立对应的文件目录,然后有个crontab的定时任务来清理即可;
  • 协作问题:人数少其实不太需要平台来解决规范和流程问题,协作的事情几句话口头就可以沟通解决;


对于压测平台,或者说各种测试平台,其实很多同学有个误区就是:平台各种高大上牛逼,但往往忽略了开发和维护以及学习使用平台本身的成本。


测试平台的目的是:通过平台提供标准化操作,将不同个体差异通过流程化的方式约束起来,减少重复造轮子和轮子之间差异导致的排查和解决问题的成本,进一步提高人效


毕竟工作最终是结果导向的,如果没有更高效的解决问题,那平台最终会成为沉没成本


假设现在你想拥有一个压测平台,那我个人觉得最起码需要满足如下几个条件:


  1. 业务线多,版本迭代快(需求驱动);
  2. 测试团队个体间的技术差异比较大(技术驱动);
  3. 性能需求较多,线上稳定性问题频发(问题驱动);
  4. 技术团队达到一定规模,做压测的人比较多(效率驱动);


压测平台功能设计思路


聊完了关于压测平台是否必须以及要解决的问题,这部分聊聊一个可用的压测平台要满足哪些条件。


  1. 简单易用:平台学习和使用成本低,操作简单快捷;
  2. 数据持久化:测试脚本&测试数据&测试结果持久化,便于追溯历史记录;
  3. 维护成本低:满足开箱即用,和外部系统可以交互,出问题也有高效的技术支持;
  4. 支持多人协同:可以满足不同团队的人使用,快速开展压测工作且不会交叉影响;
  5. 便于配置管理:对压测集群、压测组件和一些配置项的管理便捷高效,不用手敲太多命令;
  6. 完善的施压支持:支持一定的高并发能力,压测集群可扩展,支持多协议和基本的自定义扩展能力;


看完上述条件,我们对压测平台的功能模块,就有了比较明确的要求。


  1. 用例管理:一个压测项目可以创建多个压测任务,任务=用例,用例包含压测脚本、压测数据和插件;
  2. 压测执行:支持手动和定时执行压测,可以配置运行参数、可以选择多个压测节点、支持同时运行多个压测任务;
  3. 实时监控:压测过程中实时展示TPS、RT、请求数、错误率等核心指标,并支持按时间段选择和计算;
  4. 压测结果:压测结束后整个任务的压测结果可以进行详细的展示,比如TPS、ART、90/95/99RT、成功/失败请求数、错误日志等;
  5. 配置管理:比如压测节点参数变更、绑定host、插件上传更新等;
  6. 扩展功能:比如支持mock、openAPI、造数工具、三方库兼容等;


看完了上面的条件和功能模块要求,那么一个基本的压测平台,要具备哪些具体的功能呢?请看下图:


640.png

PS:此图仅供参考,并不代表要完全有这些功能,根据自己的具体情况设定。


压测平台技术实现方案


接下来聊聊压测平台部分功能的技术实现方案。


压测平台的技术架构其实关键字搜索已经很多了,这里我也不想多费笔墨,在其他人的基础上微创新。我想分享一些具体功能模块的技术实现方案,供大家参考。


mock功能


640.png


日志采样功能

640.png


PS该功能是基于jmeter为压测工具实现的,仅供参考。


如上就是我关于压测平台的一些工作实践笔记和个人思考。


下篇文章,我会聊聊关于质量度量的新看法,敬请期待。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
28天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
45 4
|
2月前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
2月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
3月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
160 32
|
2月前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
2月前
|
缓存 监控 测试技术
全网最全压测指南!教你如何测试和优化系统极限性能
大家好,我是小米。本文将介绍如何在实际项目中进行性能压测和优化,包括单台服务器和集群压测、使用JMeter、监控CPU和内存使用率、优化Tomcat和数据库配置等方面的内容,帮助你在高并发场景下提升系统性能。希望这些实战经验能助你一臂之力!
100 3
|
2月前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
59 4
|
3月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
1050 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
2月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
148 1
|
2月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现