Files
matrix-screen-controller/移动端相关内容/安卓app/如何安卓测试/按影响选测.md
T

9.7 KiB
Raw Blame History

Android 按变更影响选测(当前规则)

WiFi 通道新增场景、前置条件和验收标准见 WiFi 传输测试。wifi-transport-recovery 切手机无线开关,wifi-transport-network 重新应用设备当前网络,wifi-transport-restart 重启主服务,均不得并入普通全量或公共回归。wifiTransport 是独立模拟器场景,不接实机。

适用 MOBILE-TEST-SELECTION、TEST-MOBILE-SELECTION、TEST-MOBILE-INTEGRATION。本文优先于历史版本专项验收中的固定执行顺序。授权决定怎样操作设备,不代表每轮必须使用设备。

选择范围

先列变更、直接调用与共享依赖影响,再选择能提供足够证据的最低层级。不能仅以页面文件未修改判定无影响,也不能以新功能提交/打包为由自动重跑所有页面。

变更 默认验证 升级为定向真机的条件
文档、映射 文档一致性、仓库卫生 无
解析、校验、业务状态 sharedCore JVM / 双端协议测试 实际平台交互改变或模拟无法解释故障
文案、布局、表单、导航 受影响 uiTest 场景,baseline 配置 厂商/实际设备特有问题或模拟证据不足
BLE/GATT/握手/重连 单元测试和对应真机连接场景 必须覆盖实际改变的通信路径
权限、Activity/后台 相应 Android 平台测试;必要真机 真实蓝牙权限、MIUI、后台限制改变
WiFi 校验和模拟器 settings 激活、切换、恢复实现改变才真正切网
构建、SDK、依赖 构建及受影响兼容性 覆盖安装、关键通信或平台风险
systemd、部署、驱动 设备侧既有流程 不因普通手机界面修改触发

共享导航/主题影响多个页面时覆盖相关页面;局部修改不测无影响页面。模拟器同样按需:默认单一 baseline;布局适配才增加 narrow/large-font/landscape;API/权限兼容变化才增加相关 API 的 AVD。不能用 API 35 的模拟界面结果冒充 API 26/30/31+ 权限验收。

全量仅在明确完整验收或影响无法可靠收敛时使用,写明原因。--full-common 是明确定义的四项公共回归,不等于全量验收;切网、写入、长轮询和异常恢复始终单独选择。发布候选仍按发布风险选择关键链路,打包成功不代表验收成功。

已运行且相关的低成本回归通过后,不无理由重复运行。必要的测试因环境缺失没做,记录“未验证”;无影响的测试记录“按影响跳过”。没有自动将失败改成跳过的机制。

场景和稳定编号映射

层级/入口 场景 对应编号 / 依赖与副作用
sharedCore:jvmTest 现有协议、状态、恢复、超时、加密 ANDROID-TEST-CONTRACT / STATE;无设备
uiTest 模拟器 connection/status/content/settings/navigation/layout ANDROID-TEST-UI;测试专用假平台,实际界面与 Controller
run_ble_test.py connection ANDROID-TEST-BLE;真实扫描/握手/断开/重新扫描重连
同上 data / library-order ANDROID-TEST-BLE / CONTROL;只读,只有 order 读取板端目录摘要
同上 library-cache ANDROID-TEST-LIBRARY-CACHE;登记手机与核桃派只读,两轮图片后重新连接,报告图片请求数与 PNG 负载字节数,不改变显示内容
同上 cache-storage ANDROID-TEST-LIBRARY-CACHE;登记手机的隔离缓存目录验证跨设备隔离、损坏保护与清空,不访问核桃派
同上 conflict / wifi-scan ANDROID-TEST-CONTRACT / WIFI;过期修订拒绝 / 板端扫描;不切网
同上 polling ANDROID-TEST-PERF;最多 60 轮状态/帧读取,不替代性能因果对照
同上 controller-background / activity-background ANDROID-TEST-STATE / BLE;后台释放与重连
同上 navigation ANDROID-TEST-UI;登记真机 root 导航;临时撤销并恢复蓝牙权限防止旧记忆自动连接,不访问板端
同上 rename / remember ANDROID-TEST-UI / STATE;昵称恢复 / 忘记后重新连接
同上 bluetooth-toggle ANDROID-TEST-PERMISSION;真实关闭并恢复蓝牙
同上 connection-entry / layout ANDROID-TEST-UI;条目重扫/断开/再连;layout 另加三组布局和帧边界
同上 controls / wifi-reapply ANDROID-TEST-CONTROL / WIFI;当前值写入和动画恢复 / 当前网络重新激活,须明确选择
run_wifi_switch_test.py --validate-only / --wrong-only / --skip-wrong / --final-check ANDROID-TEST-WIFI;四者必须且只能选一个,后两类切网专项按原恢复规则

