【金阳光测试】基于控件核心技术探讨---Android自动化系列(2)---2013年5月

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:39   2147   0


第一讲分享了下安卓自动化一些概况和一些自动化框架现状和技术能够解决什么样的问题。这次课就深入到android世界里面。遨游、翱翔,深入了解自动化测试核心技术。

搞过编程开发的同学听到instrumentation这个东西一定不陌生。在android架构里面分四层(最下面是硬件驱动相关抽象层,不是笔者讨论的内容范围),往上面一点是协议栈,也不是讨论的核心,都和c语言相关,一直到第三层框架层(framework)。细分有二:

A. android的改良虚拟机dalvik和Runtime(java运行时环境)。这个我还要稍微解释下(懂的人请跳过),谷歌把java虚拟机(pc上面的虚拟机)进行改良,进行内存等优化,取消了远程登录等功能,发展成为自己的虚拟机,这样做好处是把每个独立的进程进行虚拟机封装,从而进程崩溃不会影响system进程。保证了安卓系统稳定性。

B. Runtime是一个和外部程序的接口(有些地方叫协议)把很多丰富的c++库、3D和2D动画、媒体库、字体库、sqilite等优良的特性引入到上层。

当一个android系统启动的时候,加载完毕守护进程和一些驱动等等步骤会调用init方法:Android的init进程为SIGCHLD绑定了信号处理函数sigchld_handler(),并创建了一个socket用于接收该函数中发送的socket消息。sigchld_handler()函数只是简单的派送一个消息到该socket。看得头晕的同学请无视他们。你只要记住,c侧的框架层加载完毕,将要调用一个java层最根上的父类,就是Zygote。英文名字是孵化、受精卵,大意是生孩子。所有的进程都由它产生,它和系统服务结合共同产生ActivityManagerService、WindowsManagerService和DialogservicesManager等,由zygote控制它们和线程binder对象进行通信,共同产生android四大组件(activity、broadcast、services、contentprovide)。在zygote创建process(线程)对象同时,我们终于看到幕后蠢蠢欲动的instrumentation。饶了一大圈的盖世太保终于出现了。它能够在所有组件的初始化之前产生,所有它能够监视所有组件信息、状态、变化、消亡等,当然,在监控之前,它会拿到这些组件的那个上下文引用(context),控制应用程序的多个生命周期;发送UI事件给应用程序;在执行期间检查程序状态。这就是自动化最核心的技术—设计模式之监听者模式。

在操作系统中,应用程序组件是控件的父类,由instrumentation监控和获取信息,然后由instrumentationTestRunner来控制脚本才进行一次自动化测试,你可以在adb shell里面运行这个脚本,或者用eclipse+junit方法来运行脚本,都是可以的。

这里的Instrumentation类,它能够监视应用程序跟系统的交互。Instrumentation对象会在应用的其他所有组件被实例化之前实例化。需要调用instrumentation类必须继承android.app.instrumentation才能使用它。

由于android的核心不是app,是activity。这和ios苹果大相径庭。苹果是delegate委托和发送消息机制为主的MVC模型(视图、控制器和模型)详细苹果ios自动化测试文档会在第9讲以后问世,虽然android也有消息,但是安卓的消息一般是传递键值对(key_value),在安卓里面叫bundle对象,是一种被泛型的字典。这里顺便提下后起之秀winphone 8,它的机制更诡异,是一种墓碑化休眠保存机制(这个winphone自动化和单元测试会在第15讲以后给大家详细剖析)。正因为有了它,winphone为了达到它最好的用户体验,虽然是多线程,但是同一时间只能有一个进行激活状态,正因为如此,它单核的机器性能和效率远远盖过android和苹果。所以说,做了三十年的操作系统的微软水平真不是盖的,用户体验等等都优越苹果和android,尽管很少人使用。=dding-bottom:0px; font-family:Arial; font-size:14px; margin-top:0px; margin-bottom:0px"> 5.资料csdn博客:http://blog.csdn.net/haorenmin2008

6.金阳光微信公众账号:搜索金阳光自动化

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP