消息队列和应用工具产品体系-性能测试场景和工具

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 消息队列和应用工具产品体系-性能测试场景和工具

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:消息队列和应用工具产品体系-性能测试场景和工具】

课程地址:https://edu.aliyun.com/course/3112075/lesson/19045


消息队列和应用工具产品体系-性能测试场景和工具

 

内容介绍:

一、软件测试的基本方法

二、性能压试的使用场景

三、常见压测工具比较

 

一、 软件测试的基本方法

通过测试找出程序中的错误和缺陷,是保证软件质量和可用性的重要手段和先决条件。

 

image.png

 

软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。在整个软件的生命周期中,软件测试都会伴随其中,并不是在软件开发完成后才进行。在项目开发期,项目的集成阶段到项目的上线阶段开发者一般都要进行几种重要的测试方法。

测试按生命周期主要分为:

开发阶段

1. 单元测试

单元测试是指对软件中最小可测试的单元进行检查和验证。当开发人员完成一段代码后。或由白盒测试工程师或开发人员自己进行代码功能的测试。测试者会先静态的观察代码是否符合规范,然后动态的运行一下代码,检查运行的结果。目前大部分公司的单元测试都由开发人员通过简单的编译和调试一下自己的程序进行测试,并没有相应的单元测试计划。

2.集成测试

集成测试是单元测试的下一个阶段,是指将通过测试的单元模块组装成系统或子系统在进行测试,重点测试的是不同模块的接口部分。集成测试也是由白盒测试工程师或开发人员来完成的。

 

系统集成阶段

1.系统测试

当系统功能完全开发完毕后,项目会进入集成阶段。在这个阶段,系统测试是指将整个软件看作一个整体进行测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。前期主要测试系统的功能是否满足需求后期主要测试系统的运行是否满足需求,以及系统在不同的软硬件环境中的兼容度。

2.安全测试

安全测试是指产品开发基本完成至发布的阶段,对产品进行渗透性和侵入性的攻击,以检验产品是否符合企业的安全需求以及是否存在安全隐患的测试过程。

3.性能测试

性能测试又可以分为负载测试、压力测试、并发测试、配置测试以及可靠性测试。

(1)负载测试是指测试当负载逐渐增加时,系统各项性能指标的变化情况

(2)压力测试是指通过给系统不断增加并发压力来获得系统能提供的最大服务级别的测试。

(3)并发测试是通过模拟用户并发访问,测试多个用户并发访问同一个软件、同一个模块或数据记录时是否存在死锁等性能问题。

(4)配置测试是通过对被测试系统环境的调整,了解各种不同的配置方法对软件系统的性能影响的程度,从而找到系统各项资源的最优分配原则。

(5)可靠性测试是在给系统加载一定业务压力的情况下,使系统运行一段时间,以检测系统是否稳定。

 

上线阶段

1.灰度上线测试

灰度上线测试是指将准备上线的产品首先先在小范围的目标人群中进行使用,通过他们的使用结果和反馈来验证产品是否存在不足或bug,从而做到以真实的生产环境来验证产品的目的,避免因为产品的使用环境不同导致某些特定的错误被掩盖的情况发生。

2. 回归测试

回归测试是指当开发者因为版本升级修改了应用代码之后,重新执行上一个版本的应用功能测试,以确认代码的修改没有引入新的错误或导致其他代码产生错误的测试手段。对于频繁升级的互联网应用来说,回归测试的频率和重要性相相比传统的应用场景会高得很多,在互联网场景中,高并发场景下的系统可用性是企业级应用时刻需要面对的重要问题,稍有不慎就会导致应用的不可用。

有如下两个示例,2009年的淘宝双11大促当天,由于订单数量过大,付款时间过于集中,导致多家与淘宝合作的银行后台系统发生了宕机。

在春运期间,12306购票网站由于激增的用户量和复杂的车票购买业务逻辑,导致12306的系统资源迅速被消耗,引发了应用不可用。同时,根据数据分析,互联网应用的响应时间每慢100毫秒,电商网站的交易额就会下降1%。因此,在应用的整个生命周期中,为了避免高并发造成的应用不可用和响应速度变慢,在新系统上线、技术升级、业务峰值保障、站点容量规划以及性能瓶颈探测等五个场景中,都会使用性能压测来对系统的高并发性能进行验证。下面简单介绍一下这五个场景下性能测试的重要性。

 

二、 性能压试的使用场景

性能压测的目标是模拟真实的业务场景,而通常业务场景是复杂多变的。因此有效的性能压测对系统的稳定性具有重要的指导意义,是系统生命周期中不可或缺的一部分。

 

image.png

 

1.新系统上线时

在新系统上线时,通过执行性能压测,能使开发者对系统的负载能力有比较清晰的认时,再结合预估的潜在用户数,保障系统上线后的用户体验。

