ios自动化测试

苹果群控怎么跑多机型真机验证?从装包到留证的完整步骤

苹果群控跑多机型真机验证的完整教程:清点电脑、机型、账号与测试包,设备接入与批量别名、按机型分组核状态、用例脚本与参数外置、按组下发。

约 9 分钟更新于

多机型真机验证,麻烦在机型一多,变量就多。同一版脚本在不同系统版本上表现不一样,装包、命名、留证每一步都得能对上号。

手上有五台机器:一台 iPhone 11、两台 12、一台 13 mini 和一台备用机,新版本发布前主要路径都得在这些机型上过一遍。以前挨个插线、装包、点一遍,跑完一轮天都黑了,第二天包一更新又得从头再来。用例还是那些,费时间的是装包和重跑。搬进群控后,每轮验证主要就是重新下发一遍。

开工前备齐,接入后把命名定死

这一步最容易被跳过,也最容易在后面还债。中控跑 Windows 最省事,五到十台普通办公本够用;再往上先看 USB 口,十几台直插机箱供电和带宽都吃紧,配个带独立供电的 USB Hub 能省掉很多莫名问题,无线投屏则要路由器并发够。机型先定这轮验哪几个:老机型和小屏机型排前面,界面元素在小屏上挤成一团的情况最多、也最早暴露。账号得是自己能支配的;测试包放本地目录按版本号建子目录(如 builds/v2.4.1/),debug 和 release 各留一份,用参数决定装哪份。数据线要原装或 MFi 认证,便宜线只能充电不能传数据,表现就是列表里不出现这台机器。

设备插上后列表里会冒出一串默认名称(通常是串号),先别开任务,把名字改掉。命名建议带机型、分组、序号,比如 ip12-test-01(中间是分组、末两位是序号)。日志里冒出 ip12-test-02 用例失败,一眼知道该拿哪台。改名不用一台台点:选中整组、右键批量设置别名、填起始名,先预览、确认序号排对再确定,整组一次改完。顺序别反:先接线、再改名、分组放后面。

中控批量设置设备别名:填批量起始名后可先预览,再一次改完整组设备

起始名填好后先看预览列表,序号自动递增,确认顺序跟机器对得上再保存。

iOS 这边免越狱是前提。通道有三条:USB 加自动化服务(要装代理 IPA,能力最全);无自动化截图配合 USB_HID(免装 App,iOS 17 起);主程序录屏配合 USB_HID(免付费签名,iOS 17 起)。iOS 15 及以上也可以把脱机主程序 v7.2.0 及以上直接当作 USB 自动化服务,官方下载页有预签 IPA,用爱思助手装上就能测,不必再单独签代理 IPA。自己签名时,个人开发者账号 688 元一年,可绑 100 台,支持 iOS 12 及以上,费用只算签名。巨魔 TrollStore 支持 iOS 15 到 16.6.1,重启会掉签。脱机版只支持 iOS 15 及以上。7.0.0 起单 App 只装主程序,在设置里选单 App 再开自动化;双 App 还要签名代理 IPA,掉了可以用自激活拉起。USB HID 从 EC iOS USB 10.7.0(2026-09-08)起提供,不装蓝牙板或 OTG 板,手机建议 iOS 17 及以上,和中控「启动自动化」互斥。差别看 iOS 自动化三种模式对比。

分组和状态检查

分组最省事的做法是按机型分:test-ip11、test-ip12、test-ip13mini。下发时你多半是“这个用例只在 13 mini 上跑”,按机型正好对上,设备挪位置不用改组。

EasyClick 中控里右键设备设置分组,可按机型把测试机分成不同组

分组就三步:右键设备、选设置分组、挑一个组保存;分组不改连接状态。

下发前再看一眼状态:状态栏显示设备总数、在线数和异常数,对不上先别往下走,掉线的先处理,不然一轮结束分不清是没跑还是跑了失败。顺手设三件事:自动锁屏改永不、系统自动更新关掉、亮度调低。跑到一半锁屏,后面全是空转。

