UI自动化中阶思考与实践
活动时间:2017年4月17日 QQ群视频交流
活动介绍:TMQ在线沙龙第十九期分享活动
本次分享的主题是:UI自动化中阶思考与实践
共有122位测试小伙伴报名参加活动,在线观看视频人数 66人!
想知道活动分享了些啥吗,
请往下看吧!
活动嘉宾
嘉宾简介
陈帅,腾讯专项技术测试工程师,目前主要负责腾讯WIFI管家业务及专项测试,多年测试经验,在UI自动化开发方面,在appium、uiautomator、espresso等工具上都有实战经验。
分享主题
1.UI自动化会存在哪些问题 2.从设计、环境、细节三个角度分析和解决问题 3.总结UI自动化的使用姿势
问答环节
1、可以多个UI自动化框架组合使用,能举一个实际例子吗,最好是结合实际问题?
答:Espresso 和 uiautomator是可以组合使用。
2、资源混淆是不是需要开发提供资源对应表?
答:是的。
3、关于多个界面会有弹框,但不确定那些页面会弹,什么时候会弹,这个能具体讲讲怎么解决了?还有关于引导,这个怎么处理?
答:
弹框:建议详细了解下uiautomator中UiWatcher的工作原理,在启动前将uiwatcher注册好。无需关注在哪些页面弹、什么时候弹。
引导:直接贴代码给你参考一下。
4、我们目前生产版本比较多,但是我们是混合模式的APP,更新H5 比较多,这种情况,我们怎么进行ui自动化,在哪个阶段做比较好?
答:Espresso,appium,macaca,robotium都支持混合模式,具体用哪个,建议根据自己的结合项目的调研报告来选择。H5页面更新较多的话,这部分建议不考虑自动化,UI自动化主要针对功能稳定的用例来做。
5、请问下对应用悬浮窗和toast有什么好的抓取和验证方式吗?
答:Espresso可以抓取到toast。
6、请问下如何更精确的抓取是应用的问题,快速排除是脚本的问题?
答:日志,截图,录屏,开启开发者选项中的显示点按操作反馈和指针位置等。
7、请问下是否有准确的在问题发生时进行截图方法,往往截图时已经错
了问题界面?
答:参考问题6,谢谢。
8、除了mainlog日志和截图,是否还有其它的日志或者内容可以辅助问题分析?
答:录屏,stf minicap。
9、有些手机在自动安装时弹出安装的弹窗如何更好的解决?
答:在拉起测试任务的进程前,先使用uiautomator拉起一个watcher进程去监控安装弹框,这个进程监控界面上弹出的安装、信任这些东西,统一都点掉。
10、对需要多机的测试,比如来一个电话或者来一条短信是否有好的解决方法?
答:抱歉,我这边也没有处理过这种场景,暂无法给予答复。
11、混合模式的app选择哪个自动化测试工具?
答:Espresso,appium,macaca,robotium都支持混合模式,具体用哪个,建议根据自己的结合项目的调研报告来选择。
12、我们项目的 发现webview中webElement的click不生效。只好获取绝对坐标,然后点击屏幕的绝对左边。使用的appium。有其他解决建议吗?
答:有以下两种值得一试的方案。
1、找到相邻控件坐标,计算当前控件的绝对坐标。如下图:
uiautomatorviewer中点击右上角警告小三角,会得到有一些元素(黄色控件),是可能无法找到的。而使用相对坐标就是说,我们可以获取它相邻控件的坐标,然后减去或加上一个比较小的px值,再点击计算后的坐标即可。
2、使用屏幕尺寸计算相对位置。在测试开始,将屏幕尺寸存下来,使用百分比的方式计算得到需要点击的位置。如下:
点击【50%宽度,80%高度】的位置。
13、QQDriver 这个有相关资料吗,关于如何搭建的?
答:这是内部工具,暂未开源。所以,抱歉,不做解释。
14、刚刚老师说到开发改了一个id,只需要改业务层没错,但是如果开发把步骤改了,两个步骤之间多加了一个步骤,那用例层还是需要改的吧?
答:对,必须的。
15、做自动化的时候发现用 uiautomatorviewer.bat 获取id时发现会有获取不到id的情况,请问这是怎么回事?
答:对应的控件,开发如果没有写id的话就没有id,Dump下来UI之后,建议点击界面上的黄色小三角,尽量不要使用那些被置为警告的UI控件,在自动化过程中,会找不到这些控件。
16、比如测试爱奇艺,有很多页面,是进入到每个页面一个封装还是通过查表来进入(一个页面一个封装代码量大)。如果通过查表表中应该有哪些信息,我之前的做法是通过activity+页面标题,但发现很多页面标题以及activity都一样的?
答:我理解你的问题是不知道自动化过程是否已经进入到某个页面,我的做法是选取其中几个元素,这个页面封装一个isLoaded方法,方法中判断这几个元素是否存在,如果返回true就代表这个页面已经打开了。每个page都有这个方法。
17、目前项目用的是appium,主要是采集性能数据 也就是刚提到的UI驱动的性能测试 在两个版本对比测试中,不可避免的要长时间顺序执行多个用例 模拟玩家一个整体操作步骤,怎样能避免由于appium的不稳定带来的问题呢,经常会执行一半appium报错,然后测试中断?
答:不建议使用appium做性能相关的测试,框架本身的问题无法避免,只能换一种框架。性能测试的话,我建议用uiautomator和espresso来驱动会更好。
18、对于类似wifi开关的测试,验证点怎么把握 怎么确定是否真正打开或者关闭 还有对于想从状态栏获取验证信息 有没有好的建议?
答:uiautomatorviewer似乎定位不到状态栏的图标。调用android提供的接口来验证,建议看下wifimanager。建议不要把自己的思维在UI校验上限制死,校验手段有很多,比如读android系统文件,读系统的接口,读数据库等等。往往UI自动化,结合其他的手段一起做,效果会更好。