原创 基于强化学习的Q-learning Android应用程序驱动测试

2021-1-29 16:10 985 13 5 分类: 机器人/ AI 文集: 人工智能

移动应用程序在我们的日常生活中起着重要作用,同时仍然要保证其正确性仍然是一个挑战。基于模型的系统方法已应用于 Android GUI 测试。但是,由于模型不精确和可伸缩性差等限制,与随机方法相比,它们没有显示出明显的优势。

在本文中,我们提出了 Q-testing,这是一种基于强化学习的方法,该方法得益于 Android 应用程序的自动测试和基于随机的基于模型的方法。Q-testing 以好奇心驱动的策略探索 Android 应用程序,该策略利用内存集来记录先前访问过的状态的一部分,并引导测试实现不熟悉的功能。状态比较模块是一种由大量收集的样本训练而成的神经网络,可以新颖地用于按功能方案的粒度划分不同的状态。它可以确定 Q 测试中的强化学习奖励,并有助于好奇心驱动的策略有效地探索不同的功能。我们在 50 个开源应用程序上进行了实验,其中在代码覆盖率和故障检测方面,Q-testing 优于最新水平和实践水平的 Android GUI 测试工具。到目前为止,已经确认了 22 个报告的故障,其中 7 个已得到修复。

1.引言

移动设备和应用的激增对我们的日常生活产生了巨大影响。统计资料显示,普通用户每天在移动应用上花费 2 个小时以上。但是,由于可能发生的事件和过渡的组合空间很大,因此要保证应用的质量仍然是一个挑战。日常使用的应用程序通常包含大量接口和可执行事件,这使得探索其所有状态非常耗时,更不用说只能在特定条件下才能访问的特定功能。不同的策略已应用于 Android 应用程序的自动化测试,不幸的是,这些策略仍需要改进。

随机策略生成伪随机事件来对应用程序进行模糊测试。Monkey 是实践状态测试工具,是该策略的典型示例。尽管在实际开发中被广泛采用,但是它的缺点还是很明显的。Monkey 通常会产生无效的事件,例如单击屏幕的非交互区域,该区域不会更改当前状态。而且,测试是不平衡的,可能永远也不会探索某些难以达到的功能。

基于模型的策略根据使用静态或动态方法构造的应用程序模型生成测试用例。在这种情况下,高质量的模型对于获得良好的测试结果至关重要。但是,如上所述,探索 Android 应用程序的所有状态是一项挑战。而且,几乎不可能对应用程序的行为进行精确建模。例如,欢迎界面在当今的应用程序中很常见,只有在首次打开应用程序时才会出现。这些信息通常无法捕获,从而使生成的事件序列始终在欢迎界面中包含事件,这与应用程序的实际行为不一致,并且极大地影响了测试的有效性。

系统策略使用复杂的技术(例如符号执行)为目标应用程序行为提供特定的输入。这些策略的主要目的是揭示难以用其他策略执行的典型功能,但是它们的可伸缩性较弱,并且在诸如代码覆盖率和漏洞披露之类的总体测试指标中通常表现较差。

机器学习技术也开始在 Android GUI 测试中找到应用。最近,一些研究者利用强化学习,特别是 Q 学习,可以从随机和基于模型的方法中受益,以指导测试进度。记录每个事件的值的 Q 表以及 Q 值的传播属性可以部分代替模型,以轻松方式存储测试相关信息。它还有助于避免模型和应用实际行为之间的不一致问题,这是随机测试的优势。但是,现有作品并未完全释放 Android 测试中的强化学习能力。以奖励给予过程为例,奖励过程是加强学习的关键。先前的工作倾向于计算两个状态(执行事件之前和之后的状态)之间的差异,以确定奖励。如果两个状态截然不同,则测试工具将不断给予丰厚的回报,即使它们已经被过度探索,也会导致它们之间频繁跳转。尽管某些奖励计算功能考虑了执行频率,但是当大多数事件执行了几次后,问题再次出现。

为了解决上述挑战并释放机器学习在 Android GUI 测试中的潜力,我们提出了一种基于强化学习的新颖方法 Q 测试。Q 测试的策略称为“好奇心驱动的探索”,将测试引向对其感到好奇的状态。更准确地说,Q-testing 维护着一个集合,该集合充当内存来记录先前访问过的状态的一部分。 根据当前状态与内存中记录的差异来计算强化学习奖励。与先前的工作不同,好奇心驱动的探索是一种动态适应性策略。适应性的意思是,它可以发现状态重要性的变化,并将针对特定事件不断调整奖励。

为了提高测试效率,我们新颖地提出了一种神经网络,以功能场景的粒度划分不同的状态。Q 测试使用此模块比较状态并计算奖励。在它的帮助下,Q-testing 将优先尝试覆盖不同的功能,这有助于合理地分配有限的测试时间,并在短时间内导致代码覆盖率的快速增长。 我们收集了超过 6k 的样本来训练模型,不仅可以用于强化学习,还可以从状态压缩和代码推荐等其他任务中受益。Q 测试还涉及专门针对 Android 应用程序设计的测试策略。我们以某种方式解决 RecyclerView 和 ListView,以免在不必要的测试中浪费时间。我们还考虑了系统级事件,它有助于 Q 测试发现一些复杂的错误。

2.基于 Q-learning 的安卓测试

Android 测试任务可以看作是马尔可夫决策过程,它可以使强化学习发挥作用。我们基于 Q 学习设计探索策略,以指导测试工具实现未公开和不熟悉的功能。

基于强化学习的 Android 应用的好奇驱动测试

2.1 方法概述

