技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种基于历史测试经验序列的安卓软件测试增强方法  >  正文

一种基于历史测试经验序列的安卓软件测试增强方法

  • 国知局
  • 2024-10-09 15:52:23

本发明涉及软件测试工程,尤其涉及一种基于历史测试经验序列的安卓软件测试增强方法。

背景技术:

1、软件测试是软件质量保障的主要手段,传统的软件测试方法有单元测试集成测试等。安卓平台能支持传统的java 虚拟机平台测试方法,如经典 java 的单元测试框架junit。同时,也有一类界面测试框架,例如robotium、espresso、appium 等,通过gui界面操作的方式模仿用户的使用情况,对安卓应用进行测试。然而,目前的安卓gui测试工具的效果仍然十分有限,在长时间的测试过后(往往不到一小时甚至十几分钟),测试工具对待测软件的代码覆盖率就已不再增长,并且远没有达到完全覆盖。这是因为现有的测试工具所实现的测试策略仍不够智能,测试策略往往遵循这类测试方法:识别出当前的页面,将页面抽象为状态,构建不同状态间的关系模型,根据模型尽可能地覆盖所有状态。现有测试工具对页面的抽象方法仍很粗糙,基本基于从安卓框架中抽取的当前页面的组件树,在对页面的语义理解上存在很大的欠缺。由此,当过于简单的策略无法识别出更丰富的状态后,测试进度就陷入了停滞,测试工具只能在已知的状态里循环,很难探索到新的状态。同时,现有测试工具对过往的测试经历的利用还不够充分,容易陷入局部区域的测试循环,或者过度测试某些页面,因此,现有的安卓gui测试工具仍有很大的提升空间。

2、安卓平台经过几年的迭代演化,平台架构的复杂行不断增加,安卓应用的开发代码因而也在不断变化,增加了分析安卓应用代码的难度,使传统的测试方式对于安卓软件质量的保障遇到困难。同时,移动端应用市场的繁荣,使得每天有大批量的安卓应用进入商场,其中不乏个人开发者或者小团队开发的软件。这类开发者无法像大公司那样花费巨大精力对手中的应用进行全面的测试,这种情况下保障其应用的质量也是一个挑战。开发出有效的高效率的自动化测试方法是一个普遍关注的问题。此外,目前的安卓gui测试工具所能实现的测试效果还很有限,对安卓应用的代码覆盖率不够高,对于满足开发者和用户的质量保障需求仍远远不够,因此还需要更加进步更加智能的gui测试工具。

技术实现思路

1、发明目的:本发明的目的是提供了一种基于历史测试经验序列的安卓软件测试增强方法,已解决背景技术中存在的问题。

2、技术方案:本发明所述的一种基于历史测试经验序列的安卓软件测试增强方法,包括以下步骤:

3、(1)获取测试时的经验序列;

4、(2)根据历史经验序列,抽象与构建页面状态,更新状态图;

5、(3)根据历史经验序列与新状态图,更新经验序列分组模型,更新状态图热度,更新封禁名单;

6、(4)进入下一轮测试,根据封禁名单,选择基础工具测试时的事件并重复。

7、进一步的,步骤(1)中,经验序列为以页面为单位的按时间排列的数据包括:经历的页面、造成页面跳转的输入事件以及此时对应的安卓系统执行状态。

8、进一步的,步骤(1)包括以下步骤:

9、(11)确定安卓开发的版本和开发环境;

10、(12)确定目标安卓软件包;

11、(13)启动待测应用和基础测试工具进行测试;

12、(14)收集基础测试工具执行测试时经历的页面与事件序列以及执行状态信息。

13、进一步的,步骤(2)中,历史经验序列是在测试过程中探索到的gui页面序列、造成页面跳转的输入事件及对应的执行信息包括页面的组件树信息、页面切换时所触发的事件来源与类型、页面对应的activty相关信息、应用活动任务栈。

14、进一步的,步骤(2)中,状态图包括由gui页面抽象而成的状态节点、与造成页面状态转移的输入事件构成的边、页面状态的activity名、页面状态对应的任务栈内容、页面状态的访问热度与所有的访问时间。

15、进一步的,步骤(2)包括以下步骤:

16、(21)对步骤(1)中记录的每一批经验序列解析页面结构、获取页面activity名、记录造成页面跳转的输入事件、关联当前应用内活动任务栈状态;

17、(22)在解析页面后,页面抽象为状态,附加activity名,活动任务栈的深度,更新状态图;

18、(23)在更新状态图后,根据跳转事件,更新状态图间的跳转关联。

19、进一步的,步骤(3)包括以下步骤:

20、(31)对步骤(1)中记录的每一批经验序列,以固定长度对经验序列进行切片,切片内的页面状态序列通过任务栈关系判断在逻辑上是否相邻,整批经验序列切分后获得多份序列切片;

