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

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

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

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

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

共收到 12 条回复 时间 点赞

大佬解答一下

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

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

Allen.liu 回复

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

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

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

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

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 控制设备都会走 mqtt 协议,举个栗子:你先订阅设备的 mqtt,然后 app 执行扫地机扫地操作按钮,等待 mqtt 的 notify 返回并断言即可

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

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