Appium Wetest - 安卓兼容测试

spook · 2018年12月14日 · 最后由 spook 回复于 2018年12月18日 · 2982 次阅读

背景需求

新版本上线视频录制与照片合成功能
基于阿里云视频 SDK(趣拍) 实现,针对安卓海量机型尤其是视频类功能必然存在各种各样的兼容性问题
那么问题来了,如何找出这些问题机型?

技术选型

自建云真机平台

目前主流的方式两种
1、STF
2、ATX
我们选择的是 ATX
因为公司机型比较少,所以能够发现的问题不够全面
问题汇总
https://www.meipian.cn/1j3xplf3

云测解决方案

1、Testin
一次八千,类似苹果的模式封闭系统,只要把相应的 app 与指定的流程提交即可开始,适合测试团队技术实力不是很强的初创公司
效果没有想象中好,一些自建平台发现的问题亦未能覆盖,且一些截图与用例描述无法对应,使用完充值额度后弃用

2、Wetest
使用的应该是还未公开的功能,上传脚本驱动 wetest 的云真机实现兼容测试效果

  • 接入的时候遇到了一些坑
    • 引导文档中提供的是 java 版本,但 java 版的脚本完成后上传发现不可用,咨询客服发现目前仅支持 python 版,emm··· 重撸
    • 脚本运行中如果初始化使用了重启 app 的方式,wetest 会判定为进程异常退出并收集到报告中出现测试结果大面积不通过的情况,此时的解决方案有两种一种是不用重启 app 作为初始化的方式,第二种方式为上传指定字段让 wetest 忽略这种异常
    • 一些报告中的 bug···

但总体效果还不错,利用全平台三百余台机型可以覆盖到绝大多数主流机型以及不同的安卓版本
https://www.meipian.cn/1juqs991

运行截图

替换后的初始化 case 方式

每次 case 操作完成后,通过系统 back 上一页直至返回到应用主页

def fanhui(self):
    while self.wetestdriver.wait_for_activity(".ui.main.MainTabActivity") is False:
        logger.info("不是首页,返回")
        os.popen('adb shell input keyevent 4')
        time.sleep(3)

或者提示 wetest 平台忽略

platform=platform_helper.get_platform_client()
platform.procdiedreport(False)
一些会莫名其妙弹出来的框

回到主页时,因为业务逻辑的原因,可能会弹出让你去领红包,可能弹出让你去同步通讯录好友,可能让你去参加一个签约作者计划··· 防不胜防
解决方案:感觉方法还不够智能但还算实用,即在回到主页初始化后监控所有可能会出现弹框并且给点掉

from selenium.webdriver.support import expected_conditions as EC

    def passpop(self,content,ci):
        for i in range(ci):
            loc = ("xpath", "//*[@text='%s']" % content)
            try:
                e = WebDriverWait(self.driver, 1, 0.5).until(EC.presence_of_element_located(loc))
                e.click()
                print "Get alert: %s" % content
            except:
                pass

最后国际惯例

项目地址
https://github.com/maple42/WETEST-APPIUM

最最后发个招聘

https://testerhome.com/topics/16358
发我邮箱内推更快哦

共收到 2 条回复 时间 点赞

有招聘

恒温 回复

dei
在南京算是一股清流的公司

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