性能测试概要
性能测试是软件测试中的一种,它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈,确保能满足业务需求。很多系统都需要做性能测试,如Web应用、数据库和操作系统等。
性能测试种类非常多,有些概念也很相近:
- Load Testing
- Baseline Testing
- Smoke Testing
- Stress Testing
- Soak Testing
- Endurance Testing
- Capacity Testing
- Longevity Testing
- Peak Testing
- Spike Testing
- Volume Testing
- Capacity Tests
- Reliability Testing
- Scalability Testing
性能测试的工具
同样,性能测试的工具也非常多:
- Apache JMeter
- HP LoadRunner
- Gatling
- Blazemeter
- k6
- NeoLoad
- TestComplete
- Silk Performer
- Rational Performance Tester
- Apica LoadView
- AppDynamics
- Dynatrace
- New Relic
很难说哪个工具是最好的,这取决于你的需求和预算。如果你想要开源易用的,那JMeter是一个不错的选择。如果你想要一个商用的工具,不妨试试LoadRunner和NeoLoad。重要的一点是,没有任何一款工具可以应对所有性能测试,很多时候我们需要组合使用。
JMeter的分布式测试
我将在本文详细介绍JMeter的分布式测试,我们经常会通过它来做性能测试。
在分布式测试角色中,我们需要一个控制节点Controller,还有多个工作节点Workers。如果你想你的请求增加,那可以通过不断增加工作节点来实现。Controller控制Workers,但它不跑具体的测试案例。Workers是连接目标系统来做具体测试的。
整个系统架构大概如下:
Worker可以在不同的服务器上,所以叫分布式,也因此可以利用多台电脑的资源来模拟足够的请求。
详细步骤
我将一步步介绍如何使用JMeter分布式测试来做性能测试,大致架构如下:
Controller我放在Mac上跑,Workers我是通过两台Ubuntu服务器来跑,要注意它们的IP是在同一内网上的。目标系统为了省事,我直接请求 Bing, stackoverflow, QQ。
Step 1: 安装JDK
Apache JMeter是用Java写的,运行它需要Java运行环境。在Ubuntu安装如下:
sudo apt install openjdk-11-jdk
Stpe 2: 下载Apache JMeter
去官网的 download page 下载最新的JMeter包apache-jmeter-5.5.zip,然后解压:
unzip apache-jmeter-5.5.zip
所有节点都需要下载安装。
Controller的位置如下: