您的位置 首页 > 德语词汇

humanoid是什么意思,humanoid的意思翻译、用法、同义词、?一种基于深度学习的

很多朋友对于humanoid是什么意思,humanoid的意思翻译、用法、同义词、和一种基于深度学习的不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

自动化的输入生成器必须不断选择要与之交互的UI元素以及与之交互的方式,以便在有限的时间预算内实现较高的覆盖率。当前,大多数黑盒输入生成器都采用伪随机或蛮力搜索的策略,这可能需要很长时间才能找到正确的输入组合,从而将应用程序带入新的重要状态。我们提出了Humanoid,这是一种基于深度学习的自动化黑盒Android应用测试工具。Humanoid的关键技术是一个深度神经网络模型,该模型可以了解人类用户如何与应用程序的GUI交互,从而从人类交互轨迹中选择动作。然后,可以将学习到的模型用于指导测试输入生成,以实现更高的覆盖率。通过在开源应用程序和市场应用程序上进行的实验表明,与最新的测试输入生成器相比,Humanoid能够达到更高的覆盖范围,并且速度更快。Humanoid在https://github.com/yzygitzh/Humanoid是开源的,演示视频可以在https://youtu.be/PDRxDrkyORs上找到。

索引词-软件测试,自动测试输入生成,图形用户界面,深度学习,移动应用程序,Android

humanoid是什么意思,humanoid的意思翻译、用法、同义词、?一种基于深度学习的

近年来,移动应用程序(简称应用程序)已得到广泛应用。这些应用在发布之前需要经过充分的测试。但是,由于发布周期快和人力资源有限,很难在短时间内手动构建测试用例。为此,学术界和工业界都对移动应用程序的自动测试输入生成器进行了广泛的研究。

测试输入生成器的有效性通常通过其测试覆盖率来衡量。因此,自动化测试输入生成器成功的关键是为给定的UI(测试期间的当前UI)选择正确的交互,以使所选的交互可能达到新的重要UI状态,从而在有限的时间预算内获得更高的覆盖率。因为机器很难理解GUI布局和GUI元素中的内容,所以很难确定要单击哪个按钮或应该输入什么按钮。因此,大多数现有的测试生成器均使用随机策略来决定与哪个GUI元素交互以及如何交互。尽管还可以进一步优化随机策略,但是它具有固有的局限性,因此很难选择一个有效的方法来查找可以在短时间内将应用程序驱动到重要状态的交互。

图1人形机器人如何选择测试输入的说明。左侧是AUT当前UI的屏幕截图,右侧列举了UI状态下最可能的交互。人型机器人根据从人机交互跟踪中学习的模型来计算每个动作的概率。概率表示人形机器人将动作选择为测试输入的可能性。

与随机输入生成器相反,人类测试人员可以轻松识别值得与之交互的UI元素,即使对于他们从未见过的新应用程序也是如此。根本原因是人类测试人员本身就是应用程序用户,因此他们已经获得了有关各种移动应用程序的一些经验和知识。因此,人类测试人员知道单击何处以及要输入什么内容,以实现更高的覆盖率,并且花费的时间也更少。

基于此观察结果,我们提出了Humanoid,这是一种自动GUI测试生成器,能够生成人类与移动应用程序的交互方式,然后使用学习到的模型像人类测试者一样指导测试的生成。借助从跟踪人类交互过程中获得的知识,Humanoid可以根据其重要性和意义在GUI页面上对可能的交互进行优先级排序,如图1所示。在这种模型的指导下,相较于随机生成的输入模块,Humanoid能够更快的生成引向重要状态的测试输入。

Humanoid的核心是一个深度神经网络模型,该模型可以预测哪些UI元素更可能被人类用户与之交互以及如何与之交互。模型的输入是当前UI状态以及最近的UI转换,而输出是UI页面上每个可能动作的预测概率,可用于指导测试输入生成过程。

我们实施了Humanoid并使用从大规模的基于人群的UI交互数据集Rico中提取的304,976个人交互来训练交互模型。我们将Humanoid与六个最先进的测试生成器进行了比较。用于测试的应用包括从AndroTest数据集获得的68个开源应用和从GooglePlay获得的200个流行应用。结果表明,Humanoid能够实现开源应用程序的43.1%的行覆盖率和市场应用程序的24.1%的活动覆盖率,明显高于其他测试生成器使用相同版本的最佳结果(38.8%和19.7%)。

