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

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,118元/月
应用实时监控服务-应用监控,每月50GB免费额度
简介: 消息队列和应用工具产品体系-性能测试场景和工具

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

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
23天前
|
搜索推荐 测试技术 API
探秘电商API:从测试到应用的深度解析与实战指南
电商API是电子商务背后的隐形引擎,支撑着从商品搜索、购物车更新到支付处理等各个环节的顺畅运行。它通过定义良好的接口,实现不同系统间的数据交互与功能集成,确保订单、库存和物流等信息的实时同步。RESTful、GraphQL和WebSocket等类型的API各自适用于不同的应用场景,满足多样化的需求。在测试方面,使用Postman、SoapUI和jMeter等工具进行全面的功能、性能和安全测试,确保API的稳定性和可靠性。未来,随着人工智能、大数据和物联网技术的发展,电商API将进一步智能化和标准化,为用户提供更个性化的购物体验,并推动电商行业的持续创新与进步。
55 4
|
26天前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
82 35
|
26天前
|
JavaScript 前端开发 Java
使用ChatGPT生成关于登录产品代码的单元测试代码
使用ChatGPT生成关于登录产品代码的单元测试代码
42 16
|
2月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
99 1
|
3月前
|
Java 测试技术 API
软件测试中的自动化测试框架选择与应用##
在快速迭代的软件开发周期中,选择合适的自动化测试框架对于提高软件质量和开发效率至关重要。本文探讨了当前流行的几种自动化测试框架的特点和适用场景,旨在为软件开发团队提供决策依据。 ##
|
3月前
|
机器学习/深度学习 人工智能 安全
探索AI在软件工程中的最新应用:自动化测试与代码审查
探索AI在软件工程中的最新应用:自动化测试与代码审查
|
3月前
|
机器学习/深度学习 人工智能 测试技术
探索自动化测试框架在软件开发中的应用与挑战##
本文将深入探讨自动化测试框架在现代软件开发过程中的应用,分析其优势与面临的挑战。通过具体案例分析,揭示如何有效整合自动化测试以提升软件质量和开发效率。 ##
|
3月前
|
监控 JavaScript 前端开发
如何在实际应用中测试和比较React和Vue的性能?
总之,通过多种方法的综合运用,可以相对客观地比较 React 和 Vue 在实际应用中的性能表现,为项目的选择和优化提供有力的依据。
63 1
|
3月前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
73 6

相关产品

  • 性能测试