性能测试能力提升-基准、负载、压力、容量测试

一、背景

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

二、基准测试、负载测试、压力测试、容量测试

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

基准测试:

    在给系统施加较低压力时,查看系统的运行状况并记录相关数据作为基础参考。 比如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。

    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的配置类似,不再赘述:

四、压力测试知识扩展

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

稳定性压力测试:

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

破坏性压力测试:

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

五、容量测试知识扩展

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

容量:

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

容量指标选取原则:

容量规划:

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

扩容手段:

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

经验分享 程序员 微信小程序 职场和发展