测试开发技术(二)——压力测试

本文深入探讨了压力测试与稳定性测试的区别和实施步骤。在性能测试中,通过确定目标、收集线上数据、制定压测方案、准备工具和数据、执行测试和分析结果来获取系统性能数据。稳定性测试则是在安全流量下长时间压测以验证系统稳定性。通过实例展示了如何对消息推送系统进行性能测试,分析了重构后系统的性能提升。
摘要由CSDN通过智能技术生成

        上一篇文章里说过,目前互联网公司的测试开发岗位分两类。多数的一类是既要负责业务测试、自动化测试,同时也要去开发测试框架、效率工具来辅助业务测试。这类测试开发的岗位(主要指后端的岗位)一般多少都要接触压力测试。

        压力测试、性能测试、负载测试、稳定性测试在网络上有很多文章介绍概念和区别,通常在项目过程中不会区分那么多,实际项目中都是以目标为导向,通常实际项目中都会说,压测一下看下性能,所以这里就不管详细的概念和区别了。为了好理解,我们这里统一叫压测,并以得到性能数据为性能测试,以观察稳定性为稳定性测试。

        性能测试和稳定性测试的相同之处在于都是使用压测工具来进行。但目标不同,性能测试是通过压力测试得到系统的极限性能或者和上一版本的性能对比数据。而稳定性测试则是通过压力测试提供稳定或者变化的持续流量,来观察系统持续运行的情况下是否存在异常。

        正常情况下,一般系统先做性能测试,拿到极限性能或者性能对比数据(对于非1.0项目,性能数据一般需要和上一个版本对比)之后,再通过安全的流量持续压测更长时间,来完成稳定性的验证。

        下面我们就具体介绍一下怎么做性能测试和稳定性测试。

一. 性能测试

        1. 确定目标&收集线上数据

        性能测试的第一步要确定目标,就是为什么要做性能测试,要达到什么样的目标或者效果。比如某个首次上线的系统,性能测试主要是为了得到系统的极限性能数据;再比如,系统优化,更换了RPC协议或者消息队列,性能测试就是为了量化此次系统优化在性能上优化的效果。另外,也不是所有的项目都需要性能测试,比如一个内部系统,用户数和流量本身就很少,而且在未来一段时间也不会有增量,这就基本不需要性能测试。

        如果是从无到有的1.0项目,因为项目还没有上线,所以只能评经验来预估线上的流量数据;但如果是非1.0项目,就可以收集当前的线上数据。具体收集的数据如下(仅供参考,要按照实际情况来调整):1)被测系统或模块各类请求流量比例;2)系统或模块目前平均、峰值、最小 qps;3)线上部署方式和规模;4)被测系统或模块依赖能承受的QPS或者容量。

        2.确定压测方案&部署压测环境

        确定目标和收集完线上现有数据之后,需要根据目标和现有数据确定压测方案,比如,每个阶段通过多大并发或者流量来压测、分几个阶段、每个阶段多长时间、以及压测过程中需要观察和记录哪些数据等。

        同时,也要准备压测环境,压测的环境要尽可能的和线上一致,如果达不到,就做等比缩放。比如,一个系统有A、B两个模块组成,线上A部署了20台机器,B部署了5台机器,那么压测就可以A部署4台,B部署1台。机器和实例的数量只是一个方面,同时也要考虑机器的性能(CPU盒数、内存、磁盘、网卡等),还要考虑依赖方(如DB、缓存、消息队列等)的部署。部署压测环境的核心思路就是要用这套环境反应出线上环境的真实情况。

        3.准备压测工具&构造压测数据

        要进行压力测试就一定要有压测工具,一般来说压测http或者其他开源协议可以在网上找到现成的工具,比如jmater之类的。但如果场景比较特殊,或者使用的是公司或项目的私有协议,就只能使用公司内部的工具或者自己动手开发了。

        选择好压测工具就要构造压测数据了。构造压测数据主要分两点:

        第一点是要构造压测环境系统中的数据。因为线上系统内部一定是有一定数据的,我们要尽量模拟线上就要在系统中添加相应的数据。

        另一点就是要准备压测的请求数据。这点跟选择的压测工具有关,一般来说分2种:

        1)数据词典, 压测的请求提前准备好,存入文件、DB或缓存里,数据量较大的时候一般需要写程序生成。

        2)实时生成,这种是压测工具在压测的时候根据配置规则来实时随机生成请求。

        4.执行压测&观察并记录性能数据

        准备工作一切就绪,下一步就开始做压测的执行。这时候主要就是根据压测方案的从低到高去调整压测工具的并发数或请求数,来对目标系统或模块进行压测。

        压测时ÿ

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清玄居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值