0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于MacroBenchmark的性能测试量化指标方案

jf_uPRfTJDa 来源: 移动Labs 2023-10-17 10:15 次阅读

Labs 导读

基于Benchmark的性能测试量化指标方案是一种用于评估和量化系统性能的方法。通过使用Benchmark测试工具,该方案旨在提供可靠的性能数据,并使用具体的指标来衡量系统在各个方面的表现。本文将介绍基于Google MacroBenchmark的性能量化指标测试的工程配置、测试流程、核心指标和应用案例,帮助Android 开发者更好地评估和比较App的性能。

作者:孙仁伟

单位:中国移动智慧家庭运营中心

Part 01背景

随着App业务不断增长和功能的迭代,代码量快速增加,导致应用结构复杂度提高。同时,在App开发过程中,与竞争对手的App进行性能比较也是必要的。为了避免代码增长和功能迭代带来的性能下降,我们需要一套技术方案来监控App版本的性能,以指导开发人员及时进行代码重构。

Part 02方案说明

Benchmark,即基准测试,是检查和监控应用性能的一种方式。通过对每个移动App版本的迭代运行基准测试,可以帮助分析和调试性能问题,并确保迭代的更改不会引起性能下降。

以下是一些常见的移动App的benchmark方法和工具:

1.Startup Time Benchmark:评估应用程序的启动时间,即从用户点击应用图标到应用程序完全加载并可交互的时间。可以使用各种工具和方法来测量启动时间,如使用应用性能监测工具或手动计时。

2.Responsiveness Benchmark:评估应用程序对用户操作的响应速度,包括用户界面的流畅度和操作的延迟。可以使用性能监测工具记录用户操作和应用程序响应时间,或者进行用户体验测试来评估应用的响应性能。

3.Memory Usage Benchmark:评估应用程序在运行过程中使用的内存量。可以使用内存分析工具来监测应用程序的内存使用情况,并进行比较和分析。

4.Battery Consumption Benchmark:评估应用程序对设备电池的消耗情况。可以使用电池消耗监测工具来测量应用程序在不同使用情景下的电池消耗量,并进行比较和分析。

5.Network Performance Benchmark:评估应用程序在使用网络功能时的性能和速度。可以使用网络性能监测工具来模拟不同网络条件下的应用性能,并进行测试和比较。

针对Startup Time Benchmark和Responsiveness Benchmark,Google提供了Macrobenchmark库,该库主要用于评估Android App整体性能的基准测试。其旨在模拟真实世界的使用情景,通过测试用例以涵盖各种应用使用过程中交互操作,以综合评估应用的性能和响应能力。

2.1 Macrobenchmark

2.1.1 设置Macrobenchmark

1. 打开应用Application工程,在 Android Studio 的 Project 面板中右键点击项目或模块,然后依次点击 New > Module。

2. 从Templates窗格中选择 Benchmark。

3. 自定义目标应用(要进行基准测试的应用),以及新的Macrobenchmark模块的软件包和模块名称。

4. 点击Finish,从而创建Macrobenchmark Module。

8ce88210-6b2e-11ee-939d-92fbcf53809c.png

2.1.2 创建Macrobenchmark类

在Macrobenchmark,我们根据业务自身情况,创建所需的性能指标Benchmark测试用例。测试用例可以基于Macrobenchmark 库中的`MacrobenchmarkRule` JUnit4规则所含的API实现。

比如我们现在需要对App应用启动时间进行监控。则可以在Macrobenchmark Module编写一个测试用例类,在测试用例类中编写测试用例方案,如测量5次打开应用时间。

创建startup测试用例,该用例基于MacrobenchmarkRule.measureRepated。

8d01c842-6b2e-11ee-939d-92fbcf53809c.png

其中各参数

packageName:App的包名;

metrics:测量度量。此处我们选择 StartupTimeMetric,标识测量启动时长;

iterations:重复次数。表示该项用例的测试次数,可以通过多次测量取均值的方式,避免单次测量的偏差影响;

setupBlock:用例前置操作。;

最后的 {} :用例内容。此处我们执行 startActivityAndWait,表示启动App并等待启动完成,App首帧显示。

2.1.3 运行基准

在Android Studio中运行测试,以衡量应用在设备上的性能。可以像使用测试类或方法旁边的边线操作运行任何其他 `@Test` 一样运行基准,如下图所示。

8d1403a4-6b2e-11ee-939d-92fbcf53809c.png

也可以通过`gradle`命令,从命令行运行Gradle模块中的所有基准:

8d291de8-6b2e-11ee-939d-92fbcf53809c.png

2.1.4 基准结果

基准运行成功后,指标会直接显示在Android Studio中,还会以JSON文件形式输出以供持续集成环境使用。

每次衡量的迭代过程均会捕获单独的系统跟踪文件。点击Test Results窗格中的其中一个链接,可以打开这些结果跟踪文件,如下图所示。即平均启动时长为748.1ms。

8d3a8eca-6b2e-11ee-939d-92fbcf53809c.png

跟踪文件加载完成后,Android Studio会提示您选择要分析的进程。系统会预先填充目标应用进程:

8d501b64-6b2e-11ee-939d-92fbcf53809c.png

跟踪文件加载完成后,Studio将在CPU性能剖析器工具中显示结果:

8d64bb1e-6b2e-11ee-939d-92fbcf53809c.png

Part 03应用实例

