今年上半年,腾讯WeTest视频号举办了一场专题直播,主讲嘉宾耿天平(Bob)为大家带来了题为《PerfDog Evo(v10.0)版,打破游戏与APP性能测试壁垒》的精彩分享。这场直播分为两大部分:第一部分是Bob对性能测试的经验总结及分享;第二部分则是他针对PerfDog Evo(v10.0)版三大块能力更新做的详细介绍。
为了让未收看直播的用户能够更好地学习和了解性能测试及产品特性,我们对直播内容进行了如下梳理和总结。想进一步重温课程的同学可以关注WeTest视频号,直播回放已发布至腾讯WeTest视频号。
No.1 性能测试的经验总结及分享
首先,Bob详细地讲解了性能测试的重要性、关键指标以及如何进行性能分析和优化。他强调,性能问题会直接影响用户体验,包括游戏卡顿、手机发热、耗电快以及网络反应慢等方面。这些问题如果处理不当,会导致用户口碑下降,进而影响用户量和项目收入。因此,性能测试至关重要。在性能测试中,需要从多个维度来衡量应用或游戏的性能,如流畅度、画质、品质等。不同的项目需要选择不同的性能指标,而且单一的FPS并不能全面反映应用或游戏的流畅度,更准确的方法是通过帧时间来衡量。
接下来,Bob分享了如何在实际工作中进行性能分析和优化。他提到,在进行性能测试时,保持环境的稳定性至关重要。测试前需要重启手机、关闭后台进程等,确保测试环境尽可能干净。此外,为了获得准确的性能数据,建议使用专门的性能测试设备,并定期对其进行维护。在性能分析过程中,需要逐层分析,从宏观到微观,不断细化数据。首先要了解项目的结构,包括引擎、线程等,然后分析线程状态、调用堆栈等信息,以找出耗时原因。在定位问题时,要保持严谨的逻辑,避免模棱两可的判断。在解决性能问题时,需要考虑各种解决方案的优缺点、实现风险、功能性分析以及兼容性等因素。在选择解决方案时,要充分权衡各种因素,确保方案的可行性和有效性。此外,降低计算量是性能优化的关键。通过优化算法、减少不必要的计算等方法,可以有效降低计算量,从而提高性能。最后,在解决性能问题后,需要进行验证,确保问题已经得到解决。验证过程中,要保持与之前测试相同的操作和环境,以确保结果的准确性。
No.2 PerfDog Evo(v10.0)版三大能力详解
在第二部分,Bob详细介绍了PerfDog Evo(v10.0)版的三大块能力更新,包括深度分析、APP启动时长分析以及网络测试。
首先,他以一个UE4官方Demo为例,生动地展示了如何使用PerfDog的深度分析功能一步一步定位问题。他强调了选择合适版本进行测试的重要性,一般来说,我们在测试过程中常用的是Shipping版本,也就是发布版本,但这个版本往往缺少一些调试和性能相关的信息。因此,当我们发现性能问题时,需要使用包含性能数据输出的版本如test版本、dev版本或debug版本,这样才能更好地进行分析。接下来,他重现了问题场景,也就是用户第一次登录进入游戏时,发现在走到某个地方时会出现严重的卡顿。他使用深度分析功能,清晰地展示了在卡顿时,frameTime出现了一个非常高的尖峰,这是一个明显的性能问题的信号。进一步的分析发现,GameThread和RenderThread在运行过程中存在大量的空档,而RHI线程几乎一直在running状态,这个发现进一步确认了他的判断。然后他通过查看调用堆栈,发现Shader Link Time占用了220毫秒,这就是导致卡顿的原因。他提出了解决方案:在进入场景之前将所有需要的Shader编译好,以此来避免卡顿现象。
其次,他介绍了APP启动时长分析。用户在使用APP时的耐心是有限的,一个主流APP的冷启动时长如果达到5秒钟,已经是非常不好的体验。为了分析APP冷启动为什么耗时,可以利用PerfDogEvo的深度分析功能,选择Systrace模式进行分析。通过这些信息,可以很容易地判断出问题所在。例如,如果发现主线程一直不在running状态,而是在等待TaskManager加载和验证Task(Java源代码编译后的文件),那么可以通过优化这个过程来提高启动速度。
最后,他介绍了网络测试功能。性能优化很多时候会牵扯到网络,因为在弱网环境下,保证良好的用户体验非常具有挑战性。例如,当用户在电梯内、高铁上或者频繁切换WiFi和4G时,网络波动会影响应用的体验。为了解决这个问题,PerfDogEvo提供了丰富的网络测试案例,模拟不同的网络场景,如上海地铁高峰期的网络情况,以便开发者检测应用在这些场景下是否存在问题。
No.3 在线互动问答
Q1:新增的这些功能适合什么样的角色来查看?是QA还是开发?需要掌握哪些技能?
Bob:新增功能适合QA和开发人员查看,但开发人员可能用得更多。测试人员在了解引擎的情况下也可以使用。建议测试人员多使用这些功能,以便更好地发现和定位问题。
Q2:V10.0 Evo版本的深度测试功能具体使用流程是怎样的?如何快速地使用该功能来判断游戏或者APP内的卡顿及原因?是否有demo演示?
Bob:具体使用流程和如何判断游戏或APP内的卡顿及原因,可以参考Perfdog帮助中心的详细介绍。关于Demo演示,可以从UE官网下载Demo,而APP测试则可以随便找一个手机APP进行。
Q3:怎么用AI和Perfdog来进行结合测试达到一个更高效的测试能力?
Bob:性能测试需要严谨,而AI是概率性的,目前尚未看到AI与性能测试的很好结合。如果有同学能做出好的案例,欢迎分享给我们。
Q4:新版本是否支持VR,还有AR的应用?
Bob:新版本已支持VR应用(Quiz),但尚未支持AR应用。我们会关注VR和AR的市场规模,如果达到一定程度,我们会快速跟进支持。
Q5:这个工具是否只支持Unity和UE两款引擎开发的native游戏?
Bob:目前深度分析功能针对游戏仅支持Unity和UE引擎,因为这两款引擎是市场上最常用的。我们正在探讨支持其他引擎的可能性,希望能定义一套标准格式。如果有需要支持的引擎,可以联系我们尝试实现。
总的来说,Bob的分享为我们提供了一套完整的性能测试和分析的方法论,以及丰富的实践经验。他的分享让我们更深入地理解了性能测试的重要性和方法,为我们在实际工作中定位和解决性能问题提供了宝贵的参考。同时,他对PerfDog Evo(v10.0)版的介绍,使我们对这款工具的强大功能有了更深入的了解。无论是性能测试新手,还是经验丰富的开发者,都可以从Bob的分享中获得宝贵的启示。