ApkViewTracer是一个工具,主要是通过与Android模拟器中View Server通信,可以跟踪并分析模拟器当前Views的状态,可以向指定的某个View发送事件,触发其行为。目前,这个工具主要提供两个功能:
1.
2.
(Google Code :http://code.google.com/p/apk-view-tracer/)
想法来源
(详见http://developer.android.com/guide/developing/tools/monkey.html)
这样便存在有两个问题:
1.
2.
因此,可能需要更拟人地更智能地去触发事件,至少需要有一个可配置的接口可以实现对动态分析更高效的事件流。
相关技术
(详见http://developer.android.com/guide/developing/tools/hierarchy-viewer.html)
(详见http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html)
程序Intelligent event trigger介绍
对人而言,使用application的过程中,最直观的感受就是图像和文字,若图像和文字中包含有提示性的信息,人通常会按照application的提示去完成操作。
现在的基本策略是,“敏感词优先”策略:如果当前的可点击View列表中,其Text中包含有预定义的敏感词,如“download”,“next”,“click”,“link”等,则优先触发包含敏感词的view的点击事件,没有的话,则随机触发当前可点击View列表。
若当前View到达View Tree的最底层,其往下再没有可响应触发事件的view,则退回到上层,若当前View在规定时间内已退出该apk的view,则可重启该apk,继续运行。
Android智能事件触发器Intelligentevent trigger程序的主要框架如下:
其中Rule Parser模块用来处理外围的规则解析,如运行时事件的分布,事件总数等。
Strategy Parser模块用于解析事件触发的策略,目前只有敏感词优先策略,但支持扩展。
而View Client是与模拟器的Android view server和adb server通信的核心模块,其结构如下:
其中Device Command模块用于与模拟器中Android View Server通信,得到Views的信息。
View Parser用来分析Views信息,得到Views的状态,包括坐标,Text,可点击,可视等。
View Operator通过与Android adb server通信,对Views进行操作,发送事件。
Automated Testing Interface介绍
而同时,我还实现了一组API,可用来做Android的UI自动化测试,其接口均包含在AutomatedTestingInterfac
其类似于Robotium框架,但Robotium可以说是一个嵌入式框架,需要待测工程的源码,并需要借助于Android的Instrumentation机制才能完成测试。而ApkViewTracer则是运行在模拟器外面,通过与Android View Server和adb server的通信,可以实现完全黑盒的UI自动化测试。
ApkViewTracer 的AutomatedTesting Interface框架
这里View Operator是对之前View Client中的View Operator模块的封装。
下一步要解决的问题
1.
2.