Android设备农场搭建的难点,往往不是把手机接上电源,而是让不同型号、系统版本和任务要求的设备持续可用。先把设备登记、任务分配、执行回收连成闭环,才能减少排队、重复配置和测试结果不稳定。
先把设备变成可调度资源
为每台设备建立清单,至少记录厂商与型号、Android版本、屏幕分辨率、网络连接方式、USB端口、当前状态和最近一次健康检查时间。设备名称使用固定编号,贴在机身和线缆两端;不要只靠操作人员记忆识别。
按测试需求分组,而不是简单按品牌分组。例如,把常用系统版本、屏幕尺寸或特定传感器能力作为标签。日常兼容性任务进入通用池;需要特定系统版本、摄像头或定位能力的任务,则只分配给符合条件的设备。设备池不必一开始追求型号齐全,应优先覆盖实际使用者最关心的配置。
调度关键:让合适的设备先执行
区分固定分配与动态分配
固定分配是某类任务长期使用指定设备,配置简单、结果容易对照,适合少量关键回归测试;缺点是设备可能在任务稀少时闲置。动态分配由调度器从空闲设备中挑选符合标签的设备,整体利用更灵活,但需要做好任务锁定、超时回收和失败重试。
实践中可以采用混合方式:关键基线任务保留少数固定设备,其余设备进入动态池。调度时优先检查设备是否在线、ADB连接是否正常、剩余存储空间是否足够,以及是否正被其他任务占用。对同一设备设置互斥锁,避免两个自动化任务同时操作造成点击串线或测试数据互相覆盖。
按队列规则分配任务
调度规则应明确任务优先级、等待上限和重试次数。紧急故障复现可以优先排队,常规回归按提交顺序执行;同时设置公平规则,避免低优先级任务一直被挤到队尾。若某类设备长期排队,先检查任务是否都必须使用该配置,再决定增加设备或调整任务时间,而不是盲目扩充机架。
把一次执行做成可复用流程
- 提交前声明条件:任务写清应用版本、目标系统版本、所需设备标签、预计时长和测试数据要求;条件缺失时先补齐,减少分配后才发现设备不匹配。
- 领取并做健康检查:自动化平台通过ADB确认设备可连接,检查电量、存储和屏幕状态。连接不稳的设备先转入待检队列,不要继续派发任务。
- 执行并保留证据:使用Appium等自动化工具运行用例,记录用例结果、设备编号、系统版本和必要日志。失败后先区分应用缺陷、设备离线、权限弹窗或网络波动,不要将所有错误都算作产品故障。
- 清理并归还:任务结束后按规则卸载临时应用、清除测试数据、撤销临时权限,并确认设备回到可领取状态。涉及登录账号、短信或个人数据的测试,应使用专用测试数据并限制访问。
设备复用的重点是“状态可预测”,并非每次都恢复到完全相同的出厂状态。对需要保留应用安装的长流程测试,可做受控复位;对权限、账号或本地数据敏感的任务,则应采用更彻底的清理方式。两类任务分开运行,能减少不必要的重装和初始化等待。
用数据找出浪费发生在哪里
至少观察设备可用率、任务等待时间、设备占用时长、异常离线率和清理失败率。设备利用率可按“执行任务的时间÷可调度时间”估算,但要把维护和故障时间单独标记;否则高占用可能只是设备排队严重,并不代表效率高。运行一段时间后,再按设备组比较等待和失败情况。
USB连接适合集中管理、排查直接,机柜布线和供电需要整理;无线连接减少线缆限制,移动更方便,但网络波动和设备地址变化会增加管理难度。固定机架、集中供电和明确的端口编号通常有助于排障。设备数量较多时,可用scrcpy进行人工查看和辅助操作,但自动调度仍应以设备状态、任务锁和执行记录为准。
常见问题
一定要购买大量同型号手机吗?
不必。先依据目标用户设备分布和测试需求确定覆盖范围,再补齐关键系统版本与硬件能力;同型号设备更适合重复性回归,不应替代必要的差异覆盖。
设备利用率越高越好吗?
不是。利用率过高可能导致队列积压、维护无窗口。应结合等待时间、故障率和任务时限判断,预留设备用于升级、清理和故障替换。
Android设备农场搭建后,优先优化哪一步?
先解决设备识别和状态回收:建立准确清单、设置任务互斥,并确保每次测试结束后完成清理与健康检查。基础流程稳定后,再优化动态分配和扩容。