Humanoid的核心是一个交互模型,该模型学习有关人类如何与应用程序交互的模式。基于该模型,整个工作流可以分为两个阶段,其中包括一个用于通过人为生成的交互轨迹来训练模型的正式阶段和一个用于指导测试输入生成的在线阶段。

最终用户根据他们在应用程序界面(即GUI)上看到的内容与应用程序进行互动。由于不同的应用程序通常共享相同的UI设计模式,因此很直观的是,人类与GUI的交互方式可以在不同的应用程序上进行概括。我们提出的交互模型的目标是捕获这种可概括的模式。

我们引入了一个概念UI上下文来建模人类与应用程序交互时引用的内容。UI上下文contexti由当前UI状态si和三个最新的UI转换(si-1,ai-1),(si-2,ai-2),(si-3,ai-3)组成。当前的UI状态表示用户在执行操作时看到的内容,而最新的UI转换用于在当前交互会话期间对用户的基本意图进行建模。

每个UI状态都表示为双通道UI骨架图像,其中第一个通道呈现文本UI元素的边界框区域,第二个通道呈现非文本UI元素的边界框区域。每个动作均由其动作类型和目标位置坐标表示。动作类型被编码为七维向量,其中每个维度都映射到七种动作类型之一,如前所述。行动目标位置被编码为热图。热图中的每个像素都是该像素成为动作目标位置的概率。

因此,UI上下文的表示,即我们的交互模型的输入,是一堆图像,包括一个用于当前UI状态的2通道图像和三个最新UI转换的三个3通道图像(每个转换包括一个2UI状态的通道图像和操作的一个1通道图像)。所有图像均按比例缩放为180×320像素。为了便于学习,我们还为当前UI状态添加了一个零填充通道。最后,UI上下文表示为4×180×320×3向量。

给定UI上下文向量,则交互模型的输出为两个条件概率分布:

1)ptype(t|contexti),表示t的概率分布,即下一个动作的类型,其中t∈{touch,longtouch,向上滑动,...}。

2)ploc(x,y|contexti),表示屏幕坐标x,y的概率分布是下一个动作的目标,其中0

可以通过以下方式计算对当前UI状态执行每个操作的概率:

然后,动作概率可以用来指导测试输入的生成。

图2显示了用于学习上面定义的两个条件概率分布的深度神经网络模型。它接受当前UI上下文contexti的表示作为输入,并输出ai的位置和类型分布。该模型使用卷积层来捕获GUI视觉信息,并使用剩余的LSTM模块来捕获交互上下文信息。反卷积层和完全连接的层分别用于生成ai的位置和类型的分布。

我们用于训练交互模型的数据集是从Rico处理的,Rico是一大批来自人群的人类交互数据集。我们提取了12278个交互流,它们属于10477个应用程序,每个交互流平均包含24.8个动作。在训练过程中,人类用户采取行动的概率设置为1,而其他行动的概率设置为0。

B.指导测试生成

人型机器人使用GUI模型来保存过渡的内存。GUI模型表示为UI过渡图(UTG),其节点是UI状态,而边是导致UI状态过渡的动作。

Humanoid生成两种类型的测试输入,包括用于发现应用程序中看不见的行为的探索动作,以及将应用程序驱动到包含未探索动作的已知状态的导航动作。

在每个步骤中,Humanoid都会检查当前状态下是否存在未开发的动作。如果有未探索的动作,Humanoid会选择探索,而如果当前状态已被完全探索,Humanoid会选择导航。导航过程非常简单。在探索过程中,Humanoid获得了交互模型预测的动作的概率,并根据概率进行加权选择。

由于将对人类采取的行动分配更高的概率,因此他们有更高的机会被Humanoid选择为测试输入。因此,Humanoid生成的输入要比随机选择的输入更像人类,这反过来将使应用更快地进入重要的UI状态并导致更高的测试覆盖率。

我们通过使用Humanoid来测试两组不同的Android应用程序,包括从AndroTest获得的68个开源应用程序和从GooglePlay下载的200种流行的商业应用程序,对Humanoid进行了评估。我们测量了Humanoid的测试覆盖率和测试进度,并将结果与六个最先进的测试工具进行了比较,包括Monkey,PUMA,Stoat,DroidMate,Sapienz和DroidBot。

我们用来进行实验的机器是一个工作站,该工作站配备两个IntelXeonE5-2620CPU,64GBRAM和一个NVidiaGeForceGTX1080TiGPU。训练交互模型大约需要66个小时。应用模型时,我们在计算机上运行了4个Android模拟器实例,以并行测试应用程序。

