大家好,我是洋子
在之前的文章《我做了一个APP自动化测试Skill,从此AI替你打工》介绍了安卓自动化测试Skill如何实现,今天再介绍一下IOS 自动化测试Skill 如何实现
在开始讲自动化测试Skill之前,咱们先来对比一下UI 自动化测试实现方案,目前UI自动化测试主要有基于视觉和传统DOM 两种方式

两种方案各有优缺点,基于视觉的UI 自动化测试最大的痛点问题就是执行速度慢+费Token,适合只用于回归测试阶段,而传统DOM的痛点问题就是强依赖DOM树,一旦前端变更页面,DOM结构需要重新生成
但传统DOM的好处就是执行速度相对较快,结合AI能快速生成自动化测试脚本,如果本身是页面交互不复杂的APP,即使页面发生重构,也可以快速重新生成DOM结构,另外在回归测试阶段自动化测试脚本也可以复用,不用过大模型
使用被测APP重新生成全量页面UI DUMP,大约花了30分钟,更新定位器以及自动化测试Case花费时间,大概在1个小时以内(具体花费时间不同APP有所不同)
由于我目前在探索利用自动化测试来代替人工的冒烟+模块测试,所以自动化测试速度不能太慢,因此该APP 自动化测试Skill实现还是基于传统DOM来定位元素
对于AI生成的自动化测试脚本,测试框架上选择了Appium,这是一个历史悠久的自动化测试框架且社区完善,不容易踩坑,测试用例管理选择Pytest,测试报告使用Allure
效果演示
下面是我用IOS UI 自动化测Skill 生成的自动化测试脚本,跑通的一个端到端Case
- 操作路径:个人中心-》打开个人信息设置-》修改昵称

前置准备
第一步:导入加载SKill
目前我是实现了4个APP 自动化测试Skill,执行安卓APP自动化测试使用dump-ui-android,pro-to-android-test这两个Skill,执行IOS APP自动化测试使用dump-ui-android,pro-to-android-test
分别执行Skill来进行DOM树抓取-》读取PRD-》自动化测试用例生成-》执行的全流程

下面主要讲解IOS UI自动化测试Skill的使用方法,安卓可以参考文章《我做了一个APP自动化测试Skill,从此AI替你打工》

把上面Skill 加载到常用的AI编程工具里面,Claude Code、Cursor、CodeX、TRAE等都支持
Skill原文件都放在测开学习圈子里面了,欢迎加入圈子获取
第2步:搭建环境
接下来先进行环境搭建,IOS 自动化测试需要安装的环境依赖比较多,需要至少下面的步骤
- 硬件条件:一台iPhone(我用的手机系统是 iOS 26)和一台MAC
- 安装Xcode,并下载设备对应的 iOS SDK(如 iOS 26)
- 安装Appium + XCUITest
- 安装 pymobiledevice3(iOS 17+ 真机通信)
- iPhone 上信任开发者证书
- 关闭 iPhone 自动锁屏
- 获取 UDID( iOS 设备的一个唯一识别码),获取 Apple Team ID
- 手动编译 WDA(首次必须,后续 Appium 自动处理)
- 启动 Appium
- 等等后续步骤
不过不用害怕,以上完整搭建步骤和踩坑经验,都已经写在dump-ui-ios Skill里面了,加载Skill后,使用Claude Code 等AI编程工具会跟你对话提示,自动安装好所有的环境依赖,中途遇到问题AI也会自助解决,下面以Claude Code 对话为例演示Skill使用过程
输入:/dump-ui-ios 获取APP 真实DOM树

Claude Code开始检测必要的环境依赖,安装缺失的环境依赖

安装Xcode

打开Mac App Store 命令行安装Xcode
shell
open macappstores://apps.apple.com/app/xcode/id497799835

安装完成Xcode后,需要先同意 Xcode 许可证协议。请在终端中手动执行:
shell
sudo xcodebuild -license accept
检测iPhone连接状态

获取Apple Team ID


其余环境搭建步骤先省略,下面是我安装环境时遇到的所有问题,问题解决方案我已经更新到Skill里面,方便后续快速解决

