
压力测试
2009年9月7日下午,移动公司开商务车装载200多部电信手机,在温州某大学边上不停拨打,导致电信网络瘫痪。
电信发现后连车带人押送到公安局,在公安局,移动自称没有违法,只是帮电信做压力测试。
😄
简介
在软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。
压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。
在移动应用和Web服务正式发布之前,除了进行必要的功能测试和安全测试,为了保证互联网产品的服务交付质量,往往还需要做压力/负载/性能测试。
然而很多传统企业在试水的过程中,往往由于资源或产品迭代速度等原因忽视了这一块工作,导致新产品上线之后频繁出现卡顿等严重影响用户体验的问题。
压力测试是一种对软件、系统或设备的性能进行评估的测试方法。
与其他测试不同,性能测试的目的不是检查功能是否正常,而是评估它们在高负载或高压力下的表现。
通过这种测试,我们可以了解系统的性能、稳定性和可靠性,以及在面对不同负载条件时的表现。
测试方法
进行压力测试的方法,大致可归纳为两大类:
(1)敏感度分析(sensitiveanalysis)
此方法是利用某一特定风险因子或一组风险因子,将因子在执行者所认定的极端变动的范围内变动,分析其对于资产组合的影响效果。这一分析方法的优点在于容易了解风险因子在可能的极端变动中,每一变动对于资产组合的总影响效果及边际效果,缺点则是执行者对于每一逐渐变动所取的幅度及范围必须十分恰当,否则将会影响分析的结果与判断,特别是对于非线性报酬率的资产组合,这种情况将更为显著。
(2)情景分析(scenarioanalysis)
即一组风险因子定义为某种情景,分析在个别情景下的压力损失,因此此类方法称为情景分析。情景分析的事件设计方法有两种:历史情景分析和假设性情景分析。
① 历史情景分析(Historicalscenario):利用某一种过去市场曾经发生的剧烈变动,评估其对资产组合会产生什么影响。例如考虑1987年美国股市崩盘,计算当时的历史变动幅度,并依此基础分析评估对资产组合的影响。BCGFS(2001)的研究显示,1998年俄罗斯政府违约事件,是金融机构用来在信用风险压力测试上使用的压力事件,其他如中南美洲比索风暴、东南亚金融风暴亦是很重要的压力事件。这种方法的优点是具有客观性,利用历史事件及其实际风险因子波动情形,在建立结构化的风险值计算上较有说服力,且风险因子间的相关变化情形也可以依历史数据作为依据,使模型假设性的情形降低许多。此外,这种模型较直觉,重大历史事件的深刻印象将使风险值与历史事件紧密结合,管理者在设定风险限额时,便可依历史事件的意义来进行评估,使决策更具说服力。
但这种方法的缺点在于现今金融市场变动非常迅速,许多金融商品不断创新,因此历史事件无法涵盖此类商品,且某些商品的历史价格未出现极端情况,亦无法利用此方法进行衡量。虽然过去发生过的情景未来不一定会再发生,但使用历史情景分析方法来对资产进行风险管理,至少可保证过去的压力事件,在事前预防下,未来不会重演。
② 假设性情景分析:仅以历史情景分析进行压力测试有其限制,参考历史事件并另建立对于每个风险因子可能产生的极端事件,将使得压力测试更具完整性,这就是假设性情景分析。这种分析方法银行可自行设计可能的各种价格、波动及相关系数等的情景,这些计算的设定主要来自经验及主观。
网站测试点
压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。
通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。
极限压力测试举例:
(1) 接收大数据量的数据文件时间;
(2) 大数据恢复时间;
(3) 大数据导入导出时间;
(4) 大批量录入数据时间;
(5) 大数据量的计算时间;
(6) 多客户机同时进行某一个提交操作;
(7) 采用测试工具软件;
(8) 编写测试脚本程序;
(9) 大数据量的查询统计时间。
主流压力/负载/性能测试工具
Apache JMeter
Apache JMeter是一种Java框架,用于执行各种负载测试、性能测试和功能测试。它支持多种协议和技术,包括Web应用程序、数据库、FTP、SMTP、SOAP、REST等,可以帮助测试人员轻松地设计、执行和分析测试用例。
Apache JMeter的优点
开源免费:JMeter是一款开源的性能测试工具,使用者可以在没有版权费用的情况下免费使用。
平台无关性:JMeter是基于Java开发的,可以运行在不同的操作系统和硬件环境上,具有较好的兼容性和可移植性。
支持多种协议:JMeter支持多种协议,包括HTTP、FTP、JDBC、SOAP、JMS、SMTP等,可以满足不同类型应用的测试需求。
功能丰富:JMeter支持各种测试场景和功能,包括负载测试、压力测试、功能测试、分布式测试、断言和验证等。
Apache JMeter的缺点
上手困难,学习曲线较陡峭:JMeter虽然提供了图形化界面,但是需要学习JMeter的特定术语和操作方式,有一定的学习成本。
对于复杂的场景可能不太适用:JMeter虽然支持多种协议和场景,但对于某些特定的测试场景,如复杂的Web应用程序或分布式系统,可能需要较高的技术水平和专业知识。
详细了解:Apache JMeter 入门指南:从零开始学习压力测试
LoadRunner
LoadRunner是一种业界领先的性能测试工具,由Hewlett Packard Enterprise开发。它支持多种协议和技术,包括Web应用程序、数据库、ERP系统、移动应用程序等,并提供可视化的测试脚本编辑器、测试场景设计工具和分析报告等功能。
官网:https://www.microfocus.com/products/loadrunner-load-testing/overview
LoadRunner的优点
功能强大:LoadRunner 支持多种协议和技术,包括 Web 应用程序、数据库、ERP 系统、移动应用程序等,可以进行各种类型的性能测试。
可视化脚本编辑器:LoadRunner 提供了直观的脚本编辑器,可以通过图形化的方式进行脚本编写和编辑,使得测试人员可以更加快速和准确地创建测试用例。
报告分析功能:LoadRunner 提供了丰富的分析工具和报告,可以对测试结果进行详细的分析和解读,以便测试人员更好地了解应用程序的性能瓶颈和问题。
并发模拟能力强:LoadRunner 可以模拟大量并发用户,支持多个虚拟用户同时进行测试,能够在较短的时间内完成大规模的性能测试。
LoadRunner 的缺点
价格昂贵:LoadRunner 是一种商业软件,需要付费购买和使用,相对于其他开源工具来说价格较高。
学习曲线较陡峭:与 JMeter 类似,LoadRunner 也需要学习其特定的术语和操作方式,需要一定的学习成本。
需要较高的硬件要求:LoadRunner 需要较高的硬件要求,包括大量的内存、处理器和存储空间,这对于一些小型团队或个人测试人员来说可能不太友好。
只能运行在 Windows 系统上:LoadRunner 只能在 Windows 操作系统上运行,这限制了它的可移植性和兼容性。
Gatling
Gatling 是一种基于 Scala 语言开发的性能测试工具,可以用于 Web 应用程序和WebSocket 应用程序的负载测试和性能测试。它提供简单易用的 DSL 语言,可以帮助测试人员快速地编写测试用例,并提供实时统计数据和 HTML 报告等功能。
官网:http://www.fefe.de/gatling/
Gating 的优点
高效的性能:Gatling 采用了异步非阻塞的 IO 模型,可以支持高并发的性能测试,性能表现非常出色。
支持多种协议:Gatling 支持多种协议,包括 HTTP、JMS、JDBC、SSH 等,可以满足不同的测试需求。
强大的报告功能:Gatling 提供了丰富的报告功能,可以直观地展示测试结果,方便分析和优化性能问题。
开源免费:Gatling 是一款开源的性能测试工具,可以免费使用。
Gatling 的缺点
纯代码的服务器端工具,没有可视化配置界面,学习曲线陡峭。
社区资源相对较少:相对于 JMeter 和 LoadRunner 等老牌性能测试工具,Gatling 的用户群和社区资源还相对较少,因此在使用中可能会遇到一些问题。
文档不够完善:Gatling 的官方文档相对不够完善,需要用户自行查找资料和学习。
部分功能不够完善:虽然 Gatling 支持多种协议,但是在某些细节功能上可能不够完善,需要用户自行扩展和优化。
NeoLoad
NeoLoad 是一款功能强大的性能测试工具,主要用于测试Web、移动和企业级应用程序的性能和可扩展性。
官网:https://www.tricentis.com/products/performance-testing-neoload
NeoLoad 的优点
强大的测试功能:NeoLoad 具有多种测试功能,包括负载测试、压力测试、稳定性测试、容量规划等,可以满足不同测试需求。
易于使用:NeoLoad 具有友好的用户界面,测试脚本编写和执行操作都非常简单易懂。
支持多种协议:NeoLoad 支持多种协议,包括 HTTP、HTTPS、SOAP、REST、JDBC、JMS、FTP 等,可以满足不同的测试需求。
支持多平台和多设备:NeoLoad 可以在不同的平台和设备上运行测试,包括Windows、Linux、macOS、iOS、Android等。
强大的报告功能:NeoLoad 提供了丰富的报告功能,可以直观地展示测试结果和性能指标,方便分析和优化性能问题。
NeoLoad 的缺点
商业软件:NeoLoad 是一款商业性能测试工具,需要付费购买使用,对于小型的团队或个人测试人员来说可能不太友好。
学习成本较高:虽然 NeoLoad 易于使用,但是对于初学者来说,需要一定的学习成本才能熟练掌握其测试功能和操作方式。
部分功能不够完善:虽然 NeoLoad 具有多种测试功能,但是在某些细节功能上可能不够完善,需要用户自行扩展和优化。
Apifox
Apifox 是一款集 API 文档、API 调试、API Mock、自动化测试、性能测试于一体的协作工具。它可以帮助你快速设计、开发和测试 API,提升研发效率。
Apifox 的优点
易于使用:纯图形界面,上手简单,可以跟 API 开发调试一体化打通,方便敏捷,符合中国人使用习惯。
团队协作:可以团队使用,不限功能和团队人数,方便团队协作。
跨平台支持:Apifox 可以运行在不同的操作系统和硬件环境上,包括 Windows、Mac、Linux、Web 等,具有较好的兼容性和可移植性。
方便导入导出:Apifox 支持应用内性能测试和导出 JMeter 文件进行性能测试。应用内性能测试可以设置线程数来模拟并发请求,每个线程都会按顺序运行选中的所有步骤。导出 JMeter 文件可以在 JMeter 中进行更高级的性能测试,例如设置压力参数、断言、报告等。
Apifox 的缺点
国内公司开发,不开源,云服务器存档,存在一定信息安全风险
功能相对没那么强大