由于Android系统在市场的热度非常高,因此Android应用的自动化测试也受到了广泛关注。Robotium[3]是谷歌公司推出的一款测试框架。主要支持黑盒情形下的应用界面自动化测试。使用Robotium进行测试,需要对待测应用程序创建一个工程,然后利用Robotium提供的各种手势操作、查找和断言机制的API,编写功能、系统和验收测试方案。Robotium有许多优点,诸如支持多个activities自动活动,执行测试用例速度快等等,但是Robotium测试框架缺乏从高层看待外部数据输入的视角,因为无法做到对应用中处理外部数据输入功能的完整测试。80706
Monkey[4]是谷歌公司推出的能够自动化地进行动作输入的测试工具。Monkey是集成在Android系统中的系统工具,能够生成随机的动作时间作为应用程序的输入。该工具的特点是使用随机测试的方法对应用的功能模块进行测试,通常用来对应用进行压力测试。但是Monkey只能对应用进行动作输入的测试,并且动作都是随机生成的,很难有针对性的测试。
MonkeyRunner[5]工具是谷歌公司为了能够让开发者自定义测试用例而设计的另一款自动化测试工具。该工具能够解析开发者使用Python语言编写的动作时间脚本,并将该动作事件作为测试用例发送到应用进行测试。此外,MonkeyRunner还支持截图、图片对比等功能,供测试后续的对比与查看。论文网
TestDroid[6]是Jouko Kaasila等人设计的一个Android应用自动化测试平台,其目标是解决Android平台碎片化带来的测试难题。使用TestDroid进行应用测试主要分为三个过程:编辑脚本、脚本执行和结果收集,由于该平台基于Android测试框架Robotium开发,因此TestDroid一定意义上是利用Robotium的接口开发的一个大规模设备测试工具。
Android应用的输入分为动作输入和外部数据输入。而国内外的各种研究方案和测试框架都主要着眼于应用的动作输入。本文基于遗传算法,提出了Android应用的外部输入数据的Fuzzing测试的数据生成方法。