当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于回溯的安卓应用图形界面测试脚本修复方法技术

技术编号:39395367 阅读:8 留言:0更新日期:2023-11-19 15:50
本发明专利技术公开了一种基于回溯的安卓应用图形界面测试脚本修复方法,该方法步骤包括:S1动态执行用户提供的测试脚本并收集和存储测试脚本动态运行结果;S2尝试动态地逐步复现修复步骤S1的测试脚本动态运行结果;S3在步骤S2修复过程失败时动态探索与回溯;S4修复完成后反向生成对应测试框架的可执行测试脚本。本方法使用基于组件属性的界面组件映射技术,实现将失效脚本修复至可在新版本上正常运行的功能,提升测试人员定位和修复缺陷的效率,降低测试脚本的维护成本。测试脚本的维护成本。

【技术实现步骤摘要】
一种基于回溯的安卓应用图形界面测试脚本修复方法


[0001]本专利技术涉及软件工程
,特别涉及一种基于回溯的安卓应用图形界面测试脚本修复方法。

技术介绍

[0002]在当今时代,移动应用飞速发展,其规模和复杂程度都在不断增长。区别于传统的命令行应用,移动应用的一大特点在于其事件驱动的模式,即用户在使用移动应用时与界面交互,不同的交互动作(如点击、长按、滑动
……
)会触发不同的事件,移动应用在捕获到事件后会执行相应的处理动作、改变应用的状态、从而改变所展示的界面,用户会再次在新的界面上触发事件进行交互,这样的循环构成了移动应用的基本运行场景。
[0003]在软件工程的开发周期中,测试是一个重要的流程。测试的质量直接关系着最终交付的软件成品的质量。由于移动应用使用事件驱动的模式触发状态变更,因此使用基于图形界面和UI操作的测试脚本来保障移动应用的功能正确性成为开发过程中的主流选择。
[0004]在软件测试的流程中,回归测试是一个重要的组成部分。回归测试通常用于保证在软件版本迭代的过程中,新引入的代码不会破坏旧版本原有的功能。移动应用作为图形界面程序的特点决定了其界面的变更通常不与底层代码的变更产生强关联,因此基于图形界面的测试脚本在回归测试的过程中有很大的可能因为界面的变更而失效。此时的失效并不能正确地反映出移动应用本身的逻辑缺陷,因此提高了测试人员定位缺陷和修复缺陷的成本。

技术实现思路

