综合压力分布测试系统性能(性能测试能力提升-基准)

一、背景

接着上一篇的知识:性能测试能力提升-常用知识1,本篇文章,我们将主要介绍以下几方面的知识:

  • 基准测试、负载测试、压力测试、容量测试
  • 负载测试知识扩展:阶梯式加压
  • 压力测试知识扩展:稳定性、破坏性压测
  • 容量测试知识扩展:容量指标选取、容量规划、扩容手段
二、基准测试、负载测试、压力测试、容量测试

这几个名词文字比较接近,大家经常听到,但是很容易搞混,因此杨叔下面逐一给大家列出了解释:

基准测试:

  • 在给系统施加较低压力时,查看系统的运行状况并记录相关数据作为基础参考。
  • 比如1个线程访问时系统的性能情况。

负载测试:

  • 测试系统在不同负载情况下的性能指标。
  • 不关注稳定性,也就是说不关注长时间运行,只是得到不同负载下相关性能指标即可。
  • 实际中我们常从比较小的负载开始,逐渐增加模拟用户的数量(增加负载), 观察不同负载下应用程序响应时间、所耗资源,直到超时或关键资源耗尽。

压力测试:

  • 测试在一定的负载下系统长时间运行的稳定性。
  • 尤其关注大业务量情况下长时间运行系统性能的变化(例如是否反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复)。
  • 压力测试是测试系统的限制和故障恢复能力。

容量测试:

  • 测量系统的最大容量,为系统扩容,性能优化提供参考。
  • 只要限定的某项指标达到最大可接受阈值或某项资源达到最大使用状态,即刻停止测试。(也就是我们常说的测试极限)。

综合压力分布测试系统性能(性能测试能力提升-基准)(1)

三、负载测试知识扩展:阶梯式加压

做负载测试时,我们通常会从低到高逐步增加线程数施压,然后观察不同施压线程数下服务器的性能情况,这个过程就叫:阶梯式加压。

如果每次都手动去调整线程数》施压》再调整线程数》再施压,会比较麻烦。我们可以使用JMeter的插件Concurrency Thread Group 或者Stepping Thread Group,帮助我们快速制定阶梯式加压的测试计划。

插件下载:JMeterPlugins-Standard-1.4.0.jar ,下载地址:htTPS://jmeter-plugins.org/downloads/old/

下载后解压,把jar文件拷贝到/lib/ext文件夹下,重启客户端,环境配置就完成了。

然后测试计划》线程组选择Concurrency Thread Group 或者Stepping Thread Group。

综合压力分布测试系统性能(性能测试能力提升-基准)(2)

  • Target Concurrency:目标并发(线程数)
  • Ramp Up Time:启动时间;若设置 10 min,则目标线程在10 min内全部启动
  • Ramp-Up Steps Count:阶梯次数;若设置5 ,则目标线程在10 min 内分5次阶梯加压(启动线程);每次启动的线程数 = 目标线程数 / 阶梯次数 = 100 / 5 = 20
  • Hold Target Rate Time:持续负载运行时间;若设置 2 ,则启动完所有线程后,持续负载运行 2 min,然后再结束
  • Time Unit:时间单位(分钟或者秒)
  • Thread Iterations Limit:线程迭代次数限制(循环次数);默认为空,理解成永远,如果运行时间到达Ramp Up Time Hold Target Rate Time,则停止运行线程【不建议设置该值】
  • Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件)

Stepping Thread Group是以前老的插件,已不被官方所推荐,Concurrency Thread Group是后来优化后的插件。Stepping Thread Group的配置类似,不再赘述:

综合压力分布测试系统性能(性能测试能力提升-基准)(3)

四、压力测试知识扩展

压力测试的方式通常分为稳定性压力测试和破坏性压力测试,具体含义和作用为大家整理如下:

稳定性压力测试:

  • 在选定的压力值下,长时间持续运行。
  • 通过这类压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等。

破坏性压力测试:

  • 在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。
  • 通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来。

综合压力分布测试系统性能(性能测试能力提升-基准)(4)

五、容量测试知识扩展

关于容量测试,很多同学比较陌生,也有一些专业的词汇,为大家整理如下:

容量:

  • 系统处于最大负载状态或某项指标达到所能接受的最大阈值下对请求的最大处理能力。

容量指标选取原则:

  • 数据密集型:即并发请求量较大的类型,一般TPS和RT是比较关注的指标。
  • 数据存储型:即需要存储读写的数据量较大的类型,一般吞吐量和IO是比较关注的指标。

容量规划:

  • 什么时候应该增加服务节点,需要扩充到什么数量级的服务,才能既保证系统的可用性、稳定性,又能节约成本。
  • 根据压测的结果,设定限流、服务降级等系统保护措施,来预防当实际流量超过系统所能承受的最大流量时,系统无法提供服务。

扩容手段:

  • 垂直扩容:升级服务的硬件配置,让单个服务节点的容量更大。比如:加大服务机器的CPU数量和内存,更换性能更好的高速缓存服务器,数据存储用SSD等。
  • 水平扩展:增加服务节点的数量,让可提供服务的服务变得更多,来提升系统总体的服务能力。比如:服务器的数量由1→N(但需要重点关注负载均衡),提供更灵活的弹性伸缩机制,根据具体的访问流量大小来弹性扩容或者缩容。

综合压力分布测试系统性能(性能测试能力提升-基准)(5)

===============================

以上就是本次的全部内容,如果对你有帮助,麻烦点个赞 收藏 分享,你的支持就是作者更新最大的动力~

下一篇文章,我们将主要介绍以下方面的知识:长连接、短连接连接池的作用连接池的配置优化Redis连接池补充知识

欢迎关注我的程序员杨叔, 测开一枚,持续分享全栈测试知识干货。标签:自动化测试、性能测试、Java、Python、DevOps、CI/CD、小程序测试、测试工具、测试开发、测试框架/平台、测试管理…

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页