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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 消息队列和应用工具产品体系-性能测试场景和工具

开发者学习笔记【阿里云云原生助理工程师认证(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进行规格选择与性能压测。
相关文章
|
5天前
|
测试技术 数据安全/隐私保护
深入理解与应用软件测试中的边界值分析法
【4月更文挑战第23天】在软件测试的诸多技术中,边界值分析法因其简洁性和高效性而备受青睐。本文旨在探讨边界值分析法的核心原理及其在实际测试场景中的应用。通过对边界条件进行系统的识别、分类和测试,该方法能够有效地发现软件缺陷。我们将详细讨论如何确定边界值,设计测试用例,以及如何处理复杂数据类型的边界情况。此外,文章还将展示通过案例研究来验证边界值分析法在提升测试覆盖率和发现潜在错误方面的实际效益。
|
19天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
26 0
|
1月前
|
SQL 安全 测试技术
【软件设计师备考 专题 】测试要求说明书的编写和应用
【软件设计师备考 专题 】测试要求说明书的编写和应用
58 0
|
1月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。
|
1月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
1月前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
3天前
|
Java 测试技术 持续交付
深入理解与应用Selenium WebDriver进行自动化测试
【4月更文挑战第25天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速市场发布的关键步骤。Selenium WebDriver作为业界广泛采用的自动化测试工具之一,提供了一种灵活且高效的方式来模拟用户与Web应用程序交互。本文将探讨Selenium WebDriver的核心概念、架构以及实际应用中的技巧和最佳实践。通过深入分析其工作原理及常见问题解决方案,旨在帮助测试工程师提升测试效率,确保测试结果的准确性和可靠性。
|
5天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
20 0
|
19天前
|
测试技术 Linux Apache
网站压力测试工具webbench图文详解
网站压力测试工具webbench图文详解
12 0
|
19天前
|
消息中间件 人工智能 监控

热门文章

最新文章

相关产品

  • 性能测试