掌桥专利:专业的专利平台
掌桥专利
首页

一种响应式的安卓应用跨设备录制重放方法

文献发布时间:2023-06-19 19:33:46


一种响应式的安卓应用跨设备录制重放方法

技术领域

本发明涉及设备测试技术领域,特别涉及一种响应式的安卓应用跨设备录制重放方法。

背景技术

录制重放技术是软件测试的基础技术手段。在安卓应用测试技术领域,录制重放技术指,收集应用运行日志并利用日志恢复、重现应用过去的某次执行。录制重放技术是安卓测试技术领域的基础技术,被广泛用于错误重现、回归测试、测试用例约减等上层测试技术。

跨设备录制重放是一种跨环境自适应能力,后者是现代软件发展的趋势,并逐渐被更多软件所采用。在安卓应用测试领域,跨设备录制重放致力于在录制设备录制一次测试用例,使之可在任意重放设备自动重放。跨设备录制重放是困难的,这是因为(1)安卓设备呈现出爆发式增长的趋势,并驱生出各种各样的设备,且(2)安卓应用的响应式跨环境自适应能力使其在不同设备呈现出不同的用户界面。现有的跨设备录制重放技术,由于并未考虑到这些情况,导致无法在用户界面呈现出响应式变化时仍成功重放测试用例。

本发明公开的一种响应式的安卓应用跨设备录制重放方法,是一种全自动地进行测试用例重放的方法,其致力于,当安卓应用的用户界面在不同设备呈现发生响应式变化时,能提供自动的重放能力,其关键就在于弥补现有背景技术的确实,方便开发者和测试人员,并间接提升安卓应用的质量和稳定性。

发明内容

本发明针对现有技术中的不足,提供一种响应式的安卓应用跨设备录制重放方法;以解决在跨设备录制重放技术中,由于安卓设备尺寸的不同(例如手机与平板),进而呈现出不同的用户界面,导致无法在用户界面呈现出响应式变化时仍成功重放测试用例的技术问题。

为实现上述目的,本发明采用以下技术方案:

一种响应式的安卓应用跨设备录制重放方法,包括重放序列和恢复序列,所述重放序列用于重放在录制设备中记载的事件,所述恢复序列用于记录安卓操作系统中响应式模式逆动作,以在执行时抵消响应式模式动作带来的副作用;本方法针对每个在录制设备中记载的事件,尝试为其在重放设备中搜索一条等价的重放序列,该搜索过程具体包括以下步骤:

S1:分别初始化重放序列、恢复序列为空序列;

S2:对录制设备所在的用户界面和重放设备当前所在的用户界面分别进行界面分割,得到对应的两个子界面集合:录制集合,重放集合;

S3:对录制集合和重放集合进行子界面匹配,使得针对录制集合中的每个子界面,都有重放集合中的一个子界面与之匹配;其中,令录制集合中的子界面称为录制子界面,令重放集合中的子界面称为重放子界面;

S4:针对录制集合中存在的事件,在步骤S3中,若事件所在的录制子界面有对应的重放子界面相互匹配,则将该事件扩充到重放序列尾部,并在重放设备上执行对应匹配的重放子界面中事件,之后,跳转到步骤S6;若事件所在的录制子界面没有对应的重放子界面相互匹配,则跳转到步骤S5;

S5:计算重放子界面的响应式模式,若计算成功,则执行响应式模式动作,并将该响应式模式动作扩充到重放序列尾部、响应式模式逆动作扩充到恢复序列头部,之后,跳转到步骤S2,并按后续步骤依次执行;若计算不成功,自头部按序执行恢复序列,之后,跳转到步骤S6;

S6:停止搜索,返回重放序列。

为优化上述技术方案,采取的具体措施还包括:

进一步地,所述录制设备和所述重放设备均是基于安卓操作系统的终端;在录制重放技术中,录制设备用于录制测试用例,重放设备用于重放测试用例。

进一步地,所述测试用例是由事件构成的有序数组的事件序列,所述事件是用户对设备的操作,执行事件会导致用户界面发生变化。

