本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GAMEOPS05-BP01选择正确的阶段、架构和负载测试框架来实现您的目标
负载测试游戏的方法可能会因许多因素而有很大差异,包括游戏所处的开发过程阶段、负载生成系统本身的架构以及负载测试框架的选择。无论是在早期阶段、迭代冲刺期间、生产部署之前还是部署后,进行测试的时间都将决定测试工作的目标和重点。负载生成基础设施的不同设计各有其优缺点,负载测试框架的选择极大地影响了测试过程的功能、易用性和集成。通过精心调整这些元素,开发团队可以根据游戏的独特特征量身定制负载测试方法,提取最有价值的性能见解,为玩家提供流畅的体验。
在未建立这种最佳实践的情况下暴露的风险等级:高
实施指导
不同开发阶段的负载测试
在开发阶段的早期进行探索性负载测试可以验证底层系统架构。这有助于开发者在完成大量实施工作之前就游戏的基础架构、数据库设计和网络拓扑做出明智的决策。负载测试可识别风险并创建性能基准,从而有可能最大限度地减少开发生命周期后期对昂贵的返工和技术债务的需求。他们还可以促进团队对游戏性能要求的共同理解,从而改善协作和决策。最终,初始阶段的负载测试为高性能、可扩展和弹性的游戏奠定了坚实的基础,有助于增强整体玩家体验。
在每次冲刺或迭代结束时,负载测试可以评估最新周期中引入的新功能、错误修复和其他更改对性能的影响。这种有针对性的方法使开发团队能够快速识别最新更新带来的回归或性能下降,使他们能够在这些问题进一步传播到管道中之前解决这些问题,并保持稳定的质量和性能水平。
在部署到生产环境之前,强大的负载测试可帮助团队验证系统处理预期的实际流量和负载条件的能力。它们可以发现生产基础架构中的可扩展性瓶颈或资源限制,并提供优化游戏性能的机会,从第一天起就创造流畅且响应迅速的用户体验。从发布前负载测试中获得的见解可以降低发布日风险,并为正在进行的容量规划提供信息,这为游戏的长期可持续性和可扩展性奠定了基础。
对已经投入生产的游戏进行负载测试可以让团队监控游戏的性能,并确定随着时间的推移可能出现的性能下降或降级。这使他们能够在问题影响玩家体验和对用户留存率产生负面影响之前主动解决问题。此外,生产中的负载测试可以验证已实施的性能优化工作或基础设施扩展的有效性。即使游戏不断发展和成熟,该过程也能为玩家提供高质量、响应式和可扩展的游戏体验。
Load-generating 建筑
游戏负载测试的负载生成架构的设计可以采取多种形式,每种形式都有其自身的优势和注意事项。
在最基本的层面上,可以预置和配置自我管理的 Amazon EC2
要采用更具可扩展性和协调性的方法,您可以使用 Amazon E
或者,的无服务器特性AWS Fargate
您也可以根据自己的要求和目标使用AWS Lambda
希望使用预建解决方案的工作室可以在上 AWS使用分布式负载测试。该解决方案使用 Amazon ECS AWS Fargate 来部署容器,这些容器可以对成千上万的联网用户进行模拟。您可以使用它以 IAC 方式使用 AWS CloudFormation它来快速启动负载测试基础架构。
负载测试框架
没有两个负载测试框架是相同的。有些具有用于创建测试的直观图形界面,而另一些则完全基于命令行。一种工具可能灵活且性能良好,但需要时间和精力来配置和管理,另一种工具可能是无服务器的,但它可以创建和运行的测试有限。有些人喜欢大型社区和大量教程,但未经现场验证,这与其他可能在生产环境中经过实战考验但缺乏社区支持或文档的公司形成鲜明对比。选择能使你和你的团队达到适当平衡的框架。一些受欢迎的选项是:
-
Apache JMeter
:广受欢迎的开源负载测试框架 Java-based,这要归功于其强大的功能集和易用性。它能够模拟复杂的用户场景、广泛的支持协议、全面的报告和久经考验的往绩记录,使得 JMeter 成为负载测试的可靠选择。 -
Locust
:建立在事件驱动架构上的现代分布式负载测试框架,既高性能,又节约资源。测试是用 Python 编写的,允许灵活的测试场景,利用数千个强大的第三方库,同时保持友好和易于阅读。 -
Grafana K6
:强大的负载测试框架,将易用性与高级功能相结合。它支持分布式负载生成、灵活的脚本编写以及与 Grafana 的无缝集成以实现数据可视化,这使得 Grafana K6 成为一个有吸引力的选择。 -
Gatling
: Open-source 负载测试框架,以其性能和可扩展性而闻名。其 Scala-based域特定语言 (DSL) 允许开发人员创建简洁、可维护的负载测试脚本,其强大的报告和分析功能可提供对被测系统的详细见解。
实施步骤
-
负载测试阶段:在各个开发阶段(早期开发、冲刺、预生产和部署后)进行负载测试,以验证系统性能并发现问题。
-
Load-generating架构:根据可扩展性需求、管理偏好和特定测试要求选择适当的负载生成架构(EC2、EKS、Fargate 或 Lambda)。
-
负载测试框架:选择一个平衡易用性、性能、灵活性和社区支持的负载测试框架(如 JMeter、Locust、Grafana K6 或 Gatling),以满足团队的需求。