2.在技术升级时

在技术升级时,在系统重构的过程中,通过性能压测的通过性能压测的对比,可以有效验证新技术的高效性,指导系统的重构。

3 在业务峰值来临时

在业务峰值来临时,通过充分的性能压测,可以确保大促活动等峰值业务的稳定性,保证峰值业务不受损失

4.在站点容量规划时

在站点容量规划时,通过性能压测可以实现对站点精细化的容量规划,指导分布式系统计算资源的分配。

5.在性能平静探测时

在性能瓶颈探测时,通过性能压测探测系统中的性能瓶颈点,进行有针对的优化,从而提高系统的整体性能。

综上所述,性能压测伴随着系统的开发、重构、上线到优化的整个生命周期,因此,有效的性能压测对系统的稳定性具有非常重要的指导意义,是系统生命周期中不可或缺的一环。

 

三、 常见压测工具比较

 

学习部署成本

支持多协议

图形化展示结果

支持PTS模式

链路场景编排管理

支持场景录制

工具特点总结

Apache Bench

学习成本低

开源系统

命令行测工具,功能简单,无法应用于生产环境

LAOD RUNNER

学习成本高

商用系统

商业软件,但学习成本过高,支持的协议有限,不适合复杂的性能压测环境

JMeter

学习成本高

开源系统

热门性能压测工具,逐渐替代Load runner ,但学习维护成本高,难以应用于大型复杂的性能压测场景

阿里云PTS

学习成本低

商用系统

云服务工具,较低的学习成本,功能丰富,JMeter用户能够快速迁移至PTS

 

1. Apache Bench

Apache Bench 是一款用来针对 http 协议做性能压测的命令行工具,支持在本地环境中发起测试请求,验证服务器的处理性能。它主要有以下特点,作为一款开源工具,而 Apache Bench 拥有比较好的扩展性,测试人员可以基于自身的需求对其进行二次开发。使用 Apache Bench 时,可以通过指定性能压测产生的总请求数、并发数或压测时长控制性能压测。但是 Apache Bench 也存在一些缺点,如无图形化界面支持,只支持 HTTP 协议,缺少对Http协议、web socket等协议的支持,对于比较复杂的性能压测场景,缺少链路编排、场景管理等功能,同时只能够对单一地址发起性能压测。此外,它的性能压测统计指标维度较少,缺少性能压测过程中的数据统计,只能够在压测结束后获取相关的统计数据,无法实时获取系统负载等指标。难以应用于生产环境下的性能压测。

2. LOAD RUNNER

LOAD RUNNER 是一款发布于1993年11月的性能压测测试工具,通过模拟成千上万用户实施并发负载及实时监控的方式来确认和查找应用中的问题。作为一款历史悠久的商业性性能压测工具,LOAD RUNNER 能够对整个企业级架构进行测试。可以适用于各种架构体系的自动负载测试,能预测系统的行为并评估系统的性能。LOAD RUNNER 对性能压测有着比较系统性的支持,结合多个组件的功能特性,用户可以比较方便的设计复杂背景下的性能压缩场景,例如结合场景设计设置虚拟用户数量、设置执行时间等。结合虚拟用户生成器,实现复杂链路场景的高效设计编排。此外,LOAD RUNNER支持设置思考点、集合点,还可以结合分析器实现压测报告统计数据分析指标的可视化,助力测试人员理解性能压测的结果。但是LOAD RUNNER 作为一款商业软件,价格比较高,而且需要本地安装,安装过程也较为复杂,在实际设计、执行压测时需要编写相应的脚本,对于使用人员来说学习成本较高。同时LOAD RUNNER支持的协议有限,缺少监控、告警等知识,性能压缩中难以实时发现问题,不适合复杂的性能压测环境。

3. APACHE J Meter

APACHE J Meter 是APACHE 组织开发的基于JAVA 的性能测试工具,它能对应用程序做功能测试和回归测试。使用者可以创建带有断言的脚本。并通过脚本来验证程序的返回结果来确定满足设计期望,

同时JMeter 允许使用正则表达式创建断言,并支持对性能压缩结果做图形化分析。作为一款时下热门的开源性能测试工具,根据谷歌的搜索指数显示,JMeter 已经逐渐展现出了替代LOAD RUNNING 的趋势。JMeter 作为一款开源软件,其扩展性相当强,同时具有强大的开源社区支持,社区内的开发者活跃度较高。也正是在开源设计的积极发展下,JMeter 具有性能压测的诸多特性,如支持场景编排、断言设置、支持对多种资源施压、有图形化界面支持,支持脚本录入,使用人员能够较为简单的设计并发起性能压测。此外,JMeter 提供资源监控、性能压测、报告生成等功能。但是在需要高负载的场景下,JMeter 需要部署分布式环境,部署成本比较高,在使用时需要编写相应的脚本,而每个脚本只能保留一个测试用例,学习门槛居高不下的同时也不利于脚本的维护。此外,它缺少监控、告警等支持,在性能压缩过程中,使用人员难以借助JMeter 实时发现问题,难以应用于大型复杂的性能压缩场景。

