一.学习Android自动化需要哪些能力,否则后续学习起来会吃力
-
在测试行业带过一年以上(才有测试思想,测试思维的方向,一些学习中专业的词语才可以理解)
-
独立编写Java或者C++等项目一年以上(对脚本,对源码的理解,对KPI的理解)
-
熟练掌握具备业界开源自动化的工具并用在工作中(对开源的了解,如monkey,monkeyrunner(google自家做的),robotium(开源的,基于控件的自动化框架),UiAutomator(2013年,4.1以上的自动化框架))(才能直接进入代码学习,理解)UiAutomator支持4.1
-
用python的脚本语言的了解
-
会简单的Linux命令(底层包装在Linux中,进程方面的命令,adb shell中的指令),会android简单的开发,会Eclipse的开发
二.面试中通常会被问道自动化相关方面的经验与基础
BAT是:百度,阿里,腾讯的简称,经常的面试题:进程处理,app自动化,批处理调用脚本,监控进程的方法,线程阻塞的处理
如:腾讯笔试题目:
1.如何测试分布式ATM机?这个是针对一些大系统的题目,集群部署
2.使用一个数组实现三个堆栈,要求有效得使用数组的存储空间,可以使用其他数据结构.涉及到一个测试人员对整个系统的了
解,包括前端的负载均衡到主备应用等
3.编写一个脚本,统计log文件中首个单词出现的次数,如:error:xxx/warning:xxx
阿里巴巴2面的部分面试题:
1.robotium源码架构实现
2.robotium的工具怎么根据id找到脚本id(脚本id和架构映射原理)?
3.mongkeyrunner和Uiautomator原理
4.怎么做电量测试(如何做到app进程级别)
5.影响手机电量因素列举一下
6.稳定性和压力怎么做?
7.robotium webview怎么实现
8.怎么让系统不休眠:1.通过powermanager来精细控制,具体函数请指出2.在view中设置PLAG_KEEP_SCREEN_ON
百度1面题目:
1.我测试他们客户端,日文输入法我们不认识日文,怎么用自动化解决
2.不用变量交换两个数
3.调脚本怎么并行和串行调bat批处理
4.怎么解决控件和点触实现屏自动化
5.用户装了百度客户端,你怎么实现自动化?
6.我们自动化要验证功能准确性还有性能,UI界面.一个自动化脚本验证多个,难道一个自动化只验证一条用例?
7.怎么实现监控内存,在esliose显示pss是什么意思?
8.ANS出现怎么解决?
9.进程和线程,handler 和runnable 还有广播和服务
10.robotium和mongkeyrunner的区别
11.Radiobox 和checkbox自动化脚本怎能么复用(考的是正交法)
12.GC原理
13.android性能自动化怎么做
14.电量对比测试
15.android安全自动化怎么做
16.有个客户装了百度客户端,怎么规划测试版本自动化
17.UI线程阻塞,怎么复现查log
三.业界自动化框架:
1.基于坐标:mongkeyrunner,北京播思自研工具
2.基于随机流的单元测试:CTS,monkey(压力测试)
3.基于元素查找图形对比:seetest(收费),I-test seetest:http://experitest.com
4.腾讯:bita.qq.com平台(登录后可以进行一些定制或者压力,试用测试等),GT.tencent.com(测试游戏,帧率,解码率,需要手机root权限)
5.百度云,itestin:itestin.cn(手游测试),阿里巴巴TMTS
6.基于控件信息:Robutium+Junit4框架(基于控件,app),东舟Smart-Robot,美国风河公司的:wind test management
7.NativeDriver和Selenium(被UiAutomator取代),比较新的技术
ADB (Android Debug Bridge调试桥接)
adb devices:查看连接的设备
1.是一个客户端,是一个服务器(运行后台,端口:TCP port:5037[如果adb不能启用时可以检查一下端口是否被占用]),还是一个守护进程,能够使的运行的实例运行在后台
能在SDK中的platform-tools中找到:adb.exe(用该路径配置环境变量:path下添加到最后即可,用;号隔开)
如:D:\SDK\sdk\platform-tools
环境配置:
http://hi.baidu.com/szy123618/item/48be8134cdfcd5c3382ffaa1
2.基本命令:
adb install <apkpath>:安装程序
adb push <PC path> < /data/local/tmp>:从PC拷贝文件到手机 adb push 文件路径 /data/local/tmp
adb pull:从手机拷贝文件到PC
kill -server:要进入adb shell (显示$为未root,显示#为有root权限)
在android 4.4以上支持adb shell screenrecord <save path>
如:adb shell screenrecord /sdcard/demo.mp4
2.AndroidDebugBridge 源码:
debug内部类:
Path:SDK/tools/lib/ddmslib.jar Android DebugBridge 源码位置
问:如何判定device设备是否连接
问题参考:http://stackoverflow.com/questions/17381324/how-to-tell-if-android-device-detected-by-adb
解答中涉及AndroidDebugBridge的类,在google中搜索AndroidDebugBridge如下:
起源码如下:
其中:
publicstaticAndroidDebugBridge createBridge(String osLocation,boolean forceNewBridge){ |
synchronized(sLock) |
不论是否促在ADB连接,都会重新再启动一个adb连接
publicstaticAndroidDebugBridge createBridge(){ |
synchronized(sLock) |
|
|