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

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

开发者学习笔记【阿里云云原生助理工程师认证(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 的高阶功能。

相关文章
|
边缘计算 安全 5G
高精度时钟同步测试仪:构建全场景时间同步生态
在数字化转型中,时间同步至关重要。西安同步电子科技的 SYN5106 高精度时钟测试仪,具备±20ns 时差测量精度与 GPS/北斗双模授时能力,广泛应用于电力、通信、金融和科研领域。它解决变电站时间偏差、5G 基站同步误差及高频交易延迟等问题,助力智能电网、5G 网络和科研实验。产品便携可靠,支持多协议,满足国家安全要求,为各行业提供精准时间同步解决方案。未来将探索量子通信与深空探测等领域,持续推动技术创新。
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
消息中间件 存储 大数据
阿里云消息队列 Kafka 架构及典型应用场景
阿里云消息队列 Kafka 是一款基于 Apache Kafka 的分布式消息中间件,支持消息发布与订阅模型,满足微服务解耦、大数据处理及实时流数据分析需求。其通过存算分离架构优化成本与性能,提供基础版、标准版和专业版三种 Serverless 版本,分别适用于不同业务场景,最高 SLA 达 99.99%。阿里云 Kafka 还具备弹性扩容、多可用区部署、冷热数据缓存隔离等特性,并支持与 Flink、MaxCompute 等生态工具无缝集成,广泛应用于用户行为分析、数据入库等场景,显著提升数据处理效率与实时性。
|
编解码 5G 定位技术
时间频率综合测试仪优势所在及场景使用介绍
时间频率综合测试仪是保障系统精准运行的关键设备。以西安同步电子科技有限公司的SYN5104型为例,它集时间标准源、时差测量和频率测试于一体,功能涵盖时间准确度、频率分析、PPS/B码/E1/PTP/NTP测试等,精度达30ns。其便携设计适用于研发、标定、现场检测,支持电力系统校准、通信同步测试及科研校准等场景,助力高精度时频同步与产品质量提升。文章版权归西安同步电子科技有限公司所有,严禁侵权。
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
501 6
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
865 1
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:
634 4
|
JavaScript 前端开发 数据库
数据库测试场景实践总结
本文介绍了数据库超时和应用锁表SSDB测试场景的验证方法,通过锁定数据表模拟写入失败情况,并利用SSDB进行重试。测试需开发人员配合验证功能。同时,提供了SSDB服务器登录、查询队列数量及重启服务等常用命令。适用于验证和解决数据库写入问题。
285 7
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
432 2
|
运维 Serverless 测试技术
函数计算产品使用问题之如何进行压测
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
352 8

相关产品

  • 性能测试