2024年3月9日发(作者:)

在移动应用和

Web

服务正式发布之前,除了进行必要的功能测试和安全测试,为了保证互联网产品的服务交付质

量,往往还需要做压力

/

负载

/

性能测试。然而很多传统企业在试水互联网

+

的过程中,往往由于资源或产品迭代速

度等原因忽视了这一块工作,导致新产品上线之后频繁出现卡顿等严重影响用户体验的问题。那么互联网产品为

什么要进行压力

/

负载

/

性能测试,又有哪些工具帮我们实现呢,本文将为您细说端详。

压力

/

负载

/

性能测试之异同

在产品研发过程中,常常会混淆压力

/

负载

/

性能测试这三者之间的区别,这三种测试到底有什么不同呢?

压力测试(

StressTesting

),也称为强度测试,通过模拟实际应用的软硬件环境及用户使用过程的系统负荷,长

时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。压力测试需要确定一个系统的瓶

颈或者不能接收的性能点,来获得系统能提供的最大的服务级别。通俗地讲,压力测试是为了发现在什么条件下

您的应用程序的性能会变得不可接受。

负载测试(

Load Testing

)通常被定义为给被测系统加上它所能操作的最大任务数的过程,负载测试有时也会被

称为

容量测试

或者

耐久性测试

/

持久性测试

,其目标是确定并确保系统在超出最大预期工作量的情况下仍能正

常运行。对于

WEB

应用来讲,负载则是并发用户或者

HTTP

连接的数量。负载测试通过测试系统在资源超负荷情

况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以

评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。

性能测试(

PerformanceTesting

)的目的不是去找系统

Bugs

,而是排除系统的性能瓶颈,并为回归测试建立一个

基准。而性能测试的操作,实际上就是一个非常小心受控的测量分析过程:

运行负载试验

->

测度性能

->

调试系

。在理想的情况下,被测应用在这个时候已经是足够稳定,所以这个过程得以顺利进行。性能测试还有另一个

目标就是建立一组被测系统的基准数据。应用在网络上的性能测试重点是利用成熟先进的自动化技术进行网络应

用性能监控、网络应用性能分析和网络预测。

虽然三种测试的目的截然不同,但其测试操作的环节都是基本一致的,因此一次测试过程中完全可以包含性能测

试、负载测试、压力测试三个方面的内容,所使用的测试工具往往大同小异。

10

大主流压力

/

负载

/

性能测试工具推荐

市面上流行的压力

/

负载

/

性能测试工具多是来自国外,同时由于开发的目的和侧重点不同,其功能也有很大差异,

下面就为您简单介绍

10

款目前最常见的测试产品。

1

LoadRunner

LoadRunner

是一种预测系统行为和性能的负载测试工具,通过模拟实际用户的操作行为进行实时性能监测,来帮

助测试人员更快的查找和发现问题。

LoadRunner

适用于各种体系架构,能支持广泛的协议和技术,为测试提供特

殊的解决方案。企业通过

LoadRunner

能最大限度地缩短测试时间,优化性能并加速应用系统的发布周期。

LoadRunner

提供了

3

大主要功能模块:

VirtualUser Generator

(用于录制性能测试脚本),

LoadRunner

Controller

(用于创建、运行和监控场景),

LoadRunner Analysis

(用于分析性能测试结果)既可以作为独立的工

具完成各自的功能,又可以作为

LoadRunner

的一部分彼此衔接,与其他模块共同完成软件性能的整体测试。

详见:《性能测试入门

——LoadRunner

