更新时间:2024-07-18 GMT+08:00
分享

PERF04-03 性能测试步骤

  • 风险等级

  • 关键策略

    1.确定验收性能指标

    对被测系统从用户角色、开发角色、维护管理员等角色出发分析,结合生产环境系统当前情况,识别并定义业务指标、数据指标、资源指标三种维度指标需要达到的目标基线,指导系统能达到以最小的资源占用管理最大的数据并给用户提供最优的体验目标,输出系统各个场景所要达到的SLA。

    2.创建测试方案

    创建测试方案是指设计适合性能测试系统负载的特定场景或条件的过程,性能测试方案设计要求全面、无遗漏,使用测试设计模板把所有的组网场景要求全覆盖,根据性能测试需求、测试模型、测试组网图,罗列出业务测试要点,逐一去分解测试场景和步骤。创建测试方案以模拟真实的用户行为和系统负载, 这些方案为性能测试人员提供了一种方法来评估服务负载在不同条件下的性能,包括测试环境、测试工具、测试监控项等。

    通过测试方案可以复制各种系统负载档位,例如并发用户访问、峰值负载时段或特定场景。 通过测试不同的负载档位,可以识别性能瓶颈并优化部署资源,输出件是可执行性能测试方案。

    • 用户原子行为:识别测试场景,通过识别用户在与服务系统交互时大量执行的步骤和操作,模拟真实的用户行为和系统负载模式。 例如登录、执行搜索、批操场景、导入导出、提交表单或访问特定功能等活动。 将每个方案分解为表示用户与服务系统交互的特定场景步骤和操作。 可以包括页面、执行事务或与系统负载的各种混合场景。
    • 确定数据模型: 确定运行测试方案所需的测试背景数据。 可以创建或生成各种场景、用户配置文件或数据量的实际数据集。 确保测试数据多样化并涵盖不同的场景数据,以提供全面的性能评估。
    • 设计测试脚本: 创建执行定义的测试方案的测试脚本。 测试脚本通常包含一系列操作、HTTP 请求或与服务系统相关的 API 或用户界面的交互。 使用性能测试工具编写脚本,考虑参数化、动态数据处理等因素。 调试脚本,例如脚本错误、缺少或不正确的操作或与数据相关的问题,测试脚本的准确对于帮助确保准确可靠的性能测试执行至关重要。
    • 配置测试变量和参数: 在测试脚本中配置变量和参数,以模拟真实场景请求。 包括多用户登录、查询数据或随机化等参数,以模拟不同的用户行为和工作负载响应。
    • 脚本自动化: 脚本自动化,根据反馈、测试结果或更改要求不断优化和更改测试脚本。 考虑优化脚本逻辑、参数化和错误处理,或添加额外的验证和检查点,配置自动化脚本,迭代测试无需更改脚本。

    3.配置测试环境

    性能测试环境是指用于开展性能测试活动的环境,为性能测试服务,性能测试环境原则上与生产环境进行对标,在测试过程中需要保持其独立性,尽量避免其它因素对性能测试结果的影响,软件版本、系统组网、硬件规格等要保持与生产环境基本一致。

    性能测试环境配置通常要考虑以下因素:

    • 系统组网与架构:系统组网方式如主备、集群、分布式等组网,系统架构分析服务间依赖关系,确定周边依赖服务。
    • 硬件规格:所需服务器的数量、规格以及硬件配置,包括 CPU 主频/核数、内存容量、磁盘类型与容量、存储池类型与容量,网卡带宽等。
    • 软件环境:软件版本与配置,如操作系统版本、服务版本、数据库版本、以及影响性能的相关配置。

    4.完成测试设计

    在本步骤完成前文确认的系统负载、背景数据量与需要请求的用户数据模型等测试设计。

    5.执行测试

    使用所选的测试工具进行性能测试,测试涉及查看和记录性能指标、监控运行情况以及查看出现的任何性能问题,同时监控和收集性能指标,例如响应时间、吞吐量、CPU和内存利用率以及其他相关指标。

    使用定义的测试方案将工作负载置于预期负载之下。在这些不同的负载条件下进行测试。例如,使用正常、峰值和压力级别等级别来分析各种方案中工作负载的行为。

    6.分析测试结果

    分析测试结果是指检查从性能测试结果收集的测试结果和记录的监控指标,由此分析服务的瓶颈点,分析确认是性能问题的,需要提单优化。从以下几个方面展开分析:

    • 查看性能指标:查看性能测试期间收集的性能指标,例如响应时间、吞吐量、错误率、CPU 和内存利用率以及网络使用等。分析这些指标以了解服务的整体性能。
    • 确定性能瓶颈:评估性能指标,以确定哪些性能指标是该场景测试的瓶颈点。评估包括高响应时间、资源使用、数据库问题、网络延迟和扩容限制等。确定服务场景的瓶颈点,有助于服务的优化改进与扩缩容处理。
    • 性能关联指标:评估各种性能指标之间的关系和相关性。例如,背景数据量和资源利用率影响服务的响应时间,清楚这些关联关系可以为不同环境下的场景提供有价值的性能指导,在需要扩容的时候知道扩容哪部分节点给服务以数据支撑。
    • 评估验收条件:将测试结果与预定义的验收条件SLA进行比较。评估服务当前性能是否满足生产环境所需的性能要求。如果不满足生产环境性能调用,需要优化服务或者扩容等手段进行处理

    7.确定基线

    性能基线是产品在系统形成时,所建立的一个基线库,性能基线按照分层原则,建立后通常在版本设计阶段就会归档与发布。基线提供了一个参考点,用于比较一段时间内的性能结果,基线应该是工作负载性能的参考

    考虑工作负载目标,并记录性能,以便随着版本迭代比较基线和优化性能。使用这些基线度量作为未来性能测试的基准,并用它们来识别服务系统有无性能裂化。

    若要为性能测试建立基线并将其用作未来性能测试的基准,请执行以下步骤:

    • 确定性能指标:确定要度量和约定的性能指标。示例包括:

      响应时间,或服务响应请求的速度。

      吞吐量,或按单位时间处理的请求数。

      资源利用率,例如CPU、内存和磁盘使用率。

    • 记录性能相关的度量值:将测试期间获得的性能指标记录为基线度量值。这些度量与测试前约定的SLA比较值。
    • 比较将来的测试:在后续性能测试中,将性能指标与已建立的基线和阈值进行比较。通过比较,可以识别有可能出现的性能裂化等。

    性能基线管理的几个原则与要求:

    • 性能基线不允许随意更改:性能基线已经发布后,则在同一个版本内不允许进行更改,如果要更改则需要与产品相关SE、产品经理对齐,重新进行发布。
    • 性能基线则需要持续继承:性能基线的数值则在每个版本设计阶段进行确认完成,不能出现之前的基线内容全部推翻重来。
    • 性能基线的维护主体:性能基线一经发布,则测试严格按照性能基线要求进行测试与评估。
    • 非性能基线测试则有权进行拒绝验证:对于不合理的非产品基线内容测试则可以进行拒绝验证。

    基线不合理内容测试则有权利进行质疑,并且能够根据测试数据、现网应用、客户规范、标准等要求与SE、产品经理进行评审,基线变更等。

相关文档