4. 阿里云PTS

性能压测服务简称PTS,是阿里云下的SAS 性能测试平台,提供场景API 编排功能,结合阿里云自研的平台和引擎,支持按需设定压测模式、压测量级、压测时间、快速发起压测、监控压测过程并生成压测报告等功能,同时也兼容开源工具JMeter 。总体来说,阿里云PTS 作为一款云服务产品,用户可以以较低的学习成本快速借助PTS发起压测。对于阿里云的用户来说,PTS能够解密结合现有的阿里云服务,提供全方位的压测报告,供用户快速定位性能瓶颈,对于JMeter 用户也能够以较低的成本迁移至PTS,享受PTS 的高阶功能。

相关文章
|
2月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
123 6
|
2月前
|
机器学习/深度学习 自然语言处理 API
query改写:大模型应用测试离不开的实践
queryrewrite 是一个用于大模型应用测试的 Python 库,专注于查询(query)的改写与验证。它支持多种改写方法,包括大型语言模型(LLM)、词汇表替换和同义词替换,同时提供多种验证方法如 ROUGE-L、BLEU、帕累托最优和LLM语义相似度,以确保改写后的查询在语义上保持一致。该项目特别优化了对中文文本的处理,涵盖分词和相似度计算。用户可通过 pip 安装,并支持扩展不同的 LLM 模型,如 OpenAI、Ollama 等。
563 87
query改写:大模型应用测试离不开的实践
|
2月前
|
JSON 自然语言处理 算法
大模型应用测试必备技能:问题对生成实践
本文介绍了利用LangChain的QAGenerationChain从文本生成问题-答案对(QA pairs)的方法,旨在解决LLM应用开发中测试数据生成的格式不统一、库版本过时、模型输出异常及代码可维护性差等问题。文中提供了完整的代码实现,并对生成结果进行了有效性评估,包括语义相似度检查、关键词匹配和重复性检测,确保生成的QA对质量可靠,适用于知识库测试与评估。
311 86
|
1月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
303 11
|
5月前
|
存储 人工智能 测试技术
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
本文深入解析HarmonyOS应用测试全流程,涵盖从一级类目通用测试到二级类目专项测试的技术方案。针对兼容性、性能、安全测试及分布式能力验证等关键环节,提供详细实践指导与代码示例。同时,结合典型案例分析常见问题及优化策略,帮助开发者满足华为严苛的质量标准,顺利上架应用。文章强调测试在开发中的核心地位,助力打造高品质HarmonyOS应用。
269 2
|
2月前
|
机器学习/深度学习 存储 分布式计算
Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证(211)
本文探讨了Java大数据与机器学习模型在金融风险压力测试中的创新应用。通过多源数据采集、模型构建与优化,结合随机森林、LSTM等算法,实现信用风险动态评估、市场极端场景模拟与操作风险预警。案例分析展示了花旗银行与蚂蚁集团的智能风控实践,验证了技术在提升风险识别效率与降低金融风险损失方面的显著成效。
|
2月前
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
212 0
|
5月前
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
159 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
5月前
|
测试技术 数据库 Python
解释测试中setup和teardown函数的应用。
总结起来,`setup`和 `teardown`函数就像扔宴会的主人,他们保障了宴会的流畅进行。他们是准备环境和清理现场的重要工作人员,他们的工作直接影响着我们的测试效率和质量。我们可以把 `setup`和 `teardown`想象成隐藏在幕后,默默为我们服务的工作者,他们做着我们需要但是往往忽视的工作。所以,下次当你写测试的时候,别忘了给你的 `setup`和 `teardown`留出足够的位置,因为他们的作用可能是你成功的保证。
119 14
|
4月前
|
消息中间件 存储 大数据
阿里云消息队列 Kafka 架构及典型应用场景
阿里云消息队列 Kafka 是一款基于 Apache Kafka 的分布式消息中间件,支持消息发布与订阅模型,满足微服务解耦、大数据处理及实时流数据分析需求。其通过存算分离架构优化成本与性能,提供基础版、标准版和专业版三种 Serverless 版本,分别适用于不同业务场景,最高 SLA 达 99.99%。阿里云 Kafka 还具备弹性扩容、多可用区部署、冷热数据缓存隔离等特性,并支持与 Flink、MaxCompute 等生态工具无缝集成,广泛应用于用户行为分析、数据入库等场景,显著提升数据处理效率与实时性。

相关产品

  • 性能测试