是的,这是另一个方向,我们也在实践
非常抱歉,迟来的回复
比方说:
手机有很多 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;然后把对筛选结果进行遍历逻辑处理,然后获取结果,来判断开发写的映射关系逻辑是否正确。
好啊好啊
数据管理:
Case 所需测试数据,有专门的文件存储测试数据,有特定的方法提取测试数据,所以编写 Case 的时候,补充好就可以了。
Case 执行所需的前提条件数据:会有方法进行数据创造,之后再执行测试逻辑
Case 执行过程数据:Case 执行过程中,会产生 框架 log ,Case 执行 log,Device log, 失败时截图,及 Case 视频,log 及截图,本地会保存文件,也会在执行结束后通过平台接口,上报给平台存储,方便通过平台查看 Case 执行过程,Case 视频会直接上报平台 ,不会本地存储,文件的存储会使用 ftp, 测试结果及执行信息 会存储数据库
Case 执行产生的应用数据: 会在测试结束后,通过特定的方式,将产生的测试数据进行清理
Case 分量执行建议:
如笑哼所说,框架本身有配置开关控制,是否在使用多设备时,进行 Case 分量执行,各执行一部分,设备越多,使用的时长会越短
测试平台方面:有一个后续的计划,一直都保留着 Case 在 各个设备 及版本上 成功 / 失败的执行耗时, 可以利用这个数据,在选择 Case 列表 和设备后, 根据历史数据,进行计算,计算出,预计最短时长的分配方案,尽量保证各个设备使用的时长相近。
Ui 框架本身,可以设置失败重试次数,当 Case 执行失败时,会立刻进行重新执行,结果会分开保存。
测试平台,因为框架本身有重试测试次数设置,所以也可以配置重试次数,下发任务执行
测试平台本身,也提供了批量重新执行的策略,在一次测试记录的测试结果页面 或者 测试计划配置页面, 可以一键触发 重新执行,上次执行记录中的所有失败 Case,重新执行前,可以更改分配的设备 和 使用的被测应用安装包
现在:
设备管理方面:我们在做一个设备管理平台,已经上线试用,主要是分布式管理,在多台设备上安装 Agent 服务,实时与设备平台同步信息, 设备平台也会下发任务给 Agent 服务,指定设备执行特定的任务
设备控制方面:Android 如笑哼所说 暂时接入 STF,iOS 还在调研,可能先试用一些各位大佬已开源分享的方案
以前:
UI 框架: 执行时,会 获取已连接设备列表,获取当时 预使用的 Appium 端口占用情况 ,根据执行时设备的选择(配置的设备平台 和 是否指定了设备),为设备分配端口执行
测试平台未接 设备平台时,本地服务异步更新设备连接状态,设备有 是否被占用 & 是否连接 两种状态,用来区分设备是被测试占用,还是未在线不可用,哪些是已连接并且可用的。端口处理同框架。设备基础信息的存储
可以结合 minicap 实现无页面 实时 录制屏幕么
可以只用一条命令同时启动 Worker 和 beat ,在启动 Worker 的命令里加一个 -B 试一下
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 账号上了,谢谢,我好像要重新设置密码,之前使用邮箱登录的密码不生效了