进一步地,在步骤S2中,设定界面分割的规则,包括以下子步骤:

1)针对录制设备或重放设备当前所在的用户界面,初始化其子界面集合为空集,并将该界面视为待分割界面;

2)将待分割界面视为一个子界面,称为当前子界面;

3)寻找当前子界面内的所有横向或纵向的分割线形成分割线集合,所述分割线需满足以下条件:分割线不可穿过当前子界面内的任何界面元素,且分割线每侧需要有至少一个界面元素;

4)在分割线集合中寻找一条适宜的分割线,若该分割线不存在,则将当前子界面作为子界面集合,之后,跳转到步骤5);否则,将分割后的两个子界面均视为待分割界面,分别递归执行步骤2)中,按序执行步骤;

5)停止分割当前子界面,等待所有子界面分割结束;

6)返回并得到子界面集合。

进一步地,所述适宜分割线的满足条件为:该分割线使得分割后得到的两个子界面与之前被分割页面相比更规整自洽。

进一步地,所述设定界面分割的规则可替换为人工自定义分割方式。

进一步地,在步骤S3中,由于录制集合中的每个子界面,都有重放集合中的一个子界面与之匹配,因此录制集合中的多个子界面有概率对应重放集合中的同一个子界面。

进一步地,一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一项所述方法的步骤。

进一步地,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述方法的步骤。

本发明的有益效果是:

1、考虑到目前并没有相关背景技术能够在安卓应用的用户界面发生跨设备响应式变更时完成测试用例的自动重放,本发明提供的响应式的安卓应用跨设备录制重放方法弥补了现有背景技术的缺失。利用本发明提供的方法,测试用例仅需在录制设备录制一次,即可实现在其他设备的自动重放。这将极大地方便开发和测试人员的工作,减轻甚至取缔其需多次录制的人力劳动,减小回归测试的人力成本,间接提高应用的质量和稳定性。考虑到录制重放技术是安卓应用测试领域的基础技术,本发明将广泛受益多种上层技术。

2、本申请方法解决了在跨设备录制重放技术中,由于安卓设备尺寸的不同(例如手机与平板),进而呈现出不同的用户界面,导致无法在用户界面呈现出响应式变化时仍成功重放测试用例的技术问题。

附图说明

图1是本发明整体技术方案的流程示意图。

图2是本发明关于技术方案的实施例示意图。

图3是本发明关于技术方案实施例中界面划分示意图。

具体实施方式

现在结合附图对本发明作进一步详细的说明。

本申请整体技术方案如下:

一种响应式的安卓应用跨设备录制重放方法,当安卓应用的用户界面在不同设备呈现发生响应式变化时,所述方法能提供自动的测试用例重放能力。所述方法利用响应式模式提出了一个简单高效、基于贪心的单趟算法,其基本思想是对已录制测试用例的每一个事件,按序在重放设备上搜索一个等价的事件序列,从而完成跨设备的测试用例重放。针对每个录制测试用例中的事件(以下称录制事件),搜索其等价事件序列(称为重放序列)的过程包含以下步骤:

步骤一,分别初始化重放序列、恢复序列为空序列。

步骤二,对录制事件所在的用户界面和重放设备当前的用户界面进行界面分割,得到两个子界面集合:录制集合,重放集合。

步骤三,对录制集合和重放集合进行子界面匹配,从而达到以下目的:针对录制结合中的每个子界面,都有重放集合中的一个子界面与之匹配。

步骤四,令录制事件所在的子界面为录制子界面,通过子界面匹配结果得到与录制子界面匹配的重放子界面。若录制事件存在于重放子界面中,则将录制事件扩充到重放序列尾部,执行录制事件,之后,跳转到步骤六。否则,直接跳转到步骤五。

步骤五,计算重放子界面的响应式模式。若计算成功,则执行其动作,并将其动作扩充到重放序列尾部、逆动作扩充到恢复序列头部,之后,跳转到步骤二。否则,自头部按序执行恢复序列中的每一个事件,之后,跳转到步骤六。