抓取IOS UI页面dump
环境依赖都安装完成后,Claude Code会执行全量dump流程

Dump分为两个阶段,阶段A是自动遍历拿到APP页面信息,阶段B是从阶段A中Dump出来的页面,从已知页面上,再进行一次新页面的探索,保障页面Dump 是完整的

Dump完成后,data目录下ui-dumps文件夹就是存放APP里面的页面Dump信息,后续如果APP里面UI有更新,可以多次调用skill来dump,每个页面有版本号区分,如v1、v2、v3等,生成用例默认会用最新版本

IOS UI自动化测试用例生成
前置页面Dump已经完成,我们现在已经有被测APP全部页面的Dump信息,现在调用/prd-to-ios-test skill 去生成自动化测试用例

/prd-to-ios-test skill 先进行需求文档解析,一共有5个功能模块,由于全量生成5个模块比较耗时,CC提示我先生成其中一个模块的自动化测试Case,我选择了第5个我的 模块

在生成case之前,skill按照6种维度用例设计规范,先对模块生成了49条测试用例,每种用例设计维度如下:
- L1:页面元素存在性 :页面元素是否存在
- L2:交互行为:当前页面有哪些用户交互行为
- L3:异常流程:异常的操作流程
- L4:验收标准:产品验收需要通过的Case
- L5:数据边界值:如输入框等有数据输入的情况(等价类,边界值等)
- L6:主流程(场景Case):场景化case,保证流程是通过

下面test_m5_profile.py 就是AI生成的自动化测试用例脚本,自动化测试用例生成完毕后,给出生成报告


接下来会进行真机检测,需要把iPhone 通过数据线连接MAC,真机检测无误后运行XCTest,运行成功iPhone 上会展示Automation Running 标识

真机运行第一轮自动化测试脚本后,Skill里面定义了自修复环节,模型会针对失败的用例进行调整和修复

用例修复修复完成后,可以再重新执行一遍刚生成的Case,并生成allure执行报告,可以看到用例执行的详细步骤以及截图,方便人工核验

常见问题
最后谈谈我在实践基于AI Agent Skill驱动 安卓和IOS UI 自动化测试的常见问题及解决方案
如何衡量功能测试&自动化测试用例生成的质量,现在都是AI去写用例,AI写出来的用例是好是坏?
对于功能测试,最常见的指标就是用例采纳率,如果该Case已经投入正常使用,证明生成Case是有效的,这是一个后验的指标
目前各大互联网大厂虽然都是在实践AI生成功能测试用例,对于功能测试用例,实际采纳率很难超过50%,原因有几方面
- 业务逻辑链路复杂,AI并不能很好理解公司内的业务,至于如何加强AI对于业务的理解程度,需要额外建设知识工程
- 产品需求文档质量差,如需求描述不清楚,这是影响用例生成的决定性因素之一
- 用例生成Skill或者Prompt还需要持续优化
对于自动化测试,目前我还没有单独去统计采纳率,AI生成的自动化测试用例全量在运行
登陆态如何处理
如果被测APP只能通过验证码登陆,建议跟开发沟通一个线上测试账号,输入固定验证码即可登陆,如果能通过密码登陆,用固定密码登陆即可
对于只支持验证码登陆的APP,若无法提供线上测试账号,可以将登陆模块和已登陆才能进行的模块,用例执行进行拆分,登陆模块执行登陆前的逻辑(如注册,输入验证码,切换登陆方式等),登陆模块测试完成后,手动输入验证码后测试登陆后的业务逻辑
如何提升遍历页面以及定位元素的准确性
AI自动探索APP内有哪些页面,自动遍历难免有遗漏的地方,要想提升遍历页面准确性,目前有几种方案:
- 第一种方案:维护一颗无障碍树文件。无障碍树里面描述APP内页面构成以及操作路径
- 第二种,用例生成的Skill里面建立helper 导航,与无障碍树类似

- 第三种,人工提示补齐,比如用例里面少点了个按钮,如果AI生成的Case大部分都是可用的,我们可以给出提示词让AI修改,AI会重新抓取最新的DOM树,修复Case