想起一年前,公司做自动化测试还借助老美的工具,叫做 “CountDown”,这个工具坦白说,是很强大的,之前中国移动做认证的自动化测试也用这个工具,虽然现在已被舍弃。这个工具的精髓却仍然值得深入学习,细细体味的,自觉中其"毒"颇深矣。但它也有它的不良之处,我们当时使用的是 3.5 的版本,不知其后如何。那当时是存在一个比较重大的缺陷的,因其主要原理是对比图片,导致不同屏幕大小的设备,几乎无法重用已设计好的用例。每来新案子,自是苦不堪言。因了这,公司也在想着如何提高效率,自己在网上也找新的自动化测试工具。那会儿我主要知道有 UiAutomator 和 robotium,稍作了解了以后,便选择了 UiAutomator。
当我掌握了 UiAutomator 的时候,听说 Appium,既可做安卓,亦可做 iOS,也想学着来。另一原因是想用它来做一些网页的自动化,因为 UiAutomator 本身对一些网页上的控件,查不到它的属性,据查 Appium 是可以的,便想学着来试试。在安卓上搞了一条用例后,便弃之不用了,不想用这个,着实不便。
其实,我们做自动化黑盒测试,我们最主要的目的是什么呢?
围绕这两个主要的目的,那工具的选择上面,自然是越简单实用,效率越高越好。无论是 UiAutomator,还是 Appium 或其他什么工具,在最后的最后,都是要来那一下子,点击嘛,不操作哪里有什么测试可言?点击的啥呢?还不是坐标?而我们拿到了这个控件的坐标后,只消点击对应的坐标即可。哪个工具速度快,通用性好,才是首选。从这点来说,以上的工具各有利弊。我们使用 uiautomator dump 来获取 xml 档,从 xml 档中过滤出控件的坐标值来,使用 shell 脚本来执行,速度是非常快的。这个比 UiAutomator 本身要快的多。快多少?这点需要具体的用例来说明了,这是后话。
以上全属小可的乱弹琴,感谢各位!
感想不错,但是排版啊,先学了发帖的排版再发帖!https://testerhome.com/markdown
#1 楼 @lihuazhang
有看排版的,但是这感想的纯文字的贴子,怎样排版比较好,我这也有点头疼.怕挨批.有没有前面谁发过纯文字的贴子,而排版又比较好的,当学习之.
挺不错的分享,点赞
#3 楼 @lihuazhang
虽然可能列出来的点是相同的,但分析的角度不同,别人是纯粹从工具的易用程度来分析,而我是从实际在做整机测试的经验来看这个的.
楼主我用 uiautomatorview 获取控件然后 shell 命令执行,” uiautomator dump 来获取 xml 档,从 xml 档中过滤出控件的坐标值来,使用 shell 脚本来执行,速度是非常快的.这个比 UiAutomator 本身要快的多.快多少?这点需要具体的用例来说明了,这是后话.“这一点我觉得不太可信啊,楼主你是通过和什么产品做对比的?我怎么觉得 dump 这个过程又慢又不稳定呢?经常会出莫名其妙的故障
#6 楼 @james88233
后面有时间,我会举例来说明的,今天时间不早啦!另外,你说 dump 这个过程,又慢又不稳定,不知道是否有在哪个界面出过错呢?莫名其妙的故障是什么样子的故障?是否如我文中所言,报 error 吗?
#8 楼 @james88233
我今天在电脑上使用 uiautomatorviewer.bat 来抓取手机一个录音过程中的界面控件时,花了 34 秒,才显示出来,所以...相比较而言,3-4 秒算快了吧?哈哈,但是我在手机的 adb shell 下面, 执行 uiautomator dump 就快一些,当时没有拿秒表计时,大概是 4 秒以内的样子.我是使用了我讲的那个方法的.另外在使用 uiautomator 跑用例时,不仅仅是 dump 慢,有时界面上明明有这个控件,单独刷界面也可以刷出来,但是跑那条用例,就是失败了,中间又加了延时,方才成功.我不知道你有没有遇到过.
#10 楼 @james88233
快慢,一者与界面是否含有动态控件有关,二者与手机的运行内存有关.刚才所讲的 34 秒,是 34 秒,不是 3~4 秒,我没写错哈,是我在小米 2 手机上测试的一个数据,这只手机运行内存只 1G.至于其他关系因素,我目前还不知道.对于你所讲的"迭代频率比较高的偏功能性测试",我们的做法是,自动化没有设计完成时,采用逻辑测试,自动化设计完成时,自然是采用自动化.毕竟自动化用例也是需要人来设计的.客户的需求是说这些用例要设计成自动化,我想应该不是说立刻,马上用自动化跑起来吧?哈哈,理总是讲得通的.
关于快慢的问题,我觉得只要是做黑盒 UI 都快不到哪里去。因为即使你操作很快,你还得等网络、等控件渲染、等界面切换动画。。。最终速度不会比你手工快多少(selenium 在浏览器中运行很快,但你还是要等待浏览器跳转页面的时间)。
而且手机 dump 确实速度比 pc 慢不少。你可以拿个 genymotion 来 dump 一下,会发现比真机快不少。
真的要快,单测或者从 app 内部进行测试才是最快的。
#3 楼 @lihuazhang @carl 我说的是排版,我稍微帮你改了下。我觉得大家对自己的要求都低了。你这篇文章,有两个问题:
请斧正!
我不知道大家怎么想的,还是喜欢这样风格的文章。 @chenhengjie123 @jaychang1989 @james88233
#13 楼 @lihuazhang
感谢指正,下不为例.
#12 楼 @chenhengjie123
手机 dump 确实速度比 pc 慢不少,请问这个怎么理解?
#16 楼 @lihuazhang
已更新。
最近才和其他部门的同事聊过,这里的整机应该主要是针对一个固定型号的机器进行相应的整体功能性测试吧?因此性能是通过其他方式测试硬件,他们整机主要是测功能覆盖,然后目前的新机型主要都是 4.4 以后的,不存在取不到控件的问题。功能么,主要是测试 SDK 自带的和 ROM 封装的功能?我这么说有没有问题啊?大家的测试对象都不太一样,建议下次最好将需要测试的对象稍微描述一下吧?~~@carl 我这么理解有没有问题啊?望指正哈~
#18 楼 @yangchengtest 整机测试可以包含功能性遍历和性能测试啊,取决于你的测试用例怎么写了。我打一个电话,验证功能点,是功能测试,我连着打 100 个电话,同时记录并分析 logcat,这算不算性能测试?
#13 楼 @lihuazhang 排版好评,条理分明。
#12 楼 @chenhengjie123 我理解的快,就是跟 Monkey 跑起来差不多那种,最好俩动作间隔不要超过 1 秒(当然这是在设备本身合理地性能要求范围内),接近手工操作那种,我是不是想太多了 Orz,我用 Uiautomatorviewer 定位控件去拨 10086,它能给我 dump5 张图,然后一个个去找控件,慢的要死。当然后来我就发现了,用 adb shell input text 省事的多。但是从用户习惯来看,就是那么一个个 touch 的不是么?
@james88233 打 100 个电话这是稳定性测试吧?我的意思是这种手机硬件相关的测试和纯应用测试还是有区别的。~
#22 楼 @yangchengtest 对,当然是。但是整机测试,总要包含应用和系统吧,你跑纯应用测试跑 1 遍和跑 100 遍,结果应该是有很大不同的吧,而且跑 1 遍和跑 100 遍的前置条件肯定都不一样。
新人嘛,值得鼓励
不错不错 手动点赞
终于拍版好了。。。
#18 楼 @yangchengtest
固定型号?嗯,对,我们做的都是我们公司自己的手机,有很多的应用都是我们公司自己做的,其余的有一些客制化的应用以及平台本身的应用,比如 Settings 这样的。最主要的是稳定性测试。“建议下次最好将需要测试的对象稍微描述一下吧?”,嗯,接受你的建议,谢谢!
#19 楼 @james88233 打 100 个电话,在整机测试中一般认为是压力性测试(稳定性测试),看看通过率多少,看看会不会出系统问题。当然,面试过程中也是有遇到过一些公司把他定位性能测试的。。。。占少数
#21 楼 @james88233 目前的根据 view 的机制以及图片识别机制的都打不到 monkey 那么快,Robotium 还可以,因为是在一个类中,基于反射机制,所以速度能在 1s 以内。Uiautomator 如果用 jar 包写,一般能控制在 2~3s,如果用 dump 的话,基本上就要 4s 左右了
赞楼主,我也是在对比几种方案之后选择的 Uiautomator,觉得非常好用,有空一起交流。
有空我也可以分享一些像楼主这样的文章
您好楼主,我也在使用 uiautomator,不过,我现在写脚本遇到两个问题。这两个问题来源于一个功能,就是知识点学习,如图:
视频类知识点:
百科类知识点:
问题来源于滑动到知识点位置对知识点点赞 如图:
现在由于这两个知识点类型 ui 布局不一致,导致我写脚本,需要写两套,请教有没有什么好的方法,可以一个脚本,兼容这两个类型知识点的自动化测试。谢谢
请教一下,用 shell 脚本测试需不需要 root 权限?
#35 楼 @actionwind
可以不用 root
#18 楼 @yangchengtest 图库里面的控件获取不到
你好!请问题下:使用 Uiautomator API 输入字符串 object.settext("18012345678"),但实际上在手机看到的是 1012345678;是输入速度的原因吗
#39 楼 @huangqiang
不一定噢,换几个输入框试一试,使用 adb shell input text 试一试,多对比一下,再确认问题
想请教下,可不可以在安卓代码里 dump 界面 ui,就像使用 adb 命令获取一样,我使用/system/bin/uiautomator dump /data/tmp/dump.xml,没成功,请问您是否了解,感谢~
好像不可以的,权限的关系,代码中要获取控件信息的话,可以参看:http://blog.csdn.net/dd864140130/article/details/51794318
楼主你好,我现在本来是在用 appium,但遇到最大问题就是在实体机上执行用例特别慢,超慢,uiautomator 比 appium 执行速度上有多大优势呢?
如果你仅仅是测 Android 可以用 uiautomator2.0 版本,速度比 appium 快,是因为 appium 底下也是用 uiautomator,但是还做了一层封装。具体快多少,我没有实测过,粗略估计快一倍以上吧。
请问到哪里可以找到这个 CountDown 工具