性能测试通过施加不同量级的负载来评估系统或应用的性能表现。
关键标准包括速度(系统运行速率)、稳定性(无崩溃运行能力)、可扩展性(负载平滑增加时的处理能力)和响应能力(对用户指令的反馈速度)。
软件性能是计算机使用的底层支撑,性能缺陷可能摧毁企业提升用户体验的所有努力。若开发者未充分监管性能测试或测试频率不足,便会引入性能瓶颈。 这将导致系统即使在常规流量时段也难以处理预期负载。当突发峰值使用期产生额外需求时,问题会更加严峻。
此类挑战可能危及企业所有面向公众的运营。 建立持久质量声誉往往需要长期积累。然而,当公众开始质疑某个系统或应用程序是否具备稳定可靠的操作性能时,它们可能遭受迅速且永久性的损害。终端用户的耐心正日益成为稀缺资源。因此,当性能问题成为焦点时,往往意味着企业声誉已岌岌可危,事关重大。
让我们首先定义大多数性能测试场景中使用的方法。六个多部分步骤定义了典型的性能测试过程。
性能测试过程的第一步是设置有用的参数,例如概述应用程序的性能目标。
然后确立可接受的性能标准(例如响应时间、吞吐量、资源利用率和错误率)。
此阶段也是人员确定关键绩效指标 (KPI) 以支持性能要求和业务优先事项的阶段。
在性能测试过程正式开始之前,必须采取最后一步。测试人员构建一个准确模拟系统真实生产环境的测试环境,然后确认被测软件应用程序 (AUT) 已在测试环境中部署。
最后的准备工作包括集成监控工具,以捕获系统在测试期间生成的性能指标。
现在明确定义了测试参数,是时候执行性能测试了。测试人员或测试自动化过程运行已选择的测试场景,并将这些测试与性能测试工具一起使用。
测试人员通常会实时监控系统性能,以便了解吞吐量、响应时间和资源使用情况。在整个测试过程中,测试人员都要监控系统是否出现性能瓶颈或其他与性能有关的异常情况(反映在测试指标中)。
接下来,测试人员评估在测试过程中收集的性能数据。他们仔细研究收集到的数据并寻找需要改进的性能领域。
然后,测试人员将这些测试结果与测试过程第一步中建立的性能基准进行比较。通过这种比较,测试人员可以看到测试结果与预期性能出现偏差以及可能出现瓶颈的位置。
通过分析测试数据发现性能问题后,开发人员使用代码在系统中对其进行更新。他们使用代码优化、资源升级或配置更改来缓解上述性能问题。
实施更改后,开发人员会重复软件测试序列,以确认他们是否成功应用了更改。开发人员重复这些过程,直到性能结果与定义的基准一致。
性能测试深入系统“底层”检测输出效能,因此软件开发团队成为最常使用该方法的群体。第一受益群体包括直接参与开发过程的专业人员:开发者、质量保障 (QA) 工程师和 DevOps 团队。各方从性能测试中各获所需:
下一组用户不是开发人员,但他们仍然在基层工作,系统组件管理是他们工作的主要组成部分:
但进行性能测试的不仅仅是公司管理层。许多组织和企业也经常在各种规模的公司中出于各种目的使用性能测试:
开发者通过不同类型的性能测试获取特定结果数据,以支持特定测试策略。以下是最主要的测试类型。
负载测试显示系统在预期负载下的运行表现。其目标是揭示系统在正常工况下,面对常规规模工作负载及平均并发用户数时的行为特征。
示例:对于电子商务网站,测试人员模拟网站用户,完成购买商品、将产品放入购物车并支付购买费用的步骤。
负载测试表明系统能否支持常规负载条件。可扩展性通过增加数据量或要处理的用户负载来使该系统承受压力。它显示一个系统是否能在加速后继续提供服务。
示例:在垂直扩展中,开发人员可能会增加数据库服务器的 CPU 和内存,使其能够接纳更大量的数据查询。
压力测试类似于潜艇机组执行的极限下潜测试。通过将系统推至已知运行极限——甚至超越极限——来精确测定系统在达到崩溃点前的最大承受能力。
示例:故障转移测试是压力测试的极端形式。其目标是通过模拟组件故障来检验系统恢复运行所需的时间。
此类测试针对用户流量或数据传输量突然急剧飙升的场景。系统必须在维持常规操作的同时消化各种突变。
示例:运营网站的公司不仅需要为中断做好准备,还需要为网站恢复上线后试图同时访问网站的激增用户量做好准备。他们还必须评估系统是否能够处理突然增加的需求。峰值测试可以计算出进展的顺利程度。
性能测试通常关注用户流量。而容量测试 则聚焦系统处理海量数据的能力。能否完整处理数据并提供无损耗的数据存储?
示例:医疗机构需维护海量患者信息,且法律要求其能随时调取患者记录及相关医疗数据。持续涌入的数据可能使系统过载。容量测试可验证系统能否持续承接增量数据。
可将其视为长期性能测试。耐力测试(亦称浸泡测试)旨在捕捉长期运行后出现的数据损坏和内存泄漏等隐患。
示例:社交媒体平台全天候运行,持续使用可能会给平台稳定性、数据存储和用户帐户带来问题。耐久性测试可以让您了解当前的运营情况以及未来性能的指标。
开发者与测试人员可从多种性能测试工具中选择。以下为最流行的两款:
与几乎所有与计算机相关的问题一样,人工智能 (AI) 现在正在将软件测试的效率推向全新的水平。它使整体性能测试过程更快、更准确且更容易实现自动化。
具体来说,AI 可以采用更短的测试周期,从而缩短运行测试所需的时间。通过 AI 极精细的准确性,它能够注意到人类测试人员无法察觉的更细微的性能变化。此外,通过预测性分析,AI 可以评估操作趋势和历史数据,并预测瓶颈接下来可能在何时何处出现。它还可以充分利用该预测系统行为,甚至根据它调整测试参数。
但是,到目前为止,AI 对性能测试做的最重要的事情就是通过启用自动化来大规模地协助其工作。这种自动化的显著特点是,它完全能够运行性能测试流程 - 全部的流程。
AI 不仅可以实现测试的自动化执行,还可以编写用于执行的测试脚本。此外,它还能在后台解释测试结果,并为补救有问题的情况提供指导。
AI 对性能测试最有趣、最有希望的影响之一是人类与 AI 协作的方式被越来越多地采用。这种安排是认识到,人类的本能和知识仍然可以发挥重要作用。事实上,在某些情况下,跟随人类冲动仍然是最高指导原则。
一些专家确信,未来的性能测试依赖于这种混合方法。它将计算机思维和处理能力与人类对上下文和细微差别的感觉相结合。
实现本地、云端或大型机上任何应用程序的自动化软件交付
。使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。
利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。