Q 测试的工作流程如图 2 所示。与 MDP 的过程类似,Q 测试在测试过程中与外部环境,被测应用程序(AUT)交互。在每个周期中,Q 测试首先使用 UIAutomator 观察应用程序的当前状态。 然后将状态 St 与先前观察到的状态的一部分进行比较。状态存储在缓冲区中,其作用类似于 Q 测试的内存。 经过训练的神经网络可以提取状态特征并进行比较。 如果状态 St 与内存中的任何状态相似,则比较器将给予少量奖励。否则,模块将给予较大奖励,并且状态 St 将添加到内存缓冲区。奖励用于更新状态动作对的值

基于强化学习的 Android 应用的好奇驱动测试

所有状态动作对的值都存储在 Q 表中,并更新它们的值。每次达到新状态时,Q 测试都会将相关的状态动作对添加到 Q 表中,并使用鼓励执行新事件的巨大价值。在更新 Q 值后,Q 测试将从 St 的 GUI 层次结构推断可执行事件,并参考 Q 表选择一个事件。在大多数情况下,将选择具有最高值的事件。执行完后,AUT 将响应并开始另一个周期。

2.2 MDP 形式化安卓测试

在我们的方法中,Android GUI 测试问题在数学上被形式化为 MDP,该 MDP 可以用 4 个元组定义。我们如何为 Android GUI 测试任务定义 S,A,P 和 R,将影响测试的有效性和效率。

2.3 探索策略

在强化学习任务中研究了好奇心,鼓励智能体探索外部环境,以解决奖励稀疏的问题。Q 测试提出的好奇心驱动策略可以指导测试工具探索不熟悉的状态,从而覆盖代码并高效地发现错误。

3.场景划分模块

我们提出了一个粗粒度的新状态比较标准,并确定了好奇心驱动的探索策略中的回报。 该模块能够确定两个状态是否在同一功能方案中。比较模块确定的奖励将指导 Q 测试首先涵盖不同的功能场景。 粗粒度状态划分有助于防止 Q 测试从一开始就陷入几种相同的情况,从而合理地分配有限的测试时间。由于不同的场景通常绑定到不同的代码,因此这也将在短时间内导致较高的代码覆盖率。更具体地说,在第一次达到功能场景时,可能会覆盖大量代码(例如,用于初始化布局和交互事件的代码),这由 Android 框架的 GUI 驱动功能决定。

4.评估

我们主要评估两个部分:(1)场景划分模块的能力;(2)整个测试工具能够自动覆盖代码并触发错误的能力。我们的目标是在评估中回答以下研究问题:

RQ1:方案部。Q 测试能够有效地确定不同的功能方案吗?

RQ2:代码覆盖率。在代码覆盖率方面,Q 测试如何与最新测试工具和实践测试工具进行比较?

RQ3:故障启示。在故障揭示方面,Q 测试如何与最新的和实践的测试工具进行比较?

5.总结

在本文中,我们提出了 Q-testing,一种基于 Q 学习的 Android 自动化测试方法。Q 测试利用 Q 表作为轻量级模型,同时通过好奇心驱动的策略探索不熟悉的功能。为了有效地确定 Q 学习的奖励并进一步指导探索,提出了使用神经网络区分功能情景的情景划分模块。 实验表明,在代码覆盖和故障检测方面,Q-testing 优于最新和实践中的 Android GUI 测试工具。

文章评论3条评论)

登录后参与讨论

curton 2021-2-8 12:11

学习了

yzw92 2021-1-31 09:32

谢谢分享

火引冰薪 2021-1-30 14:07

强化学习真的很难呀,公式推导就很复杂。
相关推荐阅读
红旗不倒 2020-08-04 14:33
电脑主板IC、贴片元器件大面积腐锈,老王DIY组装后让人哭笑不得
老王看起来近五十岁,交谈中可以得知他对电脑还是挺有“研究”的,特别是当我拆下机箱内的配件时,他能告诉我告诉我这个内存,这个是CPU还有那个是硬盘,其实它说着这些配件名称时,作为一个电脑专业维修的我来说...
红旗不倒 2020-07-23 10:49
廉价智能手环心率监测功能造假,电商平台便宜货不可贪
随着科技的发展与进步,相信许多朋友都已经拥有了属于自己的可穿戴设备,不论是VR眼镜还是智能手表或智能手环,都为我们打造了一个更加完美简单高效便捷的科技生活体验。而我们今天要讲的主角,正是智能手环,准确...
红旗不倒 2020-07-17 17:00
苹果赔偿三星9.5亿美元的原因:购买了OLED面板屏幕?
很客观地讲,今年年初这场黑天鹅事件的影响对苹果公司是非常非常大的。随着时间的推移,蝴蝶效应也渐渐在苹果的身上显现了出来,刚开始,苹果公司关闭线下门店,这也使得苹果的全球出货量或多或少的遭受到了影响。而...
红旗不倒 2020-07-16 15:07
三星6G网路技术白皮书的发布,比5g频谱使用效率速度的2倍
预期将加入更多无线网路连接模式、人工智慧等技术三星公布旗下对于第六代行动网路技术 (6G)白皮书,藉由本身从前端连网装置到后端网通设备均有涉足发展经验,分享5G网路之后的下一代行动网路发展看法,同时更...
红旗不倒 2020-07-07 14:27
LAMP:通过导数计算的基于图的机器学习算法的数据来源
1 摘要数据来源跟踪确定与给定输出相关的一组输入。它使数据工程中的质量控制和问题诊断成为可能。大多数现有技术通过跟踪程序依赖性来工作。他们无法从数量上评估相关输入的重要性,这对于机器学习算法至关重要,...
广告
我要评论
3
13
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /3 下一条