21、(32)对序列切片的首个页面进行分组,分组内的序列切片进行种类信息熵、顺序信息熵、页面信息熵的计算,合并得到本分组信息熵;

22、(33)对比同一领头页面分组的序列切片信息熵在本批次经验序列前后的信息增益,根据信息增益大小进行排序;

23、(34)根据本批次经验序列和状态图,计算和更新各状态的访问热度;

24、(35)选择信息增长低同时访问热度高的页面分组,更新至下批次测试的封禁名单中。

25、进一步的,页面的信息增长程度的判断标准为本批次更新的由页面分组内的序列切片分布与该页面历史所有序列切片的分布是否有很大不同包括序列切片种类是否丰富、序列切片的访问顺序是否多样、页面本身的信息含量是否够高;综合计算得到该页面信息增长程度;其中,信息增长程度低的页面,且近期较为频繁访问到的页面时,被确定为低价值页面,在下一轮测试中被暂时封禁。

26、进一步的,步骤(4)包括以下步骤:

27、(41)开启下一轮测试时监控基础测试工具的测试过程;

28、(42)在基础测试工具选择输入事件时,判断是否会进入处于封禁名单中的页面,如果是则驱使基础测试工具重新选择其他输入事件;

29、(43)记录运行过程,重复步骤(2)-步骤(4直至停止测试。

30、进一步的,对于基础测试工具的干预,即为识别基础测试工具决定触发的事件,判断将要跳转的页面是否在于上一轮更新的封禁页面列表中,如果在则驱使基础测试工具去更换选择的事件,否则输入基础测试工具原来选出的事件。

31、有益效果:与现有技术相比,本发明具有如下显著优点:测试过程中先记录并且分析基础测试工具的测试经验序列,并且动态生成最新的基于封禁名单的增强策略,其中记录了测试过程中过多访问的无意义页面,在基础测试工具进入下一轮测试时,干预其测试过程,避免其进入这类低价值页面,以提升测试效果;通过对安卓gui测试工具的增强,可以有效地提升测试时的代码覆盖率,触发新缺陷,从而增强基础安卓gui测试工具,提升测试效率。

技术特征:

1.一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,步骤(1)中,经验序列为以页面为单位的按时间排列的数据包括:经历的页面、造成页面跳转的输入事件以及此时对应的安卓系统执行状态。

3.根据权利要求2所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,步骤(1)包括以下步骤:

4.根据权利要求1所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,步骤(2)中,历史经验序列是在测试过程中探索到的gui页面序列、造成页面跳转的输入事件及对应的执行信息包括页面的组件树信息、页面切换时所触发的事件来源与类型、页面对应的activty相关信息、应用活动任务栈。

5.根据权利要求1所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,步骤(2)中,状态图包括由gui页面抽象而成的状态节点、与造成页面状态转移的输入事件构成的边、页面状态的activity名、页面状态对应的任务栈内容、页面状态的访问热度与所有的访问时间。

6.根据权利要求5所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,步骤(2)包括以下步骤:

7.根据权利要求1所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,步骤(3)包括以下步骤:

8.根据权利要求7所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,页面的信息增长程度的判断标准为本批次更新的由页面分组内的序列切片分布与该页面历史所有序列切片的分布是否有很大不同包括序列切片种类是否丰富、序列切片的访问顺序是否多样、页面本身的信息含量是否够高;综合计算得到该页面信息增长程度;其中,信息增长程度低的页面,且近期较为频繁访问到的页面时,被确定为低价值页面,在下一轮测试中被暂时封禁。

9.根据权利要求1所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,步骤(4)包括以下步骤:

10.根据权利要求9所述的一种基于历史测试经验序列的安卓软件测试增强方法,其特征在于,对于基础测试工具的干预,即为识别基础测试工具决定触发的事件,判断将要跳转的页面是否在于上一轮更新的封禁页面列表中,如果在则驱使基础测试工具去更换选择的事件,否则输入基础测试工具原来选出的事件。

技术总结本发明公开了一种基于历史测试经验序列的安卓软件测试增强方法,包括以下步骤:(1)获取测试时的经验序列;(2)根据历史经验序列,抽象与构建页面状态,更新状态图;(3)根据历史经验序列与新状态图,更新经验序列分组模型,更新状态图热度,更新封禁名单;(4)进入下一轮测试,根据封禁名单,选择基础工具测试时的事件并重复;本发明可以有效地提升测试时的代码覆盖率,触发新缺陷,从而增强基础安卓GUI测试工具,提升测试效率。技术研发人员:潘敏学,张天,黄国钊受保护的技术使用者:南京大学技术研发日:技术公布日:2024/9/26

本文地址:https://www.jishuxx.com/zhuanli/20240929/310549.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。