2. 测试环境与前置条件
本章定义执行 AOSP Framework 帧率抖动回归测试所需的硬件、软件、系统参数及基线状态。所有参与测试的设备和模拟器必须通过本阶段前置条件核查,否则后续测试结果无效。
核心原则:帧率抖动对系统负载、温度、刷新率极端敏感,任何环境变量未收敛都可能导致归因错误——必须先收敛环境,再执行测试。
2.1 适用场景
- 回归测试:Framework 层代码变更(如 SurfaceFlinger、Choreographer、VSync 调度、Input 分发)后的抖动对比验证。
- 兼容性验证:同一套 AOSP 原生代码在不同设备形态(手机/平板/车载)上的帧率稳定性。
- 系统基线建立:新版本 AOSP 发布前,确立“无代码变更”场景下的抖动基准。
- 温控/省电策略影响评估:验证温度触发降频或电池模式切换后抖动的劣化幅度。
2.2 前置条件
2.2.1 设备选型
| 类型 | 推荐型号/版本 | 适用场景 | 限制 |
|---|---|---|---|
| AOSP 原生设备 | Pixel 6/7/8(AOSP 构建) | 帧率抖动精确测量 | 需解锁 bootloader、刷入 userdebug 或 eng 版本 |
| GCE 模拟器 | Android 14/15 AOSP x86_64 镜像 | 无实体设备时的快速回归 | 不反映真实 GPU vsync 和温控行为,仅用于 Smoke Test |
| 自定义开发板 | RK3588、SDM845 等 AOSP 移植板 | 特定硬件平台验证 | 必须保证帧率可测量(支持 dumpsys SurfaceFlinger 或 Perfetto) |
2.2.2 系统版本
- 测试对象系统版本必须固定为 AOSP TagID(例如
android-14.0.0_r35),并在测试全周期内不升级。 - 若使用模拟器,须指定 同一 build ID 的 system.img 和 ramdisk.img。
2.2.3 屏幕刷新率
- 强制锁定为 固定刷新率(60 Hz 或 90 Hz),禁止使用 Auto 或 Adaptive 模式。
- 验证命令:
adb shell settings put system peak_refresh_rate 60.0
adb shell settings put system min_refresh_rate 60.0
adb shell dumpsys display | grep "ActiveDisplayMode"
- 如果设备支持可变刷新率(VRR),必须通过开发者选项或 settings 命令强制禁用,否则抖动指标将因刷新率跳变而失真。
2.2.4 温控状态
- 设备必须在 室温 25±2°C 环境下静置至少 10 分钟,电池温度 ≤ 38°C(通过
/sys/class/thermal/thermal_zone*/temp读取)。 - 若使用模拟器,忽略温控项,但需在记录中标注 “Simulator – thermal control disabled”。
2.2.5 电池模式
- 电池模式必须设置为 均衡(或 “Performance”),禁止节能模式。
- 设置命令:
adb shell cmd battery set status 1 # 模拟充电状态
adb shell cmd power set-mode 0 # 0=性能模式
# 验证:
adb shell dumpsys battery | grep "power save mode"
避坑提醒:部分设备(如 Pixel 6)在插入 USB 调试时默认进入“限制充电”模式,可能导致 CPU 频率受限。务必使用
adb shell echo 1 > /sys/class/power_supply/usb/charge_type 或外接可调电源保证充足供电。2.3 环境验证流程图(SVG)
下图概括测试环境前置条件的检查顺序和决策点。在每个检查节点未通过时,必须修正确认后方可进入下一环节。
2.4 输入输出物
| 类别 | 输入 | 输出 |
|---|---|---|
| 设备配置 | 设备型号、序列号、AOSP TagID | 环境检查清单(已勾选) |
| 系统参数 | 刷新率、电池模式、温控读数截图 | 前置条件确认报告(PDF / Markdown) |
| 环境日志 | dumpsys display、dumpsys battery、thermal_zone 输出 | 环境快照存档(logcat + shell 输出文件) |
2.5 责任边界
- 测试工程师:负责执行环境配置,确保设备满足前置条件;记录环境快照;对模拟器标注软限制。
- 环境管理员(若由中台提供):负责维护设备温控房、电池充电状态、AOSP 镜像一致性;提供已验证设备清单。
- 开发责任人:在回归测试前确认设备系统版本符合预期 TagID,并协助解决环境配置 bug。
2.6 记录材料
每次回归测试必须生成以下记录,存入项目共享目录 env_check/yyyymmdd/:
env_checklist.md– 所有前置条件的逐项核对,标记 PASS/FAIL。env_snapshot.txt– 执行命令的原始输出(包含时间戳)。device_photo.jpg– 如果使用实体设备,拍摄设备正面(显示固件版本、刷新率设置页)以作视觉证据。
2.7 异常处理
| 异常场景 | 处理动作 | 结果判定 |
|---|---|---|
| 设备电池温度 > 40°C | 停止测试,设备静置降温至 38°C 以下;若 15 分钟内无法恢复,标记环境 FAIL | 环境 FAIL,禁止进入测试 |
| 刷新率无法锁定(始终 Auto) | 检查设备固件及驱动;若无法修复,降级使用模拟器基线对比 | 降级到 Smoke Test 级别 |
| 模拟器无法获取真实帧率 | 确认使用 -gpu swiftshader_indirect 渲染;若依然失败,标记为 “Unmeasurable” | 跳过该设备,仅记录问题 |
| 电池模式切换失败 | 检查电源管理 SELinux 权限;无 root 设备可改用 Android Debug Bridge 强制设置 | 强制设置后需重启 adbd 验证 |
2.8 验收标准
- 设备类型、系统版本、刷新率、温控、电池模式五项前置条件全部通过(PASS)。
- 环境快照存档完整且可在同一台设备上复现。
- 异常处理记录清晰,未被忽略的 FAIL 项不得进入后续测试步骤。
- 模拟器测试必须在报告中首行醒目标注 “Simulator – results may not represent real device behavior”。