[0005]针对安卓应用回归测试中因为界面变更而失效的测试脚本的问题,本专利技术提出了一种基于回溯的安卓应用图形界面测试脚本修复方法,使用基于组件属性的界面组件映射技术,以及基于探索和回溯的技术,实现将失效脚本修复至可在新版本上正常运行的功能,本专利技术通过以下技术方案来实现。
[0006]一种基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,该方法包括以下步骤:
[0007]S1:动态执行用户提供的测试脚本并收集和存储测试脚本动态运行结果;
[0008]S2:基于所述步骤S1收集得到的测试脚本动态运行结果,在新版本的应用上尝试动态地逐步复现修复所述测试脚本动态运行结果;
[0009]S3:在所述步骤S2的修复过程中,如果在当前界面上寻找映射失败,将开始动态探索,尝试在新的界面上寻找组件映射,每次探索后会基于先前保存的复现结果进行回溯,以从相同界面开始下一次探索,当复现成功时保存探索和复现的步骤;
[0010]S4:修复完成后,基于所述步骤S3保存的复现步骤,反向生成对应测试框架的可执行测试脚本。
[0011]上述的基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,所述步骤
S1中收集和存储测试脚本动态运行结果具体包括以下步骤:
[0012]S11:定义一种对测试脚本动态运行结果进行建模的规范,将测试脚本建模为一个UI操作与断言操作组成的有序列表,动态运行结果为UI操作与断言操作组成的有序列表以及每步操作执行前与执行后的界面信息,界面信息由当前界面的屏幕截图和组件布局树组成;
[0013]S12:输入旧版本应用和能在旧版本应用上正确执行的测试脚本;
[0014]S13:在旧版本应用上执行测试脚本,通过对脚本所使用的测试框架进行插桩的方式收集所述步骤S11定义的动态运行结果。
[0015]上述的基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,所述步骤S2中测试脚本的复现修复具体包括以下步骤:
[0016]S21:使用一种基于组件在布局树中所处层级以及组件属性的筛选方法,根据界面信息,筛选出当前界面的候选组件集合;
[0017]S22:使用一种基于组件属性的映射方法,在两个界面的候选组件集合间建立组件的一对一映射;
[0018]S23:输入所述步骤S1收集获得的测试脚本动态运行结果,输入新版本应用,动态执行新版本应用,基于所述步骤S22的映射方法,获取录制界面和当前界面的组件映射关系,复现测试脚本动态运行结果;
[0019]S24:如果复现成功,则将复现的步骤保存至一个有序列表中。
[0020]上述的基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,所述步骤S3中修复过程的动态探索与回溯具体包括以下步骤:
[0021]S31:在所述步骤2的复现中如果复现失败,基于组件在布局树中所处层级与组件的属性,在当前界面中获取可交互组件的集合;
[0022]S32:基于所述步骤S31组件的属性,对可交互组件按照优先级排序,按照优先级从高到低依次尝试点击可交互组件;
[0023]S33:在所述步骤S32点击可交互组件后跳转至新界面,再次尝试所述步骤S2测试脚本的复现,如果复现成功,则将探索的步骤和复现的步骤保存至有序列表中;
[0024]S34:如果复现失败,则根据步骤S2中保存的复现结果,将应用恢复为探索开始之前的状态,然后尝试点击下一个可交互控件。
[0025]上述的基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,所述步骤S4中可执行测试脚本的生成主要具体包括以下步骤:
[0026]S41:在所述步骤S2复现完成之后,获取修复过程中保存的复现步骤有序列表,所述复现步骤有序列表是一个UI操作和断言操作组成的有序列表;
[0027]S42:根据获取的修复结果和用户提供的输出测试框架,将UI操作与断言操作转换为对应框架的UI操作与断言操作;
[0028]S43:添加部分框架相关的导入代码和初始化代码,生成可执行的测试脚本文件。
[0029]本专利技术采用以上技术方案,具有以下有益效果:
[0030]本方法基于安卓应用中回归测试时使用的新旧版本应用,以及旧版本对应的测试脚本,使用基于组件属性的界面组件映射技术与探索和回溯技术,实现修复因为界面变更而失效的测试脚本,提升测试人员定位和修复缺陷的效率,降低安卓应用图形界面测试脚
本的维护成本。
具体实施方式
[0031]下面用具体实施例对本专利技术做进一步详细的说明。
[0032]本专利技术方法使用基于组件属性的界面组件映射技术以及基于探索和回溯的技术,针对安卓应用回归测试中因为界面变更而失效的测试脚本,实现将失效脚本修复至可在新版本上正常运行的功能,提升测试人员定位和修复缺陷的效率,降低测试脚本的维护成本。本专利技术的一种基于回溯的安卓应用图形界面测试脚本修复方法具体包括以下步骤:
[0033]S1:本方法定义了如何对测试脚本在安卓应用上动态执行的结果进行描述和建模,用户提供用于回归测试的旧版本安卓应用以及回归测试中使用到的测试脚本,本方法提出了测试脚本录制方法,基于在旧版本应用上测试脚本的动态运行,通过对测试框架进行插桩的方法收集并保存脚本动态执行信息。
[0034]S2:基于所述步骤S1得到的脚本动态执行信息和用于回归测试的新版本安卓应用,本方法尝试在新版本应用上逐步复现动态执行信息中记录的操作;在复现过程中,对于与组件关联本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,该方法包括以下步骤:S1:动态执行用户提供的测试脚本并收集和存储测试脚本动态运行结果;S2:基于所述步骤S1收集得到的测试脚本动态运行结果,在新版本的应用上尝试动态地逐步复现修复所述测试脚本动态运行结果;S3:在所述步骤S2的修复过程中,如果在当前界面上寻找映射失败,将开始动态探索,尝试在新的界面上寻找组件映射,每次探索后会基于先前保存的复现结果进行回溯,以从相同界面开始下一次探索,当复现成功时保存探索和复现的步骤;S4:修复完成后,基于所述步骤S3保存的复现步骤,反向生成对应测试框架的可执行测试脚本。2.根据权利要求1所述的基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,所述步骤S1中收集和存储测试脚本动态运行结果具体包括以下步骤:S11:定义一种对测试脚本动态运行结果进行建模的规范,将测试脚本建模为一个UI操作与断言操作组成的有序列表,动态运行结果为UI操作与断言操作组成的有序列表以及每步操作执行前与执行后的界面信息,界面信息由当前界面的屏幕截图和组件布局树组成;S12:输入旧版本应用和能在旧版本应用上正确执行的测试脚本;S13:在旧版本应用上执行测试脚本,通过对脚本所使用的测试框架进行插桩的方式收集所述步骤S11定义的动态运行结果。3.根据权利要求1所述的基于回溯的安卓应用图形界面测试脚本修复方法,其特征在于,所述步骤S2中测试脚本的复现修复具体包括以下步骤:S21:使用一种基于组件在布局树中所处层级以及组件属性的筛选方法,根据界面信息,筛选出当前界面的候选组件集合;S22:使用一种基于组件属性的映射...

【专利技术属性】
技术研发人员:张天潘敏学钱正轩
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1