我们使用每种测试工具(具有其默认配置)在Android模拟器上运行固定的时间(每个开源应用程序1小时,每个市场应用程序3小时,因为市场应用程序通常更复杂)。为了适应最新的市场应用程序,大多数工具已在Android6.0上进行了评估。但是,由于Sapienz是封闭源代码,并且仅支持Android4.4,因此已在Android4.4上进行了评估。对于每个应用程序和工具,我们记录了执行每个操作后的最终覆盖率和渐进覆盖率。我们将这一过程重复了三遍,并以平均值作为最终结果。

在测试开源应用程序时,每个测试工具所达到的测试覆盖率几乎都在1小时内收敛。最终线路覆盖率的总体比较如图3所示。Humanoid平均达到了43.1%的线路覆盖率,这是所有测试输入生成器中最高的。基于对测试痕迹的手动检查,Humanoid的高覆盖率主要是由于两个原因:首先,当有大量UI元素可供选择时,Humanoid能够识别关键UI元素并确定其优先级。其次,Humanoid有较高的机会执行有意义的操作序列,从而可以将应用程序带入未经开发的核心功能中。

图3不同工具针对开源软件得到的行覆盖

有趣的是,采用了随机探索策略的Monkey比除Humanoid之外的所有其他基于模型的测试工具具有更高的覆盖率。Monkey的性能比大多数其他测试工具都要好的事实也已被其他研究人员证实。主要原因是Monkey在相同的时间内可以产生比其他工具更多的输入。

我们进一步在市场应用程序上进行了实验,以了解Humanoid是否仍然更有效。由于源代码不适用于这些市场应用程序,因此我们无法计算线路覆盖率,因此我们改用活动覆盖率(已达成活动的百分比)。

测试工具在3小时内达到的最终活动覆盖率如图4所示。与开源应用程序相似,Humanoid与其他工具相比也达到了最高的覆盖率(24.1%)。

图5显示了渐进覆盖率w.r.t.每个测试工具发送的输入事件数。请注意,我们没有将Sapienz包括在渐进覆盖图中,因为它发送事件的速度太快,并且由于它是近源的,因此我们无法降低它的速度。在最初的几个步骤中,由于应用程序才刚刚启动且所有UI状态都是新的,因此所有测试工具的覆盖率迅速提高。Humanoid人在大约50个事件之后开始领先。那是因为那时已经覆盖了易于访问的代码,而其他状态则隐藏在特定的交互作用之后,而其他测试工具几乎无法产生这种交互作用。由于某些应用程序的复杂性,它们在测试结束时并未融合。但是,我们认为,即使经过更长的测试时间,Humanoid也将保持优势。

自从移动应用盛行以来,自动GUI测试生成已成为一个活跃的研究领域。大多数测试生成器采用三种策略:随机,基于模型和针对性。

使用随机策略的典型示例是Monkey,该示例在没有应用程序任何信息的情况下发送动作。DynoDroid根据GUI布局筛选出不可接受的事件。Sapienz使用遗传算法搜索可以实现更高覆盖率的测试序列。

其他几种测试工具可构建并使用该应用程序的GUI模型来生成测试输入。基于GUI模型,测试工具可以生成输入,这些输入可以将应用快速导航至未开发状态。基于模型的策略也可以优化。例如,Stoat可以基于现有探索来迭代地完善测试策略,而DroidMate可以通过从其他应用程序中进行挖掘来推断UI元素的可接受动作。

目标策略旨在解决某些应用程序行为只能通过特定的测试输入才能揭示的问题。这些测试工具通常使用复杂的技术,例如数据流分析和符号执行来发现可能导致目标状态的相互作用。

Humanoid不同于这些方法,因为它利用了GUI视觉信息,这在人类用户或测试人员浏览应用程序时是重要的参考。

本工具演示文章介绍了Humanoid,这是一种适用于Android应用程序的新GUI测试生成器,能够通过深度学习生成类似于人类的测试输入。Humanoid采用DNN模型,以从大量的人为生成的交互轨迹中学习人类用户如何浏览应用程序。实验表明,在学习的模型的指导下,Humanoid比六个最新的测试工具能够实现更高的测试覆盖率和更快的测试范围。

本文由南京大学软件学院16级本科生王旭翻译转述感谢国家重点研发计划(2018YFB1003900)和国家自然科学基金(61832009,61932012)支持!

好了,关于humanoid是什么意思,humanoid的意思翻译、用法、同义词、和一种基于深度学习的的问题到这里结束啦,希望可以解决您的问题哈!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023