Appium 用 APPIUM 测试 IOS APP,真的有必要么。。。。

chma · 2017年10月31日 · 最后由 houzezhen 回复于 2022年08月01日 · 2530 次阅读

刚接触 IOS 自动化测试,工作需要,摸索了一阵,终于可以测试 IOS 了,开始写用例发现,完全是坑

  1. 用 appium 搭建 ios 环境,本人没接触过 MAC,各种更新,各种安装,折腾了两天。。。。。

2.环境搭建成功,用 appium 的 inspect 查找控件,一个界面,恨不得 10 分钟才出来

3.公司的开发,应用的控件所有都没有 unique accessibility locators ,我能用的只能是 name,xpath,xpath,两个都设计到多个情况,还要去判断到底是第几个。。。。

4.作为一个急性子,脚本执行的耗时,真是让人奔溃。。。。

真的心累,完全感觉这个功能是鸡肋。。。

哪个大神,看到求解惑

共收到 17 条回复 时间 点赞

那你用啥来搞自动化呢

搭建环境什么的,不是 appium 的问题吧。定位方面的问题,可以协商推动解决,UI 自动化投入的成本和收益在做之前就要做评估,这个也是提前做好的功课,楼主不如静下心来好好思考思考。

UI 自动化投入的成本和收益在搞之前就要弄清楚。
当然,仅仅是为了学习自动化的话,appium 还是挺不错的

目标不明确啊,建议可以先试试 fastmonkey 投入低成本
https://testerhome.com/topics/9524

你应该推动开发完善 app 控件命名问题。自动化最好用在已经稳定的项目上。当你每天都要手动重复操作同一个动作几百次的时候,就会觉得有必要了。。

可以先研究做出来,做技术储备。实际应用应该很少。

chma #5 · 2017年11月01日 Author

有可能是我环境搭建的有问题吧,第一次踏入 iOS 领域,我的负面情绪爆棚了,inspect 控件的时候各种问题,频繁弹让刷新界面,dump 出来的界面,选控件还是错的,个人对当前需求自动化测试是否必须做也是充满疑惑,以前一直从事测试工具开发的工作,欠缺测试的经验,考虑到一直没有测试的经验,当前相当于转行自动化测试岗位,不能领会项目测试的同事的痛点,仅仅根据导师的需求,就开始写测试脚步,没有自己动脑思考,对自动化测试很多工具也没有了解,感谢回复我的朋友,感恩!!!

如果你这么嫌弃 APPIUM 的话,可以试试 xcode 自带的 UItest。

chma 回复

只做 iOS 自动化可以看看 KIF 或者 Earlgrey,完全基于 iOS XCTest 的第三方 UI 自动化,没有那么多的搭建环境,但是你要会 oc 语言,Appium 适用性更广,iOS,安卓,hybrid 都能搞,只是感觉在 iOS 上 Appium 有点慢,有些方法都不好用

最近也有点 哀怨 appium 了,做 ios UI 自动化真是好费劲啊,整体感觉环境繁琐 笨重,唉,同求有好的 替代品呗

是的;想做 iOS 的 UI 自动化测试,公司主要的 APP 已经很成熟了;找了一个 appium 的框架在写执行脚本进行测试;语言是 java,发现最难的不是用例的编写;是寻找控件的时候各种出错,要不找不到,要不直接乱找,速度还特慢,找一个控件;我用的直接是 xpath;发现底层对 xpath 的支持非常不友善。。。。感觉直接用 iOS XCTest 会速度快很多,试过用 iOSNsPredicateString 就定位特别快,所以现在在学 OC。。。。也不知道能怎样;公司没啥要求,就是自己现在在瞎弄的状态;没事干总想学点啥,目前就这样学着呗,走一步看一步

chma 回复

首先需结合自身情况,确定是否有人力和时间付出大量成本去维护和调试 产品迭代 UI 变更所带来的自动化用例变更甚至扩展、重写等。 如果成本跟不上很可能出现 初版 ui 自动化实现后续无人力做高迭代维护造成自动化效率低致废弃。

不如退而求其次 优先实现类似 android monkey 高收益性自动化工具。抓住减少崩溃率这样一个重点为目标。

实际上过往的经验,实现用例的 ui 自动化未必能发现什么产品上的 bug,仅仅是替换高重复性工作可能还有些价值。

樂易 回复

appium 底层是用的 facebook 那套 wda 协议,其实可以理解 wda 是基于 xctest 做各种包装,然后 appium 在 wda 基础上做包装一遍。同时他还使用 b/s 模式 做了多余的网络请求 应答这种机制。造成自身速度慢。也因为这种机制 appium 可以很好的适用 android ios web 等多套平台。 说到底就是自己做的事请太多过于臃肿。
xctest 本身不直接支持解析 xpath 查询。而是借用 iosnspredicatestring 查询 然后做 search 筛选等操作,效率上降低了。

如果是学习 建议详细阅读 facebook 的 wda(macaca 的 xctestwd 同理)以及 xctest 官网 api,同时 google 私有 api。 从而打造适合自己项目的高效率自动化工具

dabao 回复

直接使用其底层的 wda 就可以

谢谢大神来指点我,还是想再请教一下,请问 OC 这门语言对于做 iOS 自动化是否有必要系统学习?还是等到碰到了要用的时候再去学对应相关的就可以?现在毕业一年,有点迷惘的是貌似做测试要学很多东西,包括 jmeter 也学过,但是几乎都是浅尝辄止的状态;广而不精,很想精一门,但是在平常工作过程中还是会碰到需要去学习其他的东西,分散了注意力;请问是否有必要?怎样才能精一门干下去

匿名 #2 · 2017年11月17日

14 楼大神已经说得很好 我再说个 appium 里面复杂的 session 机制 会在使用上出现两个问题
1.没有可插拔性 重连 appium 的同时也需要重新初始化 app
2.单一线程 不能一个 appium 同时执行多台手机
但是直接连接 wda 又因为 iproxy 只能转发本地端口不能把手机转发到局域网
所以我自己写了转发模块 楼主可以考虑 考虑
谢谢

请问你用 iOSNsPredicateString,是怎么来处理层级关系的呢?我也刚开始用这个 iOSNsPredicateString

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册