• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
程序员杨叔
帮助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。

学新通

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

四、压力测试知识扩展

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

稳定性压力测试:

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

破坏性压力测试:

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

学新通

五、容量测试知识扩展

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

容量:

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

容量指标选取原则:

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

容量规划:

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

扩容手段:

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

学新通

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

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfije
系列文章
更多 icon
同类精品
更多 icon
继续加载