使用初探》(

/article/20161114/

LoadRunner

官网:

/zh-cn/software/loadrunner

2

Apache JMeter

JMeter

作为一款广为流传的开源压测产品,最初被设计用于

Web

应用测试,如今

JMeter

可以用于测试静态和动态

资源,例如静态文件、

Java

小服务程序、

CGI

脚本、

Java

对象、数据库、

FTP

服务器等等,还能对服务器、网络

或对象模拟巨大的负载,通过不同压力类别测试它们的强度和分析整体性能。另外,

JMeter

能够对应用程序做功

能测试和回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活

性,

JMeter

允许使用正则表达式创建断言。

JMeter

的特点包括对

HTTP

FTP

服务器、数据库进行压力测试和性能测试;完全的可移植性;完全

Swing

和轻量

组件支持包;完全多线程;缓存和离线分析

/

回放测试结果;可链接的取样器;具有提供动态输入到测试的功能;

支持脚本编程的取样器等。在设计阶段,

JMeter

能够充当

HTTP PROXY

(代理)来记录浏览器的

HTTP

请求,也

可以记录

Apache

WebServer

log

文件来重现

HTTP

流量,并在测试运行时以此为依据设置重复次数和并发度

(线程数)来进行压测。

参考文章:《云智慧压测实战分享之

JMeter

工具使用初探》(

/a/1195

官网链接:

/

3

NeoLoad

NeoLoad

Neotys

出品的一种负载和性能测试工具,可真实地模拟用户活动并监视基础架构运行状态,从而消除

所有

Web

和移动应用程序中的瓶颈。

NeoLoad

通过使用无脚本

GUI

和一系列自动化功能,可让测试设计速度提高

5-

10

倍,并将维护的脚本维持在原始设计时间的

10

%,同时帮助用户使用持续集成系统自动进行测试。

NeoLoad

支持

WebSocket

HTTP1/ 2

GWT

HTML5

AngularJS

Oracle Forms

等技术协议,能够监控包括

操作系统,应用服务器,

Web

服务器,数据库和网络设备在内的各种

IT

基础设施,同时可以通过

Neotys

云平台发

起外部压力。

官网链接:

/product/

4

WebLOAD

WebLOAD

是来自

Radview

公司的负载测试工具,它可被用以测试系统性能和弹性,也可被用于正确性验证(验证

返回结果的正确性)。其测试脚本是用

Javascript

(和集成的

COM/Java

对象)编写的,并支持多种协议,如

Web

(包括

AJAX

在内的

REST/HTTP

)、

SOAP/XML

及其他可从脚本调用的协议如

FTP

SMTP

等,因而可从所

有层面对应用程序进行测试。

WebLOAD

存在免费和专业两个版本,免费版本支持

50

个虚拟用户,专业版还提供更多的报告和协议供用户选

择。

WebLOAD

通常用作

QA

团队的独立运行工具,在开发周期的验证阶段,被测系统(

System Under

Test

SUT

)投入实用之前,在模拟环境中对被测系统进行测试。

官网链接:

/

5

Loadster

Loadster

是一款商用负载测试软件,用于测试高负载下网站、

Web

应用、

Web

服务的性能表现,支持

Linux

Mac

Windows

等运行环境。

Loadster

能够对

Web

应用

/

服务的

Cookies

、线程、头文件、动态表格等元素发起测试,获得

Web

在压力下的性

能、弹性、稳定性和可扩展性等方面的表现。

官网链接:

/

6

Load impact

Load impact

是一款服务于

DevOps

的性能测试工具,支持各种平台的网站、

Web

应用、移动应用和

API

测试。

Loadimpact

可以帮助用户了解应用的最高在线用户访问量,通过模拟测试不同在线人数下网站的响应时间,估算

出服务器的最大负载。

Load impact

的使用非常简单,只需要输入网址进行测试,便可统计出加载网站的一些详细数据。包括整体加载和

站内图片,

javascript, CSS

等代码载入。可以在右侧列表选择不同文件来同时对比最多三个对象的加载数据,并

生成图表显示,方便网站设计者来分析。测试完成之后,网站还可以存储测试过的统计数据。

官网链接:

/

7

CloudTest

CloudTest

是一个集性能和功能测试于一体的综合压力测试云平台,专为现代网络和移动应用测试而设计开

发,

CloudTest

可以图形化实现判断、循环,整体减轻了测试开发的工作量,缩短了开发时间。

CloudTest

基于内

存的分析引擎,可以实时收集和展示数据,所有数据在

3

秒内汇聚显示。

CloudTest

采用虚拟化技术,完美的配合公有

/

私有云计算技术,无需过多的硬件,带宽资源的投入,人力维护成

本几乎为零,测试按需获得,远程接入,适合多团队协作。各种规模的模拟成本均远远优于传统工具,同时大大

缩短了测试周期。

官网链接:

/cloudtest

8

Loadstorm

Loadstorm

是一款针对

Web

应用的云端负载测试工具,通过模拟海量点击来测试

Web

应用在大负载下的性能表现。

由于采用了云资源,所以

Loadstorm

的测试成本非常低,用户可以在云端选择创建自己的测试计划,测试标准和测

试场景。

Loadstorm

最多可以生成多达

50000

个并发用户,通过数以千计的云服务器发起访问。使用

Loadstorm

不需要任何

脚本知识,同时提供多样化的测试图表和报告模版,用于准确测量

Web

应用的各项性能指标,如错误率,平均响

应时间和用户数量等。

Loadstorm

可以申请免费试用,但更多压力和功能需要开通高级帐户。

官网链接:

/

9

阿里云

PTS

阿里云性能测试(

Performance Testing

)是一个

SaaS

性能测试平台,具有强大的分布式压测能力,可模拟海量用

户真实的业务场景,让应用性能问题无所遁形。

PTS

平台特色包括提供压测机,无需安装软件;脚本场景监控简

单化,省时、省力;分布式并发压测,施压能力无上限;快速大规模集群扩容、支持几十万用户及百万级

TPS

能压测;

80%

以上用户基本不需要花费额外的成本。

PTS

分为两个版本,

Lite

版免费,企业版提供资源包月和按量付费两种计费方式,按量付费采用阶梯价计算,满足

企业客户多种压测需求。

官网链接:

/product/pts

10

压测宝

压测宝是云智慧推出的面向真实用户行为与地域分布的全链路云端压力测试平台,通过云端服务器产生真实分布

式用户访问压力,模拟来自各地域用户接入后台所带来的真实流量,无限接近生产环境所面临的各种复杂因素,

测量真实的用户体验。通过集成云智慧应用性能管理和监控产品,帮助实现基于真实用户行为的压测方案定制、

压测过程中实时定位各环节应用资源及代码瓶颈,现场纠错,分析应用性能肇因。

产品功能特色方面,压测宝通过独有的开放架构,支持各种主流网络协议;同时支持手机

APP

的脚本录制方式,

可以大大降低压测脚本制作的时间和难度。依托压测宝以及完善的产品线,云智慧为用户提供了一站式压测服

务,面向云计算时代的复杂应用提供专业性能压测服务,帮助企业客观评估应用性能容量,发现全链路性能瓶

颈,对应用架构的调优及架构容量规划提供专业咨询服务,满足企业灵活多变的业务需求。目前压测宝已提供高

10

UV

并发级别的压测服务。

官网链接:

/

以上是市面上比较常见的十款压力

/

负载

/

性能测试工具,其中以

Jmeter

Loadrunner

为代表的大部分产品属于传统

防火墙内的压测,适用于测试内网系统硬件资源以及服务、数据库在并发条件下的性能表现。阿里云

PTS

CloudTest

为代表的第二代压测产品把压测机迁移到云端,通过云资源在防火墙外部生成规模并发,有效降低了压

测的成本与准备周期,提高了效率。只是由于压测点限制,国外或阿里的云压测产品,很难对国内应用,特别是

非阿里环境部署的应用发起有效测试。

为满足复杂的云端分布式应用交付场景的压力测试需求,第三代以云智慧压测宝为代表的压测产品应运而生,从

终端用户行为与体验的视角来审视应用性能问题,通过与

APM

整合深度追踪系统,准确发现影响性能的问题瓶

颈。