在实验工程中,在Application.onCreate中增加了200ms睡眠。

运行实验工程,构建App,运行App,运行Macrobenchmark。在CPU性能剖析器工具中可以看到主线程在app.onCreate方法执行时耗时达223.12ms。

8d76e708-6b2e-11ee-939d-92fbcf53809c.png

通过分析CPU性能剖析器工具 的示图,可以判断app.onCreate 时,主线程存在约200ms异常时延。再阅读相关代码,可以查出该异常部分的睡眠逻辑。

将该异常睡眠逻辑移除,从新运行实验工程,构建App,运行App,运行Macrobenchmark。

在CPU性能CPU性能剖析器工具中可以看到主线程在app.onCreate方法耗时约为22.01ms,时延正常,方法执行过程中只执行了相关调用方法,说明问题得到了修复。

8d87e490-6b2e-11ee-939d-92fbcf53809c.png

通过以上案例,我们可以看出通过Macrobenchmark + CPU性能剖析器工具, 我们可以对应用特定场景进行时延分析,并对新增时延进行有效归因,从而能针对性的进行优化处理。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125639
  • APP
    APP
    +关注

    关注

    33

    文章

    1529

    浏览量

    71629
  • 中国移动
    +关注

    关注

    22

    文章

    5438

    浏览量

    69363
  • 性能测试
    +关注

    关注

    0

    文章

    189

    浏览量

    21213

原文标题:技术 | 基于MacroBenchmark的性能测试量化指标方案

文章出处:【微信号:5G通信,微信公众号:5G通信】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    射频电缆及测试电缆组件的性能指标

    该文详细讨论了射频电缆及测试电缆组件的各项指标性能,为广大测试工程人员在选用高性能高可靠性射频测试
    发表于 10-30 11:28 1556次阅读

    Linux性能测试性能测试指标详解

    性能测试指标是衡量系统性能的评价标准,常用的系统性能测试指标
    发表于 12-23 14:50 412次阅读

    低比特量化技术如何帮助LLM提升性能

    针对大语言模型 (LLM) 在部署过程中的性能需求,低比特量化技术一直是优化效果最佳的方案之一,本文将探讨低比特量化技术如何帮助 LLM 提升性能
    的头像 发表于 12-08 15:26 637次阅读
    低比特<b class='flag-5'>量化</b>技术如何帮助LLM提升<b class='flag-5'>性能</b>

    性能指标测试

    性能指标测试
    发表于 08-17 14:51

    请问ZIGBEE的硬件性能指标都要测试哪些内容

    我们公司买了一台莱特波特的IQxel ,现在要用来测试ZIGBEE 的射频,想问一下ZIGBEE 硬件性能指标都要测试哪些内容,在多少范围才算是一个良好的ZIGBEE模块
    发表于 08-17 06:11

    性能充放电方案在电池测试设备中的应用

    及内阻等指标进行测试,对于电池测试设备的系统设计最重要的三个指标是充放电精度,成本和转换效率。 对于电池测试设备的核心功能电池充放电,市面上
    发表于 11-08 06:36

    INT8量化常见问题的解决方案

    一、int8的输出和fp32模型输出差异比较大 解决方案: 检查前后处理是否有问题,int8网络输入输出一般需要做scale处理,看看是否遗漏? 通过量化可视化工具分析int8的输出和fp32
    发表于 09-19 06:09

    GPRS端到端测试办法及系统侧性能统计指标

    GPRS端到端测试办法及系统侧性能统计指标:KPI理论值和期望值测试办法系统侧的性能统计指标
    发表于 07-27 22:07 29次下载

    数据库性能评测指标及其测试方法

    近些年来,国产数据库得到了快速的发展,但是针对其性能测试方法和测试指标却参差不齐。针对上述问题,中国软件评测中心在大量数据库测试的基础之上
    发表于 03-17 15:22 79次下载

    使用OTA测试5G基站射频指标方案说明

    在5G之前的基站射频指标测试大多采用传导测试的方法,但在5G时代由于Massive MIMO技术的应用,使得传导测试的复杂程度大幅度上升,而且传导
    发表于 11-02 10:40 12次下载
    使用OTA<b class='flag-5'>测试</b>5G基站射频<b class='flag-5'>指标</b>的<b class='flag-5'>方案</b>说明

    电缆性能指标测试方法

    熟悉电缆电性能指标种类及定义; 掌握电缆电性能指标测试方法; 建立电缆重要性能指标的检验常态化机制。
    发表于 06-22 10:19 15次下载

    软件性能测试常见指标

    软件性能测试是指测试I程师运用各种自动化测试工具在正常、峰值或者特殊异常情况下对系统软件进行测试,以检测系统的
    的头像 发表于 10-31 17:44 990次阅读

    软件性能测试常见指标。在哪里测试测试

    软件性能测试是指测试I程师运用各种自动化测试工具在正常、峰值或者特殊异常情况下对系统软件进行测试,以检测系统的
    发表于 12-22 23:13 260次阅读

    软件性能测试方案怎么编写?

    一、软件性能测试方案是什么? 软件性能测试方案是针对软件产品开展
    的头像 发表于 02-28 15:04 1755次阅读

    半导体IC测试解决方案测试指标包含哪些?

    半导体IC测试解决方案测试指标包含哪些? 半导体IC测试解决方案
    的头像 发表于 11-09 09:24 493次阅读