步骤六,停止搜索,返回重放序列。

进一步,所述设备指运行安卓(Android)操作系统的手机或平板电脑。在录制重放技术中,用于录制测试用例的设备称为录制设备,用于重放测试用例的设备称为重放设备。

进一步,所述跨设备录制重放指,在某台录制设备录制测试用例,但在不同于录制设备的重放设备进行测试用例重放。

进一步,所述用户界面指设备屏幕呈现给普通用户的界面。

进一步,所述测试用例是由事件构成的事件序列,所述事件是用户对设备的操作,所述事件序列是有序数组,其每个元素为一个事件。执行事件或事件序列会导致用户界面发生变化。事件序列可为空序列,即,不包含任何事件。事件与用户界面遵循隶属关系:用户界面由一系列可执行的事件构成;任一事件一定存在于某一用户界面。

进一步,所述响应式模式(Responsive Pattern)是由安卓官方倡导的、安卓应用在跨设备时所需遵循的界面设计原则。每个响应式模式均有其独特的特征以及与之对应的动作和逆动作。动作和逆动作都是单个事件。响应式模式由安卓官方定义,不落于本申请所要求所限定的范围。

进一步,所述步骤一中,重放序列和恢复序列都是事件序列。

进一步,所述步骤二中,界面分割指对用户界面内的所有事件进行划分。界面分割将产生多个子界面,构成子界面集合,该集合内任意两个子界面的交集为空集,所有子界面的并集为被分割的用户界面。

进一步,所述步骤三中,子界面匹配指对两个子界面集合(录制集合、重放集合)进行集合间二分匹配。子界面匹配将达到如下效果:针对录制结合中的每个子界面,都有重放集合中的一个子界面与之匹配。因此,录制集合中的多个子界面可能对应重放集合中的同一个子界面。

进一步,所述步骤四中,事件序列可在头部或尾部被扩充。扩充事件序列将在事件序列的头部或尾部添加一个事件。

进一步,所述步骤五中,响应式模式可利用其特征进行归纳,归纳后的规则可用于根据用户界面所体现的特点反向计算其使用的响应式模式。

下面以一个具体的实施例进行说明:

一种响应式的安卓应用跨设备录制重放方法,其设备、用户界面、测试用例、事件和事件序列如下:

设备:本发明将设备定义为运行安卓(Android)操作系统的手机或平板电脑。在录制重放技术中,用于录制测试用例的设备称为录制设备,用于重放测试用例的设备称为重放设备。

用户界面:本发明将用户界面定义为设备的屏幕所呈现给普通用户的界面。

测试用例:本发明将测试用例定义为由事件构成的事件序列。

事件:本发明将事件定义为用户对设备的一次操作。执行事件导致用户界面发生变化。

事件序列:本发明将事件序列定义为元素为事件的有序数组。执行事件序列会导致用户界面发生变化。事件序列可为空序列,即,不包含任何事件。

事件与用户界面遵循隶属关系:用户界面由一系列可执行的事件构成;任一事件一定存在于某一用户界面。

本发明的基本思想是对已录制测试用例的每一个事件,按序在重放设备上搜索一个等价的事件序列,从而完成跨设备的测试用例重放。针对每个录制测试用例中的事件(以下称录制事件),本发明搜索其等价事件序列(称为重放序列)的过程主要包含六个步骤。图1提供了该六步骤的流程,图2和图3为本发明的一个简单样例——如何在Pixel 3XL设备上搜索“点击界面元素‘π’”的等价事件序列。本发明将借助图2和图3说明以下六步骤的执行过程和执行结果:

步骤一,分别初始化重放序列、恢复序列为空序列。

