论文分享_08_07

FragDroid:具有活动、碎片分析的安卓应用程序自动化用户界面交互分析

      今天分享的文章是FragDroid:具有活动、碎片分析的安卓应用程序自动化用户界面交互分析。

摘     要

       安卓的用户界面测试工作由于缺少碎片(Fragment)级别的分析,在覆盖率上受到限制。本文设计了活动碎片迁移模型,并且可以基于该模型进行自动化的用户界面测试用例生成。

主要贡献:

  1. FragDroid是第一个提供活动碎片分析的自动化用户界面测试框架;
  2. 分析了217个应用程序,其中91%的应用程序用到了碎片,FragDroid在其中15个应用程序中得到了66%的碎片覆盖率以及72%的活动覆盖率。

一、背景介绍

       活动是安卓应用中最常用的组件,用于提供用户界面;活动与活动之间可以通过startActivity()方法进行相互调用,碎片是在安卓系统3.0版本中加入进来的,提供了动态可分割的子界面,可以去对活动提供的用户界面进行划分,使用户操作更加灵活。

二、活动碎片迁移模型

       该模型是一个三元组<A,F,E>,其中A是活动的有限集合,F是碎片的有限集合,E是活动碎片之间的调用关系。该模型的提取过程如下:

  1. 反编译APK文件:使用ApkTool对目标APK文件进行反编译从而获得Manifest文件,构建活动碎片迁移模型的初始模型。
  2. 获取可用的活动、碎片:为了确保模型的准确率,必须要移除不合法的活动、碎片(与其他UI组件没有交互的)。
  3. 获取转移关系:将静态分析得到的活动、碎片作为节点,利用如下图的算法对碎片之间的迁移进行提取,该算法的核心思想为静态扫描碎片F0的文件,如果发现有new F1()等语句,则认为存在一条F0->F1的转移边。

三、生成用户界面测试用例

1.用户界面驱动与活动碎片模型更新

       FragDroid可以执行通过测试用例路径到达指定的目标界面,在到达了特定界面时根据界面的不同属性对活动碎片迁移模型进行更新,并生成更新的用户界面测试用例。

2.队列生成与测试用例生成

       对于整个迭代测试,用户界面转换队列是在 活动碎片模型 的基础上以宽度优先的策略进行维护的。队列中每个动态生成的项目都是有关从一个接口到另一个接口的转换的信息。这个过程可以分为两个核心模块——队列更新和测试用例生成。

四、实验结果

  1. 数据集:包括217个下载量超过500,500的应用程序,其中91%的应用程序都包含碎片组件的使用,最终从中选取了15个应用程序进行实验。
  2. 覆盖率:66%的碎片覆盖率以及72%的活动覆盖率。