Androidbench参数如何解读?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 参数 正文

AndroidBench 不是一个单一的命令行工具,而是一个基于 Android 性能分析框架(如 ADB, am, dumpsys 等)的自动化测试脚本集合,它的核心思想是定义一套标准化的测试流程和指标,然后通过脚本来自动化执行这些流程并收集数据。

它的“参数”可以分为几个层面:

  1. 配置文件参数:这是最核心的参数,通过修改配置文件来定义测试场景、应用包名、测试时长等。
  2. 命令行执行参数:用于控制脚本的执行,如启动、停止、指定配置文件等。
  3. ADB 命令参数:脚本内部会大量使用 ADB 命令,这些命令的参数也会影响最终结果。

下面我们逐一进行详细说明。


核心:配置文件参数

这是你自定义测试内容的主要方式,AndroidBench 的配置通常是 JSON 格式的文件(config.json),你通过修改这个文件来告诉脚本“要测试什么”、“怎么测试”。

一个典型的 config.json 文件包含以下主要部分:

基本配置

这部分定义了测试的基本信息。

  • test_name: 测试任务的名称,用于生成报告时区分。
  • duration: (关键参数) 每个测试场景的持续时间,单位是秒。300 表示运行5分钟。
  • iterations: 每个测试场景重复执行的次数。
  • warmup_iterations: 在正式开始收集数据前,应用的预热轮数,这很重要,可以排除应用冷启动带来的干扰。
  • package_name: 被测试应用的包名(com.example.myapp)。
  • main_activity: 被测试应用的主 Activity 类名(com.example.myapp.MainActivity)。

示例:

{
  "test_name": "MyApp_Performance_Test",
  "duration": 600, // 运行10分钟
  "iterations": 3, // 每个场景跑3遍
  "warmup_iterations": 1, // 预热1遍
  "package_name": "com.example.myapp",
  "main_activity": "com.example.myapp.MainActivity"
}

测试场景

这是配置文件的核心,定义了要执行的具体性能测试,通常是一个数组,你可以定义多个场景,脚本会按顺序执行。

每个场景对象通常包含:

  • name: 场景名称("Scrolling", "Video Playback")。
  • actions: 该场景下要执行的一系列操作,AndroidBench 通过 adb shell am 命令来模拟用户操作。

actions 中的常见操作参数:

  • command: ADB 命令,通常是 am (Activity Manager) 的子命令。
    • am start -n <package_name>/<activity_name>: 启动一个 Activity。
    • am force-stop <package_name>: 强制停止应用。
    • am broadcast ...: 发送广播。
  • args: 传递给 command 的参数。
  • delay: 执行完该操作后等待的时间,单位是毫秒,这对于模拟用户操作间隔至关重要。
  • type: 操作的类型,有时用于分类或特殊处理。

示例:一个滚动测试场景

"scenarios": [
  {
    "name": "Vertical_Scroll_List",
    "actions": [
      {
        "command": "am",
        "args": ["start", "-n", "com.example.myapp/com.example.myapp.MainActivity"],
        "delay": 2000
      },
      {
        "command": "input",
        "args": ["swipe", "500", "1500", "500", "500", "300"], // 从下往上滑动
        "delay": 1000
      },
      {
        "command": "input",
        "args": ["swipe", "500", "500", "500", "1500", "300"], // 从上往下滑动
        "delay": 1000
      }
      // ... 可以重复滑动动作
    ],
    "duration": 300 // 这个场景总共持续5分钟
  }
]

命令行执行参数

当你运行 AndroidBench 的主脚本(通常是 Python 脚本,如 run.py)时,可以通过命令行参数来控制其行为。

  • --config-c: (最常用) 指定要使用的配置文件路径。
    python run.py --config /path/to/your/config.json
  • --output-dir-o: 指定测试结果的输出目录,如果不指定,通常会使用默认目录(如 results/)。
    python run.py -c config.json -o ./my_test_results
  • --verbose-v: 启用详细输出模式,在控制台打印更多调试信息。
    python run.py -c config.json -v
  • --device-id-d: 指定要连接的设备 ID,如果你有多个连接的 Android 设备,这个参数必不可少。
    # 先用 'adb devices' 查看设备 ID
    python run.py -c config.json -d emulator-5554
  • --help-h: 显示帮助信息,列出所有可用的命令行参数。

ADB 命令参数(脚本内部使用)

虽然这些不是你直接传给 AndroidBench 的参数,但理解它们有助于你更好地配置测试,AndroidBench 脚本会执行一系列 ADB 命令来收集性能数据,这些命令的参数决定了数据的维度和精度。

CPU 使用率

脚本通常使用 adb shell topadb shell dumpsys cpuinfo 来获取 CPU 数据。

  • adb shell top -n 1 -d 1 -s cpu: 每秒刷新一次,按 CPU 使用率排序,只显示一轮。-n 是迭代次数,-d 是延迟,-s 是排序字段。
  • 关注点:脚本会解析输出,提取目标应用的 USERKERNEL CPU 使用率,计算总和。

内存使用情况

脚本使用 adb shell dumpsys meminfo <package_name>

  • 关注的关键参数
    • Pss: 这是最重要的指标,表示应用实际占用的物理内存,包含了共享库按比例分摊的部分。
    • Private Dirty: 应用私有的、被修改过的内存,这部分无法被交换出去,对性能影响较大。
    • Shared_Dirty: 应用与其他进程共享的、被修改过的内存。

功耗

功耗测量比较复杂,通常需要硬件支持或特定系统接口。

  • adb shell dumpsys batterystats: 可以获取详细的电池统计信息,包括每个应用的耗电情况。
  • adb shell dumpsys power: 获取电源状态信息。
  • 注意:精确的功耗测量通常需要像 Monsoon Power Meter 这样的硬件设备。

帧率

这是衡量应用流畅度的关键指标。

  • adb shell dumpsys gfxinfo <package_name>: 这是获取 FPS 数据的主要方式。
    • 脚本会定期执行此命令,并关注其中的 Frames 部分,特别是 janky (卡顿) 帧的数量。
    • 关键参数total frames, janky frames, 60fps, 59fps, 58fps 等,FPS = total frames / duration

网络流量

  • adb shell cat /proc/<pid>/net/dev: 获取指定进程的网络 I/O 统计。
    • 脚本需要在测试开始和结束时分别获取一次,然后计算差值,得到上传和下载的总字节数。
    • tx_bytes (发送), rx_bytes (接收)。

总结与实际操作建议

  1. 从配置文件开始:你的首要任务是编写一个 config.json 文件,明确你要测试的应用、测试场景(如滚动、点击、后台切换)以及每个场景的持续时间。
  2. 理解 actions:熟练使用 adb shell amadb shell input 命令来构建你的测试场景,可以先手动在命令行里执行这些命令,确认效果无误后再写入配置文件。
  3. 使用命令行参数-c (指定配置) 和 -d (指定设备) 是最常用的两个启动参数。
  4. 分析报告:测试完成后,AndroidBench 会生成一个包含所有数据的报告(通常是 CSV 或 JSON 格式),你需要用 Excel、Python Pandas 或其他工具来分析这些数据,绘制图表,找出性能瓶颈。

AndroidBench 的参数体系是:

命令行参数 (控制脚本) -> 配置文件参数 (定义测试内容) -> ADB 命令参数 (执行具体操作和收集数据)

掌握这三层,你就可以灵活地使用 AndroidBench 来进行各种自动化性能测试了。

-- 展开阅读全文 --
头像
magicleapone参数
« 上一篇 今天
titanxpascal参数
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]