偶遇性能测试

2016年12月13日 陈鑫杰

偶然的机会,参加阿里巴巴组织的 Jmeter 性能测试培训。
从全新的视角去分析一个系统,为的是同一个目的:系统的稳定运行。


浅谈性能

软件测试有功能测试与性能测试。

功能测试针对系统功能、链路,也是最常见的软件测试。

性能测试,似乎并不存在于内部系统之中。偶尔与之相关的,就是用户打开页面,或操作过程不流畅对此提出的bug。

那么,什么是性能测试?

分析系统面向的人群,并预测所能承受的最大规模下能否稳定的提供服务。对此进行的测试,就是性能测试。

简单来说,就是测试在大容量下,各功能的执行情况。

四要素

压力机:模拟并发的服务器

受压机:被测试系统的服务器

系统负载:考察受压机的系统资源

性能指标:考察压力机的系统状态

压力机

Apache Jmeter 开源免费软件,首选。

HP LoadRunning 收费软件。

受压机

不是单台服务器,而是多台软件与硬件协同的服务器。(无线路由器 → windows交换机 → 工作交换机 → 机房交换机 → Web 服务器 等)

性能测试,关键是寻找硬件的“木桶原理”。

也就是 CPU、 内存、磁盘、网卡,这四种硬件哪个先被消耗光。

CPU 密集型: 离线计算

内存密集型:缓存系统

IO 密集型:数据存储

网络密集型:数据传输

Note: 有坑

  • 内存泄漏,Full GC 会被“内存密集型”

系统负载

对应 CPU、 内存、磁盘、网卡,分别是 CPU利用率、内存利用率、IO利用率、网络利用率,另外还有 特定指标。

系统优化,随着优化次数的增加,投入等量的优化时间,获取的成效越来越少。所以需要特定指标来退出性能测试。

性能指标

TPS:平均每秒事务数

RT:一个事务的平均响应时间

90thRT:90%的平均响应时间

RPS:平均每秒请求数

ERROR:失败率

特定指标:退出性能测试的依据


性能测试类型

负载测试

测试当负载逐渐增加到过载时,系统各项性能指标的变化情况。

关键字:变化

容量测试

确定一个系统的最高吞吐量或最大用户数。

关键字:最高

压力测试

系统在高负载或极端情况下的稳定性。

关键字:稳定


性能测试目的

  1. 评估系统的处理能力

  2. 找出系统的最薄弱一环

  3. 确认系统有无调优的必要

  4. 验证系统的稳定和可靠性


性能测试如何执行

测试前

  1. 分析测试需求

  2. 搭建测试环境

  3. 准备测试数据

测试中

  1. 执行测试,收集结果

  2. 分析测试结果,确认是否需要调优

  3. 调优后的回归

测试后

  1. 输出报告

理解

性能测试,最重要的是定准、定容。

以 TPS 来讲:有最高 TPS、50% TPS, 90% TPS 之分。

以 RT 来讲:有 rt 过小、rt 过长、rt 长尾之分。

要满足最高 TPS 且 rt 过小,即不管多大并发下,用户体验感都很棒。这势必造成系统资源的严重浪费。

要满足 50% TPS 且 rt 长尾,这样会丧失部分用户的满意感。

所以在开始测试之前,一定要分析清楚要以怎么样的标准、容量来进行测试。


感谢

感谢方sir、JJ、矛桑、老湿等大波司登同事们,分担了开发、测试压力,让我专心参加本次培训。

感谢平安、楚寰、以夕等大阿里同学们,组织了本次性能测试培训。

(转载本站文章请注明作者和出处 FoamValue – www.foamvalue.com ——=== 访问 404页面 寻找遗失儿童。 ===——