脚本、参数和分批下发

脚本组织建议一个用例一个文件,公共动作抽成函数:

scripts/
  lib/
    common.js        // 启动 App、等元素、登录
    report.js        // 截图与结果回传
  cases/
    login.js
    search.js
    checkout.js
params/
  ip12.json
  ip13mini.json

cases/ 只写用例步骤,lib/ 放公共动作,改一处所有用例受益。参数单独放 params/,一个分组一个文件:

// params/ip12.json
module.exports = {
  group: 'test-ip12',
  build: './builds/v2.4.1/release.ipa',
  account: 'test-account-02',
  waitMs: 8000,
  retry: 2,
  shotDir: './shots/2026-09-24/ip12'
};

这几个字段几乎每轮都动:包一更新只改 build 一行,截图目录按日期走、跑完就是归档好的。写 iOS 脚本的细节对照 USB HID 写 iOS 自动化脚本 那篇。

写用例三个习惯提前养成:定位优先用控件和文字,别写死坐标。iOS 脚本支持找图、OCR 和控件查找,页面一改坐标全废。等元素出现,别写固定秒数,sleep(5000) 快机器白等、慢机器不够。每步结果写日志,失败先截图再退出,别只抛一句“失败了”。

脚本和参数备好,先在一台设备上跑通整条通道再上批量。一台没跑通就推给一整组,出问题是十几份同样的困惑。下发时选中一个分组,把脚本和参数一起推下去,别一次把所有组全点,一组一组来、看一眼结果再推下一组。跑完看三样:成功失败条数(普遍还是个例)、失败停在哪一步(日志停在具体动作上比错误码有用)、设备在线状态(掉线一般是连接或供电)。失败集中在多台,八成是用例或页面变了;只在一台,先查那台机器。返工只跑失败的设备。

一个分组跑顺了可以变成固定动作:中控定时任务支持按天、按间隔分钟、按间隔秒设周期,次数填 0 不限;夜间长跑和重复轮次验证用得上。设备第一次批量初始化看 iOS 批量初始化。

留证核对,卡住时按这个顺序查

截图要带上下文,得看得出是哪台机器、哪个用例、哪一步。文件名按 设备名_用例_时间戳 拼,落到按日期分的目录,比如 shots/2026-09-24/ip12/ip12-test-02_checkout_fail_1042.png。核对按机型横向比:同一套用例在不同机型的结果摊开看更容易发现问题,某机型失败集中在同一步,问题基本就在这个机型的界面差异上。

排查按这个顺序走能少走弯路。设备列表里没有这台机器:先换线换口,再确认手机点过“信任此电脑”,用了 Hub 的先直插机箱排除 Hub。设备在列表但离线:多半是锁屏或线松,解锁重插,再看锁屏设没设永不。iOS 17 以下跑不了免装 App 的模式,低版本回 USB 加自动化服务那条,代价是要装代理 IPA 并签名。脚本跑起来界面不动:先确认这组设备连接状态,再看脚本第一步等的元素是不是没出现,截图比猜快。同一台机器反复失败:从组里移出来单独跑同一个用例,还失败就换一台机器跑,立刻能区分是机器还是用例的问题。

第一次配环境就卡住的,新手配苹果群控最容易卡在哪一步 里按卡点整理了排查路径。

一轮跑顺之后有两件事值得做。把命名、分组、参数、留证这套规则写成团队文档,给下一个接手的人看。没文档时,换人接手第一周基本都在认设备。设备上到几十台之前先看设备和网络,可以看 苹果群控设备容量与运维实践。多机型验证要在几十次重复里每次都保持一致。


iEasyClick:手机自动化脚本与群控方案站,覆盖安卓免 root、iOS 免越狱、鸿蒙 Next,提供脚本开发教程、中控投屏与批量运维方案。官网 ieasyclick.net

想要真实跑起来?

本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。

访问 iEasyClick 官网 →