在企业中完成性能测试项目是一个挑战性强、技术含量高的任务。本文将分享一个公司完成高性能游戏系统的性能测试过程,展示如何完成一次成功的性能测试项目。
项目背景:这是一家游戏公司,推出了一款新的游戏软件,系统要求高性能、高并发、高可用,为确保用户体验和游戏体验,公司决定在正式上线前对系统进行性能测试.
第一步:
定义测试目标
在项目启动之初,团队首先进入到定义测试目标的阶段,据此来确定测试范围、测试手段和测试工具。此阶段重要性不言而喻,目标不明,则结果无从说起。
通过团队讨论,确立了以下的目标:
- 针对目标场景下的指标进行基准测试,并得到高可用性的性能数据。
- 评测流量下的异常场景,确定系统多少负载能力及扩展架构。
- 通过性能测试结果来查找和定位系统的瓶颈,并通过在代码层面进行优化提升系统吞吐量及性能表现。
- 揭示用户最有可能使用系统的行径模式及环境和业务决策。
第二步:
测试计划调研
按照测试目标,测试团队进行测试计划调研。我们将基于应用程序不断压测及观察应用程序的运行状况来判定应用程序的瓶颈,并且对观察结果进行分析和总结,为分析改善提供有力数据支撑。
针对要测的业务模式,我们设计出了4个具有典型意义的场景:
- 500-10000个并发用户请求。
- 负载测试,根据实际场景数据模拟用户操作习惯,
- 容量测试,以应用程序在各个方面的性能和资源限制,并确定系统配置的最大极限。
- 24小时稳定性测试,保证系统在持续24小时真实环境下的高可用性。
第三步:
执行测试计划
通过测试计划调研,我们进行了测试项目将近1个月的时间安排到执行。我们使用了多种工具,应用于不同测试领域,例如LoadRunner、JMeter、Appdynamics、Keynote、Fiddler、Wireshark、Flume等等。在这里不展开程序设计中复杂的使用。
下面是使用JMeter测试的例子,它是一款开源的压力测试工具。它可以对不同种类的服务器、网络协议进行测试。
下面是相关的测试结果:
基准测试:
将系统在低负载环境下按照预定的标准进行性能测试,例如单用户响应时间,服务器负载以及数据库处理能力都是很好的评估指标。测试结果如下所示:
测试指标 | 结果 |
每秒事务处理能力 | 7500 |
平均响应时间 | 0.3秒 |
CPU使用率 | 70% |
内存使用率 | 60% |
负载测试:
使用模拟混合负载的测试,在同一时刻模拟大量高并发用户同时访问系统,测试结果如下所示:
测试指标 | 结果 |
每秒事务处理能力 | 13800 |
平均响应时间 | 2秒 |
最大响应时间 | 5秒 |
CPU使用率 | 85% |
内存使用率 | 80% |
容量测试:
容量测试中使用jMeter模拟出可实现的并发用户访问系统,测试结果如下所示:
测试指标 | 结果 |
每秒事务处理能力 | 28000 |
平均响应时间 | 7秒 |
最大响应时间 | 15秒 |
CPU使用率 | 99% |
内存使用率 | 95% |
稳定性测试:
保证系统在持续24小时真实环境下的高可用性,测试结果如下所示:
测试指标 | 结果 |
24小时无故障时间 | √ |
CPU使用率 | 85% |
内存使用率 | 92% |
第四步:
测试结果及异常分析
通过以上测试,团队分析性能数据,据此针对性进行优化, 例如通过清理CPU 日志和数据库存储调优等方式进行优化,以提高系统稳定性,优化结果如下所示:
测试指标 | 优化前 | 优化后 |
每秒事务处理能力 | 28000 | 45000 |
平均响应时间 | 6秒 | 0.2秒 |
最大响应时间 | 13秒 | 1秒 |
CPU使用率 | 99% | 70% |
内存使用率 | 97% | 80% |
根据性能测试结果,我们发现系统在负载和容量测试场景下呈现出问题
负载测试:
我们注意到在高负荷下,响应时间开始大幅上升并且响应时间的标准差开始下降。这表明系统正在达到其极限,并可能无法容忍更多的用户。
容量测试:
当我们在大负载下执行测试时,发现系统性能发生了很大的下降。我们发现jMeter本身不能支持如此大量的并发用户访问,我们使用了不同的工具来验证测试结果,我们发现系统极限在28000并发访问量左右。该结果使我们意识到系统还需要在某些方面进一步优化。
第五步:
得出结论——性能测试报告
通过各种性能测试方式,团队得出了一个详细的测试报告。该报告概括了测试结果及其优化方案,并包括了性能测试的详细数据、结论和建议,以便游戏开发团队根据测试结果决定是否更改系统架构、代码或参数。最终,该游戏系统在经过不断测试和改进后成功上线,并获得了良好的用户体验。
总结:
该高性能游戏系统性能测试案例中,测试团队首先制定了测试目标,确定测试计划,然后采用不同的测试工具进行测试,为改进系统性能提供了数据支持,并得出了详细的测试报告。测试结果中的异常分析让工程团队能够针对具体的问题进行精细的优化。这一成功性能测试的案例展示出一个优秀公司如何在高压力的环境下验证性能、保证高可用性和安全性,实现巨大价值的过程。
另特意为各位同学准备了一份13G的超实用干货自学资源,涉及的内容非常全面,涵盖功能测试、Linux数据库、Python编程语言,接口测试、UI自动化测试、性能测试……包括软件学习路线图,50多天的上课视频、16个突击实战项目(满足你对测试经验的需求),80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2023软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助…这些都在我的软件测试学习交流群里:110685036