• 是的,这是另一个方向,我们也在实践

  • 非常抱歉,迟来的回复
    比方说:
    手机有很多 sku 属性 和 spu 属性:
    Spu 属性一般包含:品类、品牌、型号
    Sku 属性一般包含:颜色、网络制式等

    在不同的系统中属性的 id 以及属性 id 的值 可能是不一样的(有一些定制化操作),运营同学会把 A 系统 与 B 系统 的不同 spu 和 sku 属性 做一个映射关系,保存在数据库中。开发同学在拿到 A 系统传过来的属性时,需要根据映射关系,映射出来最终的结果。

    比方说:
    A 系统中 spu、sku 属性为: 手机、华为、荣耀 5
    Sku 属性为:颜色:白色、网络制式:移动 4G、联通 4G、电信 4G
    Spu 映射关系为:
    外部品类 外部品牌 外部型号 映射后的品类 映射后的品牌 映射后的型号
    手机 华为 荣耀 5 手机 荣耀 荣耀 5
    需要测试:B 系统是否能够通过映射关系,映射出来了手机、荣耀、荣耀 5;

    Sku 映射关系为:
    颜色\网络制式 映射后的颜色\网络制式
    白色 深空灰
    移动 4G 移动 4G
    联通 4G 联通 4G
    电信 4G 电信 4G
    移动 4G+ 联通 4G 双网通
    联通 4G+ 电信 4G 双网通
    移动 4G+ 电信 4G 双网通
    移动 4G+ 电信 4G+ 联通 4G 三网通

    需要测试:B 系统是否能够通过映射关系,映射出来了深空灰、三网通;

    如何进行呢:
    1、 拿到运营同学维护映射关系【已知的映射关系】
    2、 使用 python 脚本 pandas 进行筛选,入参为手机、华为、荣耀 5;然后把筛选结果与开发的结果进行比对;来判断开发写的映射关系逻辑是否正确。
    3、 入参为白色、移动 4G、联通 4G、电信 4G;然后把对筛选结果进行遍历逻辑处理,然后获取结果,来判断开发写的映射关系逻辑是否正确。

  • 抱歉,迟来的回复
    比方说:
    手机有很多 sku 属性 和 spu 属性:
    Spu 属性一般包含:品类、品牌、型号
    Sku 属性一般包含:颜色、网络制式等

    在不同的系统中属性的 id 以及属性 id 的值 可能是不一样的(有一些定制化操作),运营同学会把 A 系统 与 B 系统 的不同 spu 和 sku 属性 做一个映射关系,保存在数据库中。开发同学在拿到 A 系统传过来的属性时,需要根据映射关系,映射出来最终的结果。

    比方说:
    A 系统中 spu、sku 属性为: 手机、华为、荣耀 5
    Sku 属性为:颜色:白色、网络制式:移动 4G、联通 4G、电信 4G
    Spu 映射关系为:
    外部品类 外部品牌 外部型号 映射后的品类 映射后的品牌 映射后的型号
    手机 华为 荣耀 5 手机 荣耀 荣耀 5
    需要测试:B 系统是否能够通过映射关系,映射出来了手机、荣耀、荣耀 5;

    Sku 映射关系为:
    颜色\网络制式 映射后的颜色\网络制式
    白色 深空灰
    移动 4G 移动 4G
    联通 4G 联通 4G
    电信 4G 电信 4G
    移动 4G+ 联通 4G 双网通
    联通 4G+ 电信 4G 双网通
    移动 4G+ 电信 4G 双网通
    移动 4G+ 电信 4G+ 联通 4G 三网通

    需要测试:B 系统是否能够通过映射关系,映射出来了深空灰、三网通;

    如何进行呢:
    1、 拿到运营同学维护映射关系【已知的映射关系】
    2、 使用 python 脚本 pandas 进行筛选,入参为手机、华为、荣耀 5;然后把筛选结果与开发的结果进行比对;来判断开发写的映射关系逻辑是否正确。
    3、 入参为白色、移动 4G、联通 4G、电信 4G;然后把对筛选结果进行遍历逻辑处理,然后获取结果,来判断开发写的映射关系逻辑是否正确。

  • 转转 App UI 自动化进化史 at 2018年09月05日

    好啊好啊😀

  • 转转 App UI 自动化进化史 at 2018年09月05日

    数据管理:
    Case 所需测试数据,有专门的文件存储测试数据,有特定的方法提取测试数据,所以编写 Case 的时候,补充好就可以了。
    Case 执行所需的前提条件数据:会有方法进行数据创造,之后再执行测试逻辑
    Case 执行过程数据:Case 执行过程中,会产生 框架 log ,Case 执行 log,Device log, 失败时截图,及 Case 视频,log 及截图,本地会保存文件,也会在执行结束后通过平台接口,上报给平台存储,方便通过平台查看 Case 执行过程,Case 视频会直接上报平台 ,不会本地存储,文件的存储会使用 ftp, 测试结果及执行信息 会存储数据库
    Case 执行产生的应用数据: 会在测试结束后,通过特定的方式,将产生的测试数据进行清理

    Case 分量执行建议:
    如笑哼所说,框架本身有配置开关控制,是否在使用多设备时,进行 Case 分量执行,各执行一部分,设备越多,使用的时长会越短
    测试平台方面:有一个后续的计划,一直都保留着 Case 在 各个设备 及版本上 成功 / 失败的执行耗时, 可以利用这个数据,在选择 Case 列表 和设备后, 根据历史数据,进行计算,计算出,预计最短时长的分配方案,尽量保证各个设备使用的时长相近。

  • 转转 App UI 自动化进化史 at 2018年09月05日

    Ui 框架本身,可以设置失败重试次数,当 Case 执行失败时,会立刻进行重新执行,结果会分开保存。
    测试平台,因为框架本身有重试测试次数设置,所以也可以配置重试次数,下发任务执行
    测试平台本身,也提供了批量重新执行的策略,在一次测试记录的测试结果页面 或者 测试计划配置页面, 可以一键触发 重新执行,上次执行记录中的所有失败 Case,重新执行前,可以更改分配的设备 和 使用的被测应用安装包

  • 转转 App UI 自动化进化史 at 2018年09月05日

    现在:
    设备管理方面:我们在做一个设备管理平台,已经上线试用,主要是分布式管理,在多台设备上安装 Agent 服务,实时与设备平台同步信息, 设备平台也会下发任务给 Agent 服务,指定设备执行特定的任务
    设备控制方面:Android 如笑哼所说 暂时接入 STF,iOS 还在调研,可能先试用一些各位大佬已开源分享的方案

    以前:
    UI 框架: 执行时,会 获取已连接设备列表,获取当时 预使用的 Appium 端口占用情况 ,根据执行时设备的选择(配置的设备平台 和 是否指定了设备),为设备分配端口执行
    测试平台未接 设备平台时,本地服务异步更新设备连接状态,设备有 是否被占用 & 是否连接 两种状态,用来区分设备是被测试占用,还是未在线不可用,哪些是已连接并且可用的。端口处理同框架。设备基础信息的存储

  • 可以结合 minicap 实现无页面 实时 录制屏幕么😏

  • django-celery 学习笔记 at 2018年04月13日

    可以只用一条命令同时启动 Worker 和 beat ,在启动 Worker 的命令里加一个 -B 试一下

  • Macaca App Inspector 2.0 发布 at 2018年04月03日

    wda 的问题解决了么
    dyld: Library not loaded: @rpath/XCTest.framework/XCTest
    求助😂

  • 在新环境部署时碰见了相同问题,用了一天的时间反复试验了多种方式,都未解决,请问具体解决方式是什么呢😩
    已经参照正文中推荐的部分完全重新进行了操作,但是仍然没有解决问题,

  • application.running 没公开的话,是如何能使用的呢? 你用的是 Xcode9?

  • application.running , XCUIApplication 好像没有这个吧...

  • 膜拜大神,期待开源,牛的一批

  • 执行这个命令, 看能执行么 。 adb shell am instrument -w -r -e debug false -e class com.aabbcc.robtest.ExampleInstrumentedTest com.aabbcc.robtest.test/android.test.InstrumentationTestRunner

  • 执行使用的 testrunner 和 在 gradle 中设置的 testrunner 不是同一个, 你用的是 Android Studio 2.3 + 吧

  • mac 使用安装包安装 jenkins 时,如果不更改默认设置,会创建一个Jenkins用户
    并且这个 Jenkins 用户只是普通用户,在读写文件&运行 command 时报错
    想要切换启动用户为 root 用户的话
    1.# 停止 Jenkins
    sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
    2.修改用户名和群组
    进入文件夹 /Library/LaunchDaemons/
    修改 org.jenkins-ci.plist
    jenkins -> 你的登录账户名
    daemon -> staff
    3.# 开始 Jenkins
    sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

  • 问题已解决,
    在 Jenkins 执行的 python 脚本最前添加 qiniu 被安装到的 site-packages 目录添加到 sys.path 中

    import sys
    sys.path.appent('/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages')
    
  • 1.Jenkins 也是安装到本地的,我自己的 Mac 上,以上所有的执行环境都是在本地。
    2.Jenkins 执行 shell :which python ,输出 “/usr/bin/python”
    本地终端执行 which python 输出:“/usr/local/bin/python”
    3.Jenkins 执行 from qiniu import Auth 报错,pycharm 执行不会报错
    看来是 jenkins 使用的 python 和 本地使用的 python 不是同一个导致?...

  • 是的是的

  • 嗯,是的,solo.getWebElements 是可以的, 然后通过 solo.clickOnWebElement() 来操作,这是一套可行方案
    只是想产品较多,是否可以不区分被测应用,通过外部的方式来获取&操作,我们有自己的自动化测试系统 (python),所以希望最好有可集成的方案,当然以上是理想状态的一种设想,至于能否实现还在调研中。嘿嘿...如果没有找到一些比较好的办法,就会再研究一些测试框架

  • 是的,后面会考虑切换成 appium,之前 App 中的 webview 屈指可数,所以并没有去考虑,现在再逐渐的调研更有效的方式;
    现在是在考虑对 WebView 是否有必要做元素遍历操作,所以想先寻找一下可以通过代码/命令获取到 webView 中元素信息的方式。

  • 不好意思,想问的是,最后是要修改 uiautomatorviewer 的源码还是怎样,没太懂😅

  • 明白,已设置了密码,可以使用邮箱登录这个账号了,十分感谢

  • 是绑定到这个 GitHub 账号上了,谢谢,我好像要重新设置密码,之前使用邮箱登录的密码不生效了