偶然的机会,参加阿里巴巴组织的 Jmeter 性能测试培训。
从全新的视角去分析一个系统,为的是同一个目的:系统的稳定运行。
浅谈性能
软件测试有功能测试与性能测试。
功能测试针对系统功能、链路,也是最常见的软件测试。
性能测试,似乎并不存在于内部系统之中。偶尔与之相关的,就是用户打开页面,或操作过程不流畅对此提出的bug。
那么,什么是性能测试?
分析系统面向的人群,并预测所能承受的最大规模下能否稳定的提供服务。对此进行的测试,就是性能测试。
简单来说,就是测试在大容量下,各功能的执行情况。
四要素
压力机:模拟并发的服务器
受压机:被测试系统的服务器
系统负载:考察受压机的系统资源
性能指标:考察压力机的系统状态
压力机
Apache Jmeter 开源免费软件,首选。
HP LoadRunning 收费软件。
受压机
不是单台服务器,而是多台软件与硬件协同的服务器。(无线路由器 → windows交换机 → 工作交换机 → 机房交换机 → Web 服务器 等)
性能测试,关键是寻找硬件的“木桶原理”。
也就是 CPU、 内存、磁盘、网卡,这四种硬件哪个先被消耗光。
CPU 密集型: 离线计算
内存密集型:缓存系统
IO 密集型:数据存储
网络密集型:数据传输
Note: 有坑
- 内存泄漏,Full GC 会被“内存密集型”
系统负载
对应 CPU、 内存、磁盘、网卡,分别是 CPU利用率、内存利用率、IO利用率、网络利用率,另外还有 特定指标。
系统优化,随着优化次数的增加,投入等量的优化时间,获取的成效越来越少。所以需要特定指标来退出性能测试。
性能指标
TPS:平均每秒事务数
RT:一个事务的平均响应时间
90thRT:90%的平均响应时间
RPS:平均每秒请求数
ERROR:失败率
特定指标:退出性能测试的依据
性能测试类型
负载测试
测试当负载逐渐增加到过载时,系统各项性能指标的变化情况。
关键字:变化
容量测试
确定一个系统的最高吞吐量或最大用户数。
关键字:最高
压力测试
系统在高负载或极端情况下的稳定性。
关键字:稳定
性能测试目的
-
评估系统的处理能力
-
找出系统的最薄弱一环
-
确认系统有无调优的必要
-
验证系统的稳定和可靠性
性能测试如何执行
测试前
-
分析测试需求
-
搭建测试环境
-
准备测试数据
测试中
-
执行测试,收集结果
-
分析测试结果,确认是否需要调优
-
调优后的回归
测试后
- 输出报告
理解
性能测试,最重要的是定准、定容。
以 TPS 来讲:有最高 TPS、50% TPS, 90% TPS 之分。
以 RT 来讲:有 rt 过小、rt 过长、rt 长尾之分。
要满足最高 TPS 且 rt 过小,即不管多大并发下,用户体验感都很棒。这势必造成系统资源的严重浪费。
要满足 50% TPS 且 rt 长尾,这样会丧失部分用户的满意感。
所以在开始测试之前,一定要分析清楚要以怎么样的标准、容量来进行测试。
感谢
感谢方sir、JJ、矛桑、老湿等大波司登同事们,分担了开发、测试压力,让我专心参加本次培训。
感谢平安、楚寰、以夕等大阿里同学们,组织了本次性能测试培训。