云环境下软件性能测试平台的深度解析
1. 云网关:平台核心组件
云网关是平台的核心组成部分,它在连接各类云服务提供商数据中心与企业数据中心方面,带来了极大的灵活性和可控性。对于企业的终端用户和各部门而言,云网关就像一个屏障,屏蔽了在不同云、平台和网络拓扑中进行云部署的复杂性。它能根据云服务提供商提供的服务范围,让用户轻松使用服务。
企业、内部用户和消费者通过聚合广域网(WAN)连接来访问已部署的云服务,这使得以太网成为连接云服务的主要传输机制。云网关具备以下功能:
- 实现企业与云服务之间的连接。
- 连接企业网络与云服务提供商的边缘网络。
- 按需分配网络带宽。
- 连接分布在不同地理位置的各种公共、私有、混合云和企业云服务提供商。
- 连接云与终端用户。
2. 平台中应用程序的测试剖析
通过自定义基于云的测试框架对企业系统进行性能测试的端到端流程,以及该框架如何协调各组件之间的事件流,有着明确的步骤。自定义基于云的性能测试框架涵盖了对云服务提供商基础设施资源、工作流引擎和测试作业的管理。目标企业测试系统及其组件和测试脚本可以托管在企业数据中心,也可以部署在云基础设施中。
在创建测试服务器环境之前,需要由管理平台内的测试宏创建输入和输出两个队列。平台还提供用于创建系统配置任务的宏。测试脚本作为测试作业提交到输入作业队列,其中包含测试目标测试系统所需的输入文件。核心引擎将脚本作为作业在专门用于测试目标系统的测试服务器节点上执行,并执行任何特定的后处理操作。引擎将测试结果发送到输出队列,同时也会发送测试过程中生成的错误报告。平台执行的一系列事件如下:
1. 测试作业与测试脚本和系统详细信息一起提交到云管理平台。
2. 所需的测试服务器镜像和配置脚本上传到云存储库的适当位置。
3. 核心引擎从队列中获取测试作业后,检查作业的有效性。
4. 工作流引擎创建必要的测试服务器环境,并将配置脚本传递给部署引擎。
5. 部署引擎将所需的测试脚本从存储库移动到测试服务器实例的本地目录。
6. 它在测试实例上执行企业系统配置详细信息,以设置端到端测试环境。
7. 测试服务器在企业内部或同一云环境中运行的企业系统上运行测试脚本。
8. 测试结果放置在测试服务器实例的输出目录中。
9. 平台将结果移动到云存储库。
10. 工作流引擎定期检查结果,作业成功完成后,将云存储库中的测试结果连同状态发送到输出队列。
下面是这个流程的 mermaid 流程图:
graph LR
A[提交测试作业] --> B[上传镜像和脚本]
B --> C[检查作业有效性]
C --> D[创建测试环境]
D --> E[移动测试脚本]
E --> F[执行系统配置]
F --> G[运行测试脚本]
G --> H[放置测试结果]
H --> I[移动结果到云库]
I --> J[检查结果并发送]
3. 自定义负载模拟框架的整体架构
如图所示,自定义框架包含队列管理器,其主要功能是检查输入队列中是否有测试作业,并处理消息。平台中的管理仪表盘可以配置为指定需要监控和处理请求的队列管理器数量。监控的队列管理器数量取决于队列中的作业数量、特定企业系统或测试类型。
核心测试引擎在检查测试作业的有效性后,会将特定企业系统的测试脚本、测试服务器镜像和配置参数复制到本地存储库。然后调用工作流引擎,通过部署引擎在云服务提供商基础设施中设置测试环境。在调用部署引擎之前,还会检查消息的优先级,高优先级的测试作业在执行时会优先于低优先级的性能测试作业。部署引擎将请求的测试脚本、测试服务器实例镜像和其他配置详细信息复制到指定的云存储库。
工作流引擎具有以下关键特性:
- 能够定义循环、决策、分支、合并和子流程。
- 支持自定义流程。
- 具备全局和局部流参数。
- 协调各种输入/输出任务。
- 包含预和后处理脚本。
- 能够使用不同的凭据运行任务。
- 监控流程并根据需要采取纠正措施。
部署引擎根据操作系统、测试应用程序、所选云环境、地理区域以及每个地理区域所需的测试服务器实例数量,在测试环境中提供测试镜像。在私有/公共/混合云中创建测试实例后,它还会向已提供的测试实例提供有关企业系统位置、测试类型、所需测试运行次数、测试结果报告、错误报告等额外的系统配置详细信息。
规则和策略引擎为每个应用程序定义了一组在满足条件或在预定义触发点时执行的操作。规则引擎捕获的数据根据一组预定义的业务和操作规则进行评估。如果任何规则满足,则触发相关操作,根据测试作业的需要增加或减少基础设施资源。会定期检查测试基础设施的心跳,规则引擎是基于心跳消息保证系统健康的关键。
调度器会识别所有请求,并根据实时基础设施容量对其进行优先级排序,并通过工作流引擎提供请求。测试实例会检查云存储库中是否有合适的测试脚本,并运行网络连接测试,以检查企业系统是否可用于性能测试。一个性能测试作业可能需要多个测试实例来处理。每个测试实例通过与测试实例捆绑在一起的代理与平台进行通信。代理会定期向平台更新测试实例的健康和进度,并在测试实例运行测试脚本后,将测试结果和错误报告移动到指定的云存储库。
云存储是所有测试脚本、应用程序、代理和报告的存储库,使用公共存储池并由所有计算实例共享。通过框架共享不同存储服务提供商之间的数据,避免直接跨数据中心共享存储。云平台作为一组实例部署在云中,以最小化网络延迟。对于跨云服务提供商配置的实例,通过云网关确保各提供商之间的通信安全。
云平台部署在企业数据中心,管理企业的各种云平台,还通过安全网络通信管理公共云 A 和 B 的额外基础设施实例。测试基础设施实例和脚本存储在本地存储库中,根据部署拓扑,这些镜像会复制到云服务提供商的存储库中。
以下是自定义负载模拟框架的组件架构表格:
|组件|功能|
| ---- | ---- |
|队列管理器|检查输入队列中的测试作业并处理消息|
|核心测试引擎|检查作业有效性,复制脚本和镜像到本地库,调用工作流引擎|
|工作流引擎|定义工作流,协调测试作业执行|
|部署引擎|提供测试镜像,配置测试实例|
|规则和策略引擎|定义操作规则,评估数据并触发操作|
|调度器|识别和优先级排序请求,通过工作流引擎提供请求|
|测试实例|运行测试脚本,通过代理与平台通信|
|云存储|存储测试脚本、应用程序、代理和报告|
|云网关|确保跨云提供商通信安全|
云环境下软件性能测试平台的深度解析
4. 使用框架在云中部署测试环境
测试过程以及企业系统、自定义基于云的性能测试平台和云服务提供商基础设施之间的事件流细节如下。这个流程会为平台要部署在测试环境中的所有测试服务器实例重新运行。测试脚本可以使用市场上的性能测试工具(如 Grinder、JMeter 或 LoadRunner)创建,平台可以同时运行多个测试脚本来测试企业系统。
平台提供调度器,用于按预定义的时间间隔将测试运行预调度为批处理作业。调度器还会监控输入队列,并启动测试管理器来处理来自输入队列的作业。一旦调度器启动了测试管理器实例,平台就会开始为测试分配服务器资源。平台会在云中设置所需的测试服务器环境,然后在测试环境中执行由测试作业定义的测试服务器安装和配置脚本。设置完成后,测试环境将拥有一组已配置的测试服务器实例,这些实例在测试地理区域中部署了基础操作系统,并包含所需的配置信息。对于每个测试周期,可以手动配置测试服务器模板,也可以通过执行预构建的宏来配置。
服务器模板可以配置为部署成功在企业系统上运行性能测试所需的额外安装组件。特定于测试的配置脚本以及可部署文件和其他文件可以通过安全文件共享存储库从企业网络下载,并在实例启动周期结束时安装在测试实例上。
如果被测企业应用程序(AUT)在云中,则会创建并部署企业系统实例,类似于测试实例。如果 AUT 在远程环境或企业数据中心,则会使用系统详细信息配置测试服务器实例。每个测试服务器实例负责在企业系统上运行一组测试套件,并将测试服务器结果或错误报告上传到云存储库。
以下是在云中部署测试服务器的 mermaid 流程图:
graph LR
A[识别测试服务器镜像] --> B[启动测试实例]
B --> C[部署所选镜像]
C --> D[运行测试脚本]
D --> E[将测试结果写入存储]
E --> F[检索输出]
F --> G[停止实例]
5. 平台与多个云服务提供商的集成层
企业通常有多个系统、服务和应用程序,不同部门的基础设施需求可能简单或多样化。每个程序都需要满足一组关键的基础设施标准,如计算、网络、存储和安全,这使得识别、分配适当的值和监控变得复杂。IT 管理员主要关注的是如何更好地利用整个基础设施。
企业可以选择多个云服务提供商,将应用程序和服务部署在公共、私有或混合云上,它们各有优缺点。公共云通常通过互联网访问,由第三方运行和管理,不同客户的应用程序可能会共同部署在服务器、存储和网络基础设施上。私有云则是为单个企业构建的,企业对数据、服务质量和安全拥有完全控制权,企业拥有数据中心基础设施,并可以控制系统、服务和应用程序的部署。混合云则结合了公共云和私有云的模型,能够在快速的工作负载波动情况下提供更好的服务水平。
云服务提供商提供多种服务,包括:
|服务类型|具体内容|
| ---- | ---- |
|操作系统|Windows、Unix、Linux、Solaris;32 位/64 位|
|CPU/内存|核心 CPU 数量、集群核心数量、内存大小(GB)|
|存储|存储容量(GB)|
|网络|带宽(Gigabit)|
|安全/VPN|安全服务、防火墙、入侵检测|
|定价|按使用付费、月付、订阅/年付|
使用多个公共云提供商和自己的私有云进行负载模拟,可以提高负载模拟的粒度、成本效益和测试效率。但企业在为不同内部部门采用多个云服务提供商时,需要建立高效、强大的安全、会计和治理框架。
6. 云模拟平台在实际中的应用
虽然自定义性能模拟平台提供了各种组件来加快实际测试时间、提高生产力和质量,但在将其用于特定性能测试场景时,需要分析以下几个重要方面:
|序号|考虑因素|描述|
| ---- | ---- | ---- |
|1|目标测试应用程序|收集目标测试应用程序的类型(Web 应用程序、Web 服务等)和访问类型(HTTP、HTTPS、FTP、SMTP 等)的详细信息|
|2|用于负载注入的云基础设施|收集要在解决方案中利用的云基础设施的详细信息,包括用户基础的分布(按地区)和比例,这有助于确定供应引擎的云基础设施分布|
|3|负载测试场景|了解多个负载测试场景的高级详细信息,包括测试持续时间、用户数量、多个用例的比例、所需的步进负载、要加载的数据量、测试周期数等|
|4|模拟测试数据|收集测试数据创建和数据文件创建的要求,以符合目标测试应用程序的测试用例和功能|
|5|容量规划输入|收集服务器端监控工具的要求,并分析是否需要任何特定的自定义插件或额外的监控工具,以进行适当的容量规划|
|6|自定义报告|收集性能测试期间所需的各种报告的详细信息,并确定除了内置报告之外是否需要任何额外的自定义报告|
负载模拟解决方案应支持大多数非功能性需求,如可用性、可扩展性、可维护性和可重用性,这对于测试高用户量场景至关重要。
-
可用性
:在性能模拟要求中,虽然不要求极高的可用性,但需要在整个测试期间保持恒定负载并逐步增加负载。解决方案建议使用位于不同位置的公共云实例,如 Amazon EC2 和 Microsoft Azure,并安装和配置所需的程序和工具来生成极端负载。通过多个实例、备用集群和添加新实例的自动化引擎来满足可用性要求。
-
可扩展性
:解决方案使用一个云实例作为控制器,与多个称为负载代理的实例相关联,负载代理将生成所需的负载。要增加用户数量,可以按比例增加控制器和负载代理的组合。
-
可维护性
:自定义测试框架解决方案建议使用标准设计模式、协议、编码指南和约定,以提供更易于维护的代码。解决方案建议使用 REST API、JNI、Azure SDK 和标准 IDE(如 Visual Studio 和 Eclipse)来构建自定义基于云的性能模拟平台。
7. 业务价值和收益
该平台具有以下业务价值和收益:
-
测试质量
:利用云基础设施在不同地理位置生成负载,结合用户配置文件和不同的网络带宽,实现“近乎实时的生产场景”,从而进行“万无一失”的高质量测试。
-
减少再培训和重用投资
:使用标准和经过测试的工具,无需在解决方案上进行大量投资,减少了额外的投资,并最大限度地减少了额外技能开发的需求。用户友好的配置和监控功能可以减少 IT 管理员和经理使用云基础设施所需的再培训。
超级会员免费看

被折叠的 条评论
为什么被折叠?