每个真机场景单独建立/释放会话。普通 UI 首选模拟器;真机 navigation 是厂商输入等特定问题的补证入口。connection-entry 不改变密度/字体/方向;layout 才做原有三组配置。其它设备生命周期、双手机、性能采样仍按各自编号的触发条件独立执行。

可复现命令

先阅读排障指南。命令从仓库根执行,路径参数使用本机已安装工具的真实路径,不把路径写进仓库。电脑远端联调使用已有安装 Paramiko 的环境;依赖见 requirements-host.txt,不加入核桃派依赖。

python "移动端相关内容/安卓app/如何安卓测试/run_ble_test.py" --list-scenarios
python "移动端相关内容/安卓app/如何安卓测试/run_ble_test.py" --scenario connection --dry-run
python "移动端相关内容/安卓app/如何安卓测试/run_ble_test.py" --scenario connection --adb "<ADB路径>" --build "<隔离工程目录>"
python "移动端相关内容/安卓app/如何安卓测试/run_emulator_ui_test.py" --scenario settings --dry-run
python "移动端相关内容/安卓app/如何安卓测试/run_emulator_ui_test.py" --scenario settings --avd "<AVD名称>" --adb "<ADB路径>" --emulator "<已安装Emulator路径>" --build "<隔离工程目录>" --report "<新的结果JSON路径>"
python "移动端相关内容/安卓app/如何安卓测试/run_wifi_switch_test.py" --validate-only --dry-run

构建沿用 build_android.py,任务按需指定::sharedCore:jvmTest、:androidApp:assembleDebug、:androidApp:assembleDebugAndroidTest、:uiTest:assembleDebug。uiTest 是 self-instrumenting 测试 APK;只安装到明确选择且核验过的 AVD,不装到登记真机,不安装产品 APK。fake platform/transport、测试 Activity 均只存在于 uiTest;不调用真实 BLE、SSH、摄像头,不声明真实权限验收。

模拟器入口支持重复 --scenario 和 --configuration;默认 baseline,只在明确完整 UI 验收时用 --all-ui。复用 Android Studio Device Manager 的 AVD;缺少时用 SDK avdmanager 创建专用 AVD,使用官方系统镜像。--port 默认 5580,启动前指定 AVD、连接后核对名称和 ro.kernel.qemu,拒绝物理手机或不匹配目标。可用 --sysdir 指向独立存储的系统镜像。只关闭本次启动的模拟器;字体、方向、密度恢复并核验。不能擅自 wipe-data 或覆盖已有 AVD。

所有运行器无场景时只显示用法;列表/预览不访问登记、凭据、ADB、SSH。非法组合在设备访问前拒绝。旧 --test activity、无参数默认 BLE 的命令已取消:分别改用明确的 --scenario。run_ui_layout_test.py 保留转发入口,也必须显式选 layout 或 connection-entry(推荐统一用 run_ble_test.py)。

证据与边界

每轮归档填写:

变更及共享影响:
选中编号 / 场景 / 环境 / 配置 / 选择理由:
源码摘要、App/设备/协议版本(只记与本轮相关者):
结果:通过 / 失败 / 按影响跳过 / 必要但未验证
跳过项及理由:
失败、清理、恢复核验、重测及未解决边界:
经验更新位置:

宿主调度检查:python -m unittest discover -s "移动端相关内容/安卓app/如何安卓测试" -p "test_test_selection.py"。这是运行器选测/失败恢复测试,不代表 BLE/模拟器已经通过。

模拟 UI 已覆盖空状态、扫描错误恢复、导航、WiFi 空名称禁用及确认取消、内容读入和帧布局。没有实现的 OS 权限矩阵和完整 Activity 状态恢复不冒充已覆盖;今后相关功能变化时补相应测试。语义/边界断言不证明文字实际运动或视觉质量。视觉和电气门禁不变。

官方依据(2026-09-29 核对)

  • Android 测试策略:选择最低有效层级,并非每个功能都在所有层级重复验证。
  • Compose 独立测试:隔离界面输入,使用测试 API 验证行为。
  • Android 测试基础:instrumentation 可运行于真机或模拟器。
  • 模拟器网络能力:新版本支持部分 Bluetooth 模拟,不能笼统写“模拟器完全不支持 BLE”;本项目 fake 测试仍不等于物理射频、实际核桃派或厂商兼容验证。

以上是制定项目选测规则的依据,具体场景划分是本项目的工程选择,不是官方强制清单。

2026-10-10 动画浏览

ANDROID-TEST-ANIMATION:共享JVM验证部分下载恢复、修订拒绝、当前项在完整消息边界抢占、后台暂停、暖缓存及WiFi只读回退。独立模拟器选择content / animationViewer,检查帧解码标记推进、全屏、返回及后台状态。登记真机定向选择animation-library,验证实际Controller优先补传、缓存复用及现有BLE/WiFi分块一致;cache-storage覆盖动画PNG校验、损坏记录、修订清理。上述读取不改变核桃派内容,不切网、不启用摄像头,不扩展到无关页面。