步骤二,对录制事件(点击界面元素“π”)所在的用户界面(图2左一)和重放设备当前的用户界面(图2左二)进行界面分割,得到两个子界面集合:录制集合,重放集合。在图2所述样例中,录制集合包括4个子界面,分别是“2π”和“6.283185307”等界面元素所在的子界面(称为R1)、“INV”和“DEG”等界面元素所在子界面(称为R2)、“0”和“.”等界面元素所在的子界面(称为R3)、“+”和“-”等界面元素所在的子界面(称为R4);重放集合包括4个子界面,分别是“2”等界面元素所在的子界面(称为P1)、“0”和“.”等界面元素所在的子界面(称为P2)、“+”和“-”等界面元素所在的子界面(称为P3)、其他子界面(称为P4)。图3展示了这些子界面。

步骤三,对录制集合和重放集合进行子界面匹配,从而达到以下目的:针对录制集合中的每个子界面,都有重放集合中的一个子界面与之匹配。在图2所述样例中,该匹配结果是:R1~P1,R2~P4,R3~P2,R4~P3。

步骤四,令录制事件所在的子界面为录制子界面(R2),通过子界面匹配结果得到与录制子界面匹配的重放子界面(P4)。若录制事件存在于重放子界面中,则将录制事件扩充到重放序列尾部,执行录制事件,之后,跳转到步骤六。否则,直接跳转到步骤五。在图2所述例子中,界面元素“π”并不存在于重放放子界面P4,因为P4只包含一个带底色的界面元素。

步骤五,计算重放子界面的响应式模式。若计算成功,则执行其动作,并将其动作扩充到重放序列尾部、逆动作扩充到恢复序列头部,之后,跳转到步骤二。否则,自头部按序执行恢复序列中的每一个事件,之后,跳转到步骤六。在图2所述样例中,该响应式模式所对应的动作为“点击底色的界面元素P4区域”,执行该动作后,用户界面将跳转至图2右一,并暴露界面元素“π”(相当于日常生活中右滑P4区域的隐藏框)。

步骤六,停止搜索,返回重放序列。以图2所述样例为例,重放序列为:点击底色的界面元素P4区域、点击界面元素‘π’”。

所述步骤一中,重放序列、恢复序列需满足本发明前文对事件序列的定义。在本步骤中,重放序列、恢复序列被初始化为空序列,即,不包含任何事件的事件序列。由于在搜索过程中所计算得到的响应式动作可能会对用户界面产生副作用,因此恢复序列用于记录所计算得到的响应式模式的逆动作,并在必要时(步骤五)执行恢复序列以抵消响应式模式动作带来的副作用。

所述步骤二中,录制事件需满足本发明前文对事件的定义,界面、子界面需满足本发明前文对用户界面的定义,重放设备需满足本发明前文对重放设备的定义。在本步骤中,录制事件所在的用户界面和当前重放设备呈现的用户界面将被执行界面分割,分别得到录制集合和重放集合。该界面分割分为以下子步骤:

1)初始化子界面集合为空集,将当前界面视为待分割界面。

2)将待分割界面视为一个子界面,称为当前子界面。

3)寻找当前子界面内的所有横向或纵向的分割线形成分割线集合。分割线需满足以下条件:分割线不可穿过当前子界面内的任何界面元素且分割线每侧(上/下侧或左/右侧)需要有至少一个界面元素。

4)在分割线集合中寻找一条最优的分割线,若该分割线不存在,则将当前子界面加入子界面集合,之后,跳转到步骤5)。否则,将分割后的两个子界面视为待分割界面,递归执行步骤2)到步骤5)。

5)停止分割当前子界面,等待所有子界面分割结束。

6)返回子界面集合。

所述子步骤4)中,制定分割线的优劣规则应遵循以下指导原则:更优的分割线将使得分割后得到的两个子界面相比被分割页面更自洽。本发明的使用人可在此指导下自由定义分割线的优劣规则,但仍视为本发明的保护范围。

所述步骤三中,子界面匹配采用集合间最大权二分匹配算法(Max WeightedBipartite Matching)。算法中,任意两个子界面间的权重视两个子界面的相似度而定,在定义权重规则时应遵循以下指导原则:两个子界面相似度越高,其权重越大。本发明的使用人可在此指导下自由定义权重计算规则,但仍视为本发明的保护范围。

