Appium 设计多设备或者跨平台的 app 如何进行自动化?

卡丁车卡丁丁 · 2020年11月21日 · 最后由 黑山老妖 回复于 2020年11月25日 · 2340 次阅读

比如一个设备的 app 进行了 xx 操作,会在另外设备的另一个 app 中体现,那这种跨设备跨 app 的情况怎样进行自动化?

又或者你使用 app 中操控的是一个扫地机器人?那怎么断言扫地机器人有没有进行工作呢?又或者是操控无人机这种情况

大多资料都讲的是在单 app 中进行的,以上两种情况大家是怎么做的哟??

共收到 12 条回复 时间 点赞

E2E 自动化测试,可能需要实时或非实时的判断双方的状态。这可能需要多个自动化测试引擎的结合,同步操作,结果同步验证等。你的例子里 app 可以用 appium 驱动,机器人应该也有控制的软件如串口什么的返回结果,对比下就 OK。

大佬解答一下

目前的自动化测试框架一般都不支持跨 App 的操作,因为没有办法切换对应的 Driver;如果实在要做跨 App 的操作,有两种可实现的方案,一是,通过自动化框架操作主 app,当唤起其他的 App 后,通过图像识别法操作被吹起的 App,可以完成应用切换的用例;二是,如二楼所说,操作主应用,对于被唤起的应用,通过接口来操作或是验证结果。

一般通过接口调用完成其他端的返回吧

1,远程启动多个服务是可以的,那个你可能需要配下 Grid。2,实际上单台 PC 也可以启动多个服务,注意端口号不同就可以,appium desktop 操作更可以简单实现。

我的理解是 app 控制设备都会走 mqtt 协议,举个栗子:你先订阅设备的 mqtt,然后 app 执行扫地机扫地操作按钮,等待 mqtt 的 notify 返回并断言即可

appium
针对多服务可以启动多个端口的服务
android
node /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --session-override --command-timeout '20000' --debug-log-spacing --automation-name 'Appium' --no-reset --log-timestamp --local-timezone -U 设备号 -b 4723 -bp 4733
iOS 针对 wda 服务 iproxy 转发不同端口处理;

或者了解下 uiautomator2 android 只需要设备号就可以控制多设备操作
iOS wda + iproxy + Facebook-wda

我觉得你这个思路有问题,A 设备做了 xx 操作,会在 B 设备体现,为什么不分离开?A 设备操作了,操作的对不对,你看下数据存储的地方,比如 sql 或者消息队列或者缓存,做下校验,对了,那 a 就是对的。B 的体现,你就先造好数据,在 b 上看就的了。

为什么非要搞到一起尼。万一 A 设备操作错了,B 设备处理错了,两者结合反而达到你预期,你能说你的 case 成功了,没有 bug?

黑山老妖 回复

你这是本身程序很完善的情况下做有用吧

如果程序本身就不太稳定的那种,这样子两端做出问题不是更好排查吗?》

如果开发本身水平就半吊子的那种,我觉得直接取数据库或者缓存的方法是不是不太好?

你说的程序稳定是指后端逻辑嘛?那样的话跟 app 没关系啊,这里面逻辑放在后端校验。如果不稳定是指前端 app,就有点难理解了😂

Allen.liu 回复

老铁再请教一下,我看网上有文章说 appium 可以启动两个服务,那一个 appium server 启动本机的 app,另一个 appium 通过网络启动另外一个设备的 app,这样操作不可以吗?

老铁再请教一下,我看网上有文章说 appium 可以启动两个服务,那一个 appium server 启动本机的 app,另一个 appium 通过网络启动另外一个设备的 app,这样操作不可以吗??

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