乐文革 第一次作业

论文标题:Improving Automated GUI Exploration of Android Apps via Static Dependency Analysis

作者:苏亭等人

作者单位/个人主页 http://tingsu.github.io/

论文档次:2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)

论文应用量:113

1、摘要:

   现在安卓程序的gui测试变得越来越重要。现有的技术经常是通过一些特定的方法尽可能多的来访问更多的gui界面。例如像monkeystoatA3E等。然而它们的有效性并不确定,这篇文章第一次通过现有的开源开源程序来分析它们的局限性,然后确定了三个关键性的依赖——小部件-页面依赖、小部件-小部件依赖和系统事件依赖。为了克服它们,介绍了一种静态依赖的方法来提高gui探索的性能。具体是给定一个app,后构建gui页面转化模型,通过小部件的依赖关系,然后通过深度遍历引导gui探索。作者将他命名为GESDA,后试验结果表明此方法由于最先进的gui探索技术,并且在4app还发现了monkeystoat未发现的4个未知的崩溃。

2、问题是什么?

   为什么基于随机、启发式策略来访问尽可能多的页面的自动gui测试是有局限的?

3、项目背景

   市面上的gui测试monkeystoat用于开源和工业应用程序的覆盖很低,所以有效性不确定,所以此次的实验在70个真实的开源安卓应用程序上使用monkeystoat进行研究,从而描述它的局限性。

4、解决方案

介绍了dependency-informed exploration,一种利用静态依赖分析来有效提高GUI探索性能的自动化方法。分为两步,第一步:首先从一个app中静态构建依赖集成页面转换模型,用page表示基本单位,它捕获这些依赖项作为元素,元素中可能表示页面中带有回调的小部件(小部件-页面依赖),影响回调状态的小部件(小部件-小部件依赖)和周期回调的页面(系统事件依赖)。第二步:利用静态模型引导基于深度优先遍历的动态探索,在探索页面的一个步骤中,有回调和周期回调的部件有限执行,回调受其他小部件影响的小部件根据状态的组合完全执行。

5、作者的核心思想、创新点

   作者分析了monkey的随机选择页面上的部件而stoat根据启发式的规则计算权重选择部件这导致了无法执行页面上的所有小部件,而作者通过小部件的依赖策略来解决这一问题。

6、实验及结论

  首先构建实验模型——通过静态分析来提取安卓程序的结构模型。生成的dptm有三个原则。1、具有一个或多个事件句柄的小部件应该被完全识别。2、状态影响回调控制逻辑的小部件应该被识别并且要与回调的小部件相关联。3、特定的周期回调应该预先被识别从页面提取。然后动态探索——根据深度优先遍历对模拟器中的安卓程序进行操作,使模拟器和探索管理器交互。管理器根据模拟器和dptm返回的屏幕转储生成执行决策,该决策可以是页面上的小部件指令或者模拟系统事件,后模拟器收到指令执行相应的操作,在之后将屏幕转储返回给管理器。静态识别的关系改善了动态探索的决策,1、屏幕转储和dptm中存在的小部件优先执行 2、涉及到回调的小部件完全执行 3、在dptm标识的周期回调是第一次进入页面触发的,可根据需要回调。实验证明中作者所提出的GESDA是在类、方法和线路覆盖率上比monkey优秀,并且能够找出崩溃,所以此方法是有效的。

对你的

7、启发

在对一些方法进行改进的时候可以根据事物的特性来选择合适的遍历方法,或者对权重的定义做一些改变,可能会达到较好的效果。

posted @ 2021-02-07 07:49  天暖  阅读(83)  评论(0编辑  收藏  举报