所述步骤五中,计算响应式模式将重放子界面与所有归纳得到的响应式模式的特征一一匹配,并返回第一个特征与重放子界面匹配的响应式模式。该计算可能失败,即,匹配不到任何响应式模式。这种情况说明当前重放子界面并未使用任何响应式模式,或使用了未曾归纳的响应式模式。计算失败时,当前事件录制事件将被丢弃,并消除已匹配到的响应式模式引入的副作用。

进一步补充说明的是:

图1所示为步骤一、二、三、四、五、六流程内容,主要功能是针对搜索录制测试用例中单个事件(称为录制事件)的等价事件序列(称为重放序列)。该六步骤的输入是录制事件,输出是重放序列。图2为本发明的一个简单样例——如何在Pixel 3XL设备上搜索“点击界面元素‘π’”的等价事件序列。

恢复序列对应步骤一中所述的恢复序列,用于在适当时机消除响应式模式动作引入的副作用;录制集合和重放集合分别对应步骤二中所述的录制集合和重放集合,分别是对录制事件所在的用户界面和当前重放设备所呈现的用户界面进行界面分割后得到的子界面集合。以图2所述样例为例,录制事件为“点击元素‘π’”。

界面分割用于分别对录制事件所在的用户界面和当前重放设备所呈现的用户界面进行界面分割,该分割按照本发明前文所述子步骤1)、2)、3)、4)、5)、6)进行。以图2所述样例中录制界面的分割为例,其分割过程为:执行子1)、2)、3)、4)将界面分为R1和R2+R2+R4;对R1执行子步骤5),进一步执行子步骤2)、3)、4)将R2+R3+R4分割为R2和R3+R4;对R2执行子步骤5),进一步执行子步骤2)、3)、4)将R3+R4分割为R3和R4;对R3和R4分别执行子步骤5);执行子步骤6)得到R1、R2、R3、R4。图3展示了对界面分割结果:录制集合和重放集合各包括4个子界面。该步骤中,本发明的使用人可自由定义分割线的优劣规则,并据此计算得到最适合应用的界面分割结果,但仍视为本发明的保护范围。

子界面匹配对录制集合和重放集合进行子界面匹配,并得到匹配结果。该匹配的目标是,针对录制结合中的每个子界面,都有重放集合中的一个子界面与之匹配。以图2所述样例为例,子界面匹配的结果为R1~P1,R2~P4,R3~P3,R4~P2。匹配过程中,本发明的使用人可自由定义子界面间权重的计算规则,以得到最适合应用的匹配结果,但仍视为本发明的保护范围。

计算重放子界面根据录制事件所在的录制子界面和匹配结果计算得到与录制子界面匹配的重放子界面。之后,将判断录制事件是否存在于重放子界面。若存在,则执行录制事件、在尾部扩充重放序列、停止搜索并返回重放序列。否则,将计算响应式模式。以图2所述样例为例,计算重放子界面的结果:重放子界面为P4。由于界面元素“π”不存在子界面P4中,因此将计算响应式模式。

计算响应式模式将当前重放子界面与所有响应式模式的特征一一匹配并返回第一个与之匹配的响应式模式。若不存在任何可匹配的响应式模式,则计算失败。失败时,恢复序列将被执行以取消副作用,之后,停止搜索并返回重放序列。否则,模式动作将被执行,重放序列被模式动作进行尾部扩充,恢复序列被模式逆动作进行头部扩充,之后,重新开始界面分割。以图2所述样例为例,计算响应式模式后得到的动作为“点击底色的界面元素P4区域”,该动作将被用于扩充重放序列。

需要注意的是,发明中所引用的如“上”、“下”、“左”、“右”、“前”、“后”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。

以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

相关技术
  • 一种脚本录制、软件测试方法和设备
  • 一种跨设备访问数据的方法及第一电子设备
  • 一种跨设备声纹识别方法及系统
  • 一种基于语义匹配和录制重放的安卓应用测试方法及装置
  • 一种web操作事件的录制重放系统、方法以及设备
技术分类

06120115956940