前言:Android自动化测试工具,测试脚本,在网上是很多的,如CTS、UiAutomator、py、shell、bat脚本,包括DDMS和腾讯的APT,以及安全测试工具mercury和Drozer,还有淘宝的太禅(这是一个关于app与web相结合的测试,也就是淘宝app了,其实这个app就是一个浏览器)。虽然可以用的工具很多,但是对于android系统的综合性测试,在测试行业,还没有一个大的集合,可以这么说,散乱的东西太多,我需要一个思路把它们集合起来。于是,这个时候,我思索着构建一个Android AutoTest工具出来。
主要思想:
通过ADB(Android Debug Bridge),利用android原生自带的调试工具和命令,结合手动测试用例,做一个黑盒的android系统的自动化测试工具。当然,为了简单,我得把之前一概的脚本全部都集合都一起去,这样,一个稍微具有完整性的工具就可以出来了。
实现方式:
1、Python:
这是我最喜欢的语言,简单、优雅、自带模块功能丰富,并且不用编译,试想,在计算机处理速度越来越快的大趋势下,运行一个解释器下的工具,能耗费多少资源呢?不过,python的方式还是有着相对应的缺陷。当然,一个东西永远都有着不够完善的一面。下面说说python的优劣势吧
(1)优势:
*语法简单,几乎跟英文相类似,这么简单的语法,加上各种基础模块,简直就是为了实现逻辑而生的高级语言
*功能模块丰富,模块的丰富性,几乎可以让我们随心所欲的做我们想做的事情,操控文件?那是很简单的操作,当然,如果不满足,我们还可以自己编写模块
*解释型语言,解释型,就是边解释边运行,在不用编译的情况下,python会将py文件转换成介于汇编和C之间的形式,再去解释运行,如果脚本更改了,那么它会自动刷新这个文件,这就给我们很多时间来实现我们的想法,不用为编译去浪费太多的时间。
*平台兼容性强,一般市面上所有的操作系统都可以运行python解释器,当然,在你的系统上设置python的环境变量之后,直接点击就可以运行了,多方便。
*面向对象,这个思想的强大,让你的代码几乎无限复用,放弃脚本,将脚本代码复用,不用为编写硬编码去做太多的运行帮助。
(2)劣势:
*运行速度不是很快,如果模块化后,启动时,还是稍许有些慢
*对JAVA的兼容性不是很好,不过也可以用JYTHON,但是那是我下面要说的内容了。
*相当于一个外挂,挂在android设备的外面,中间用ADB做为桥梁,但是ADB这个东西有bug,如果你长时间运行,或者进程过多时,就是崩溃。所以,想想你一千多条用例,跑不下去了怎么办,可以说见仁见智吧(比如CTS还是通过ADB的方式去跑的,那也是2w多条用例,还不是照样跑下来了)
*对于面向过程的人,可能体会不到这个好处,当然,你仅仅用python来编写一个脚本,而不是做一个工具的话,那确实感受不到它的美妙。
2、Jython
这是看了UiAutomator自带的包后,我决定后续再次维护开发的时候,使用它去运行,当然,如果要我去重写一个轮子,那是不最不愿意做的事情,我要做的事情太多,也没有这么多的时间给我去研究,是的,以程序员的角度来说,如果你什么都要会,什么都需要了解清楚再去做事情,效率上反而还不如拿来即用的同事,这正是协同工作和面向对象思想相结合的产物。不过,这个也是为了让我做这个工具下一步的延展,我要在手机上去运行我的工具,那么我想做与UiAutomator相同的操作,那当如何呢?最简单的方式是引用它的包,然后利用它自带的方法去实现了。所以。。。
(1)优势 :
*可以用JAR包,这个是我初步的认识,当然,如果使用过程中,还有新发现,那会继续补充的。
(2)劣势:
*基于jvm,启动速度太慢,monkeyrunner就是这样的,所以,看到了monkeyrunner复杂的方法名和引用,决定重写一个工具的
3、JAVA
基于APK的方式,摈除ADB的缺点,后台运行,服务器处理结果,可行?不过,现在还在学习JAVA语法当中,至于APK的编写。。。后续进行中