性能测试指南

 
 
 

Why--为什么要做性能测试

为了更好地从技术上来规避系统上线后的风险,评估线上系统的真实能力,根据业务模型摸底线上能力,以提前应对可能发生的突发状况。

When--什么时候做性能测试

1

  • 新系统上线:在新系统上线前,通过执行性能压测能够对系统的负载能力有较为清晰的认知,从而结合预估的潜在用户数量保障系统上线后的用户体验;准确探知站点能力,防止系统一上线即被用户流量打垮;
  • 技术升级验证:在系统重构过程中,通过性能压测验证对比,可以有效验证新技术的高效性,指导系统重构。
  • 业务峰值稳定性:在业务峰值到来前,通过充分的性能压测,确保大促活动等峰值业务稳定性,保障峰值业务不受损。
  • 站点容量规划:通过性能压测实现对站点精细化的容量规划,指导分布式系统机器资源分配。
  • 性能瓶颈探测:通过性能压测探测系统中的性能瓶颈点,进行针对性优化,从而提升系统性能。

  综上所述,性能压测伴随着系统开发、重构、上线到优化的生命周期,因此有效的性能压测对系统的稳定性具有重要的指导意义,是系统生命周期中不可或缺的一部分。

What—什么是性能测试

性能压测是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
通过模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。

从测试目的上性能压测又可以划分为负载测试、压力测试、并发测试、配置测试以及可靠性测试。

基准测试
当我们拿到一个性能测试项目的时候,我们会对这个系统架构做个了解,了解最好的方式是做一个基准测试,先谈谈它的基本情况。所以会去定一个小并发,比如5-10个人的并发,先去测一测,看它的响应时间,然后将此作为我们的基准。

负载测试

测试当负载逐渐增加时,系统各项性能指标的变化情况。为了获取性能拐点,我们叫最佳性能。当达到这个点的时候,系统能力、极限能力是多少?这个通常用来做线上流量评估。

压力测试

为了获取极限性能指标。比如可以设置一个3小时压测场景,每10分钟加10个用户,那到3小时后,可能就是180个用户了。这个时候观察,在压力不断增大过程中系统的表现,获得系统能提供的最大服务级别。

并发测试

通过模拟用户并发访问,测试多用户并发访问同一个软件、同一个模块或者数据记录时是否存在死锁等性能问题。

配置测试

通过对被测系统的软/硬件环境的调整,了解各种不同方法对软件系统的性能影响的程度,从而找到系统各项资源的最优分配原则。

可靠性测试

在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。如把用户真实会发生的场景放大3-5倍,然后在线上运行24小时,在这个阶段会发现很多稳定性问题, list回收,java list回收,一旦回收出现问题,可能会出现内存溢出,这个在日常测试过程中,是很难测出来的,所以用稳定性测试查出这些问题。

容量测试
当业务越来越复杂的时候,比如一场大促,应该怎么评估线上的性能?如何去做合理的扩容?这个就属于容量测试范畴。

总的来说,性能压测是在对系统性能有一定程度了解的前提下,在确定的环境下针对压测需求进行的一种测试。

性能测试实施过程中关键的技术主要包括:

  • 系统环境
  • 测试指标
  • 业务模型
  • 数据量
  • 测试模型
  • 测试类型、脚本(API)、场景
  • 监控
  • 瓶颈分析、调优
  • 性能测试压测工具

How--如何做性能测试

1、确定性能压测目标

性能压测目标可能源于项目计划、业务方需求等

2.、确定性能压测环境

为了尽可能发挥性能压测作用,性能压测环境应当尽可能同线上环境一致

3、确定性能压测通过标准

针对性能压测目标以及选取的性能压测环境,制定性能压测通过标准,对于不同于线上环境的性能压测环境,通过标准也应当适度放宽

4、设计性能压测

编排压测链路,构造性能压测数据,尽可能模拟真实的请求链路以及请求负载。

形成测试方案,组会评审,直至通过后方开始执行

5、执行性能压测

借助性能压测工具,按照设计执行性能压测

6、分析性能压测结果报告

分析解读性能压测结果报告,判定性能压测是否达到预期目标,若不满足,要基于性能压测结果报告分析原因;调优后继续第5步直至达到预期目标

7、输出整体测试总结报告,涵盖迭代测试步骤、结果、优化方案、最终结果等信息

工具选型对比

对于性能测试来说,工具并不是核心,分析、评估、找出性能问题才是核心,这些是主观因素,工具是客户因素。所以工具选择时我们有几个方面要考虑。

(1)专业、稳定、高效,工业级性能负载工具。

(2)简单易上手,在测试脚本上不用花太多时间。

(3)有技术支持,文档完善,不用在疑难问题上花费时间,集中精力在性能分析上。

(4)要考虑投入产出比。自研或者使用开源不一定比商业工具更省钱,因为要做技术上的投资,时间上的投资。

压测工具 学习成本 安装部署成本 是否免费 是否支持多协议 压测结果是否能够图形化展示 是否支持TPS模式 是否有链路、场景编排管理支持 是否支持场景录制
Apache Bench

否:针对HTTP协议

否:命令行测试工具
LoadRunner
JMeter
PTS

Where--何处做性能测试

根据不同的业务场景进行区分,如硬件性能可能需要在特定的实验室开展,软件在专网环境、公网环境下展开,具体情况具体分析。

Who--谁来做性能测试

一般分为如下几种情况

1、公司内部有单独的性能组负责性能测试,项目测试负责人提交性能测试需求,配合对方提供各种资料,开展性能测试工作,具体的方案、脚本、执行、报告均由性能组负责

2、公司内部无单独的性能组,需要项目组功能测试负责,此时方案、脚本、执行、报告均由功能测试承担,所谓能者多劳

3、公司内部项目无测试人员,此时开发人员承担起测试人员的责任,负责方案、脚本、执行、报告,这种情况相对较少

4、公司直接将测试外包给三方,由三方负责

参考资料:

https://zhuanlan.zhihu.com/p/71839185

原文地址:https://www.cnblogs.com/emma-lucas/p/13304223.html