一种自动化测试方法及装置与流程

文档序号:15144013发布日期:2018-08-10 20:13阅读:159来源:国知局

本发明涉及计算机技术领域,特别涉及一种自动化测试方法及装置。



背景技术:

现有技术中,对移动设备上的应用程序的测试过程中,主要是采用手工测试的方式进行的,这种方式非常的耗费时间和人力,测试效率低。



技术实现要素:

本发明提供了一种自动化测试方法及装置,解决了上述技术问题。

本发明的提供了一种自动化测试方法,包括:

步骤s1:解析测试器得到解析结果,根据解析结果从已连接到计算机上的设备中定位被测设备;

步骤s2:从所述解析结果中获取所述测试器中的当前测试操作;根据所述当前测试操作得到当前测试操作类型、视图类型和关键信息;

步骤s3:在所述被测设备上生成与所述被测设备上的当前被测应用的当前页面对应的活动组件元素集合文件;将所述活动组件元素集合文件转移到计算机上;

步骤s4:根据所述视图类型和所述关键信息在所述活动组件元素集合文件中获取与所述视图类型和所述关键信息匹配的活动组件元素;根据获取结果和当前测试操作类型对所述被测设备进行测试。

本发明还提供了一种自动化测试装置,包括:包括:第一解析模块、第一定位模块、第一获取模块、第二获取模块、第一生成模块、第一转移模块、第三获取模块和第一测试模块;

所述第一解析模块,用于解析测试器得到解析结果;

所述第一定位模块,用于根据所述第一解析模块得到的解析结果从已连接到计算机上的设备中定位被测设备;所述计算机上安装有所述测试器;

所述第一获取模块,用于从所述第一解析模块得到的解析结果中获取测试器中的当前测试操作;

所述第二获取模块,用于根据所述第一获取模块获取到的当前测试操作得到当前测试操作类型、视图类型和关键信息;

所述第一生成模块,用于在所述被测设备上生成与所述被测设备上的当前被测应用的当前页面对应的活动组件元素集合文件;

所述第一转移模块,用于将所述第一生成模块生成的所述活动组件元素集合文件转移到所述计算机上;

所述第三获取模块,用于根据所述第二获取模块获取到的所述视图类型和所述关键信息在所述活动组件元素集合文件中获取与所述视图类型和所述关键信息匹配的活动组件元素;

所述第一测试模块,用于根据所述第三获取模块获取到的获取结果和所述第二获取模块获取到的当前测试操作类型对所述被测设备进行测试。

本发明的有益效果:提供了一种自动化测试方法及装置,通过解析测试器,根据测试器中的当前测试操作获取当前测试操作类型、视图类型和关键信息,通过对被测设备的应用程序的界面分析获取界面中的与视图类型和关键信息匹配的活动组件元素,根据获取到活动组件元素中的信息和当前测试操作类型完成对被测设备的应用程序界面的测试操作,提高了测试的效率。

附图说明

图1为本发明实施例1提供的一种自动化测试方法的流程图;

图2-1、图2-2和图2-3为本发明实施例2提供的一种在测试移动设备上的挑战应答型的动态令牌应用时的方法流程图;

图3为本发明实施例2提供的当前页面为被测设备上的当前被测应用的选择动态口令类型的页面示意图;

图4为本发明实施例2提供的被测设备上的当前被测应用的等待输入挑战值的当前页面的页面示意图;

图5为本发明实施例2提供的输入挑战值“123456”之后的被测设备上的当前被测应用的等待输入挑战值的当面页面的页面示意图;

图6为本发明实施例2提供的被测设备上的当前被测应用的显示动态口令的当前页面的页面示意图;

图7-1和图7-2为本发明实施例3提供的一种在测试当前被测应用的当前页面为登录页面时的工作方法的流程图;

图8为本发明实施例3提供的当前页面为被测设备上的当前被测应用的等待输入用户名和密钥的登录页面的页面示意图;

图9为本发明实施例3提供的被测设备上的当前被测应用的输入文本内容“张三”之后的登录当前页面的页面示意图;

图10为本发明实施例3提供的被测设备上的当前被测应用的输入文本内容“123456”之后的登录当前页面的页面示意图;

图11为本发明实施例4提供的一种自动化测试装置的结构方框图。

具体实施方法

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本实施例提供一种自动化测试方法,适用于安装有测试器的计算机上,如图1所示,包括:

步骤s1:解析测试器得到解析结果,根据解析结果从已连接到计算机上的设备中定位被测设备;

步骤s2:从解析结果中获取测试器中的当前测试操作;根据当前测试操作得到当前测试操作类型、视图类型和关键信息;

步骤s3:在被测设备上生成与被测设备上的当前被测应用的当前页面对应的活动组件元素集合文件;将活动组件元素集合文件转移到计算机上;

步骤s4:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;根据获取结果和当前测试操作类型对被测设备进行测试。

本实施例中,步骤s4中还可以包括:根据获取结果得到测试报告。

本实施例中,若当前测试操作类型为点击操作,则根据获取结果和当前测试操作类型对被测设备进行测试,可以具体包括:

步骤a1:判断是否获取到与视图类型和关键信息匹配的活动组件元素,如果是,则执行步骤a2;

步骤a2:根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的待点击区域的焦点位置,在焦点位置上点击当前页面上的待点击区域;

相应地,根据获取结果得到测试报告,具体为:若步骤a1判断为否,则组织包括匹配失败信息的测试报告;若步骤a1判断为是,则组织包括匹配成功信息的测试报告。

本实施例中,若当前测试操作类型为输入操作,则:

步骤s2中还包括:根据当前测试操作获取文本内容;

根据获取结果和当前测试操作类型对被测设备进行测试,具体包括:

步骤b1:判断是否获取到与视图类型和关键信息匹配的活动组件元素,如果是,则执行步骤b2;

步骤b2:根据与视图类型和关键信息匹配的活动组件元素中的元素坐标信息得到当前页面上的文本输入区域的焦点位置,在焦点位置点击当前页面上的文本输入区域;将文本内容输入到当前页面上的文本输入区域中;

相应地,根据获取结果得到测试报告,具体为:若步骤b1判断为否,则组织包括匹配失败信息的测试报告;若步骤b1判断为是,则组织包括匹配成功信息的测试报告。

本实施例中,若当前测试操作类型为断言操作,则根据获取结果和当前测试操作类型对被测设备进行测试具体为:判断是否获取到与视图类型和关键信息匹配的活动组件元素;

相应地,根据获取结果得到测试报告,具体为:当判断出获取到与视图类型和关键信息匹配的活动组件元素时,则组织包括匹配成功信息的测试报告;当判断出没有获取到与视图类型和关键信息匹配的活动组件元素时,则组织包括匹配失败信息的测试报告。

本实施例中,步骤s2可以具体包括:

步骤s21:从解析结果中获取测试器中的测试操作,将测试器中的第一测试操作作为当前测试操作;

步骤s22:根据当前测试操作得到当前测试操作类型,根据当前测试操作获取视图类型和关键信息;当前测试操作类型包括:点击操作、输入操作和断言操作中的至少一种;

步骤s4可以具体包括:

步骤s41:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;

步骤s42:判断是否获取到与视图类型和关键信息匹配的活动组件元素,如果是,则执行步骤s43;否则,结束;

步骤s43:若当前测试操作为点击操作,根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的待点击区域的焦点位置,在焦点位置上点击当前页面上的待点击区域;执行步骤s44;

若当前测试操作为输入操作,根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的文本输入区域的焦点位置,在焦点位置点击当前页面上的文本输入区域;将文本内容输入到当前页面上的文本输入区域中;执行步骤s44;

若当前测试操作为断言操作,则执行步骤s44;

步骤s44:判断当前测试操作是否为测试器中的最后一个测试操作,如果是,则结束;否则,将测试器中的当前测试操作的下一个测试操作作为当前测试操作,返回步骤s22。

进一步地,当步骤s42中判断为否后,还包括:保存获取结果,根据已保存的所有获取结果得到测试报告;

步骤s43中若当前测试操作为点击操作,执行步骤s44前,还包括:保存获取结果;

步骤s43中若当前测试操作为输入操作,执行步骤s44前,还包括:保存获取结果;

步骤s43中若当前测试操作为断言操作,执行步骤s44前,还包括:保存获取结果;

步骤s44中判断为是后,还包括:根据已保存的所有获取结果得到测试报告。

本实施例中,点击操作可以包括文本点击操作和按钮点击操作。

本实施例中,在焦点位置上点击当前页面上的待点击区域,具体为:根据焦点位置组织点击命令,将点击命令发送给被测设备点击当前页面上的待点击区域。

进一步地,根据焦点位置组织点击命令,将点击命令发送给被测设备点击当前页面上的待点击区域具体为:根据焦点位置的坐标组织点击命令,将点击命令发送给被测设备的操作系统,被测设备的操作系统接收到点击命令后,根据点击命令中的焦点位置的坐标点击当前页面上的待点击区域。

本实施例中,在焦点位置点击当前页面上的文本输入区域;将文本内容输入到当前页面上的文本输入区域中;可以具体包括:

步骤c1:根据焦点位置组织点击命令,将点击命令发送给被测设备点击当前页面上的文本输入区域;

步骤c2:组织包括文本内容的文本输入命令,将文本输入命令发送给被测设备将文本内容输入到当前页面上的文本输入区域中。

进一步地,步骤c1具体为:根据焦点位置的坐标组织点击命令,将点击命令发送给被测设备的操作系统,被测设备的操作系统接收到点击命令后,根据点击命令中的焦点位置的坐标点击当前页面上的文本输入区域;

步骤c2具体为:组织包括文本内容的文本输入命令,将文本输入命令发送给被测设备的操作系统,被测设备的操作系统接收到文本输入命令后,将文本输入命令中的文本内容本输入到当前页面上的文本输入区域中。

本实施例中,当当前测试操作为输入操作时,步骤s22中还包括:根据当前测试操作获取文本内容。

本实施例中,根据当前测试操作得到当前测试操作类型,具体为:判断测试器中的当前测试代码类型,若当前测试代码为第一函数或第四函数,则当前测试操作类型为点击操作;若当前测试代码为第二函数,则当前测试操作类型为输入操作;若当前测试代码为第三函数,则当前测试操作类型为断言操作。

进一步地,根据当前测试操作得到视图类型和关键信息,具体为:

若当前测试代码为第一函数时,获取第一函数中第一参数和第二参数,将第一参数作为视图类型,将第二参数作为关键信息;

若当前测试代码为第二函数时,获取第二函数中第三参数和第四参数,将第三参数作为视图类型,将第四参数作为关键信息;

若当前测试代码为第三函数时,获取第三函数中第五参数和第六参数,将第五参数作为视图类型,将第六参数作为关键信息;

若当前测试代码为第四函数时,获取第四函数中第七参数和第八参数,将第七参数作为视图类型,将第八参数作为关键信息。

本实施例中,步骤s3具体包括:

步骤s31:根据被测设备的设备标识组织第一生成命令,将第一生成命令发送给被测设备的操作系统;

步骤s32:判断是否接收到来自被测设备的操作系统的生成失败应答,如果是,则判断出没有在被测设备上生成与当前被测应用的当前页面对应的活动组件元素集合文件,报错结束;否则,判断出在被测设备上成功生成与当前被测应用的当前页面对应的活动组件元素集合文件,执行步骤s33;

步骤s33:根据被测设备的设备标识组织第一转移命令,将第一转移命令发送给被测设备的操作系统;

步骤s34:判断是否接收到来自被测设备的操作系统的转移失败应答,如果是,则判断出没有将活动组件元素集合文件成功转移到计算机上,报错结束;否则,判断出将活动组件元素集合文件成功转移到计算机上,执行步骤s4。

本实施例中,关键信息包括关键信息标识和关键信息值;

根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素,具体为:

根据视图类型和关键信息标识和关键信息值在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识,元素属性值为关键信息值的活动组件元素,若查找到,则判断出获取到与视图类型和关键信息匹配的活动组件元素;否则,判断出没有获取到与视图类型和关键信息匹配的活动组件元素。

本实施例提供了一种自动化测试方法:通过解析测试器,根据测试器中的当前测试操作获取当前测试操作类型、视图类型和关键信息,通过对被测设备的被测应用程序的界面分析获取界面中的与视图类型和关键信息匹配的活动组件元素,根据获取到活动组件元素中的信息和当前测试操作类型完成对被测设备的被测应用程序界面的测试操作,提高了测试的效率。

实施例2

本实施例提供的自动化测试方法为在测试移动设备上的挑战应答型的动态令牌应用时的方法,如图2-1、图2-2和图2-3所示,包括:

步骤201:解析测试器得到解析结果,从解析结果中获取计算机的数据配置文件,从计算机的数据配置文件中获取目标设备序列号,并枚举出连接到计算机的所有设备的设备序列号;

本实施例中,测试器安装在计算机上。

步骤202:判断获取到的目标设备序列号是否为空,如果是,则将枚举到的第一个设备的设备序列号对应的设备作为当前被测设备,执行步骤205;否则,执行步骤203;

步骤203:判断枚举到的所有设备的设备序列号中是否存在和目标设备序列号对应的设备序列号,如果是,则执行步骤204;否则,报错;

步骤204:将目标设备序列号对应的设备作为当前被测设备,执行步骤205;

步骤205:从解析结果中获取测试器中的第一测试操作,将第一测试操作作为当前测试操作,根据当前测试操作获取当前测试操作类型为文本点击操作、根据当前测试操作获取视图类型和关键信息;

具体地,从解析结果中获取测试器中的与第一测试操作对应的第一测试代码,将第一测试代码作为当前测试代码,判断当前测试代码类型,若当前测试代码为第一函数,则当前测试操作类型为文本点击操作,获取第一函数中第一参数和第二参数,将第一参数作为视图类型,将第二参数作为关键信息。

例如:从解析结果中获取测试器中的与第一测试操作对应的第一测试代码,将第一测试代码作为当前测试代码,获取到当前测试代码为第一函数“thenpresstext"挑战应答型"{…..view_class="android.widget.textview"…..},则当前测试操作类型为文本点击操作,将第一参数view_class="android.widget.textview"作为视图类型,将第二参数“text"挑战应答型"”作为关键信息。

步骤206:在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件;

本步骤中,当前页面为当前被测应用的选择动态口令类型的页面,可以但不限于如图3所示。

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发送给被测设备的操作系统,判断是否接收到来自被测设备的操作系统的生成失败应答,如果是,则判断没有在被测设备上生成与当前被测应用的当前页面对应的活动组件元素集合文件,报错结束;否则,判断在被测设备上成功生成与当前被测应用的当前页面对应的活动组件元素集合文件,执行步骤207;

步骤207:将当前活动组件元素集合文件转移到计算机上;

具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发送给被测设备的操作系统,将当前活动组件元素集合文件“window_dump1.xml”转移到计算机上。

更加具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发送给被测设备的操作系统,之后,还包括:判断是否接收到来自被测设备的操作系统的转移失败应答,如果是,则判断出没有将活动组件元素集合文件成功转移到计算机上,报错结束;否则,判断出将活动组件元素集合文件成功转移到计算机上,执行步骤208。

本实施例中,当前活动组件元素集合文件“window_dump1.xml”中包含当前页面的多个活动组件元素,每个活动组件元素中包括多个元素属性,元素属性可以具体为:元素索引、元素文本、元素类型和元素坐标等信息;例如:当前活动组件元素集合文件“window_dump1.xml”为:

其中,<nodeindex="0"text="挑战应答型"resource-id=""class="android.widget.textview"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="false"enabled="true"focusable="false"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[105,569][330,630]"/>为一个活动组件元素,node中的class为活动组件元素的元素类型、text为活动组件元素的元素文本、index为活动组件元素的元素索引,bounds为活动组件元素的元素坐标。

步骤208:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;若未获取到,则当前测试失败,报错;若获取到,则执行步骤209;

其中,关键信息中包括关键信息标识和关键信息值。

具体地,根据视图类型和关键信息标识和关键信息值在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识,元素属性值为关键信息值的活动组件元素,若查找到,则判断出在活动组件元素集合文件中查找与视图类型和关键信息匹配的活动组件元素,执行步骤209;否则,判断出在活动组件元素集合文件中没有查找与视图类型和关键信息匹配的活动组件元素,当前测试失败,报错;

例如:根据预设的视图类型“textview”和关键信息标识text和关键信息值“挑战应答型”在活动组件元素集合文件“window_dump1.xml”中查找到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“挑战应答型”的活动组件元素<nodeindex="0"text="挑战应答型"resource-id=""class="android.widget.textview"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="false"enabled="true"focusable="false"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[105,569][330,630]"/>,执行步骤209;

步骤208中根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素之后,还可以包括:保存获取结果;相应地,

若步骤208中若未获取到与视图类型和关键信息匹配的活动组件元素,还包括:根据已保存的所有获取结果得到测试报告。例如,已保存的没有获取到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“挑战应答型”的活动组件元素;组织包括匹配失败信息的测试报告。

步骤209:获取与视图类型和关键信息匹配的活动组件元素的元素坐标信息;

例如:获取与视图类型“textview”和关键信息“挑战应答型”匹配的活动组件元素<nodeindex="0"text="挑战应答型"resource-id=""class="android.widget.textview"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="false"enabled="true"focusable="false"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[105,569][330,630]"/>的元素坐标信息:bounds="[105,569][330,630]。

步骤210:根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息计算第一焦点位置;

具体地,根据第一算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到第一焦点位置。

例如,根据第一算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到元素坐标信息的中心点坐标位置,并将元素坐标信息的中心点坐标位置作为第一焦点位置。

步骤211:在第一焦点位置上点击当前页面上的待点击区域。

具体地,根据第一焦点位置组织第一点击命令,将第一点击命令发送给被测设备点击当前页面上的待点击区域。

更加具体地,根据第一焦点位置的坐标positionxpositiony组织点击命令<adb-sandroiddevsnshellinputtappositionxpositiony>,将第一点击命令发送给被测设备的操作系统,被测设备的操作系统接收到第一点击命令后,根据点击命令中的第一焦点位置点击当前页面上的待点击区域。

例如,当被测设备的当前被测应用检测到当前页面的“挑战应答型”的活动组件元素的点击操作时,当前被测应用跳转到如图4所示的等待输入挑战值的页面,等待输入挑战值;

步骤211之后,还包括:根据解析结果判断当前测试操作是否为测试器中的最后一个测试操作,如果是,则结束;否则,将测试器中的当前测试操作的下一个测试操作作为当前测试操作,执行步骤212。

步骤212:从解析结果中获取测试器中的第二测试操作,将第二测试操作作为当前测试操作,根据当前测试操作获取当前测试操作类型为输入操作,根据当前测试操作获取视图类型、关键信息和当前文本信息;

具体地,从解析结果中获取测试器中的与第二测试操作对应的第二测试代码并请其作为当前测试代码,若当前测试代码为第二函数,则当前测试操作类型为输入操作,获取第二函数中第三参数、第四参数和第九参数,将第三参数作为视图类型,将第四参数作为关键信息,将第九参数作为文本内容。

例如:从解析结果中获取测试器中的与第二测试操作对应的第二测试代码并请其作为当前测试代码,获取到当前测试代码为第二函数“thenenter"123456"intoeditextwithindex0

"{…..view_class="android.widget.edittext"…..

}则当前测试操作类型为输入操作,将第三参数view_class="android.widget.edittext"作为视图类型,将第四参数“index0”作为关键信息,将第九参数"123456"作为文本内容。

步骤213:当前被测应用跳转到等待输入挑战值的当前页面后,在被测设备上生成与当前被测应用显示的当前页面对应的当前活动组件元素集合文件;

本步骤中,等待输入挑战值的当面页面可以但不限于如图4所示。

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发给被测设备的操作系统,在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件。

更加具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发送给被测设备的操作系统,判断是否接收到来自被测设备的操作系统的生成失败应答,如果是,则判断没有在被测设备上生成与当前被测应用的当前页面对应的活动组件元素集合文件,报错结束;否则,判断在被测设备上成功生成与当前被测应用的当前页面对应的活动组件元素集合文件。

步骤214:将当前活动组件元素集合文件转移到计算机上;

具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发送给被测设备的操作系统,将当前活动组件元素集合文件“window_dump2.xml”转移到计算机上。

更加具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发送给被测设备的操作系统,之后,还包括:判断是否接收到来自被测设备的操作系统的转移失败应答,如果是,则判断出没有将活动组件元素集合文件成功转移到计算机上,报错结束;否则,判断出将活动组件元素集合文件成功转移到计算机上。

本实施例中,当前活动组件元素集合文件“window_dump1.xml”中包含当前页面的多个活动组件元素,每个活动组件元素中包括多个元素属性,元素属性可以具体为:元素索引、元素文本、元素类型和元素坐标等信息。例如:当前活动组件元素集合文件“window_dump2.xml”为:

其中,<nodeindex="0"text="输入挑战值"

resource-id="com.ftsafe.otp.activity:id/challenge_code"

class="android.widget.edittext"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="true"scrollable="false"long-clickable="true"password="false"

selected="false"bounds="[60,321][1020,427]"/>为一个活动组件元素,node中的class为活动组件元素的元素类型、text为活动组件元素的元素文本、index为活动组件元素的元素索引,bounds为活动组件元素的元素坐标。

步骤215:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;若未获取到,则当前测试失败,报错;若获取到,则执行步骤216;

其中,关键信息中包括关键信息标识和关键信息值。

具体地,根据预设的视图类型“edittext”和关键信息标识“index”和关键信息值“0”在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识的元素属性值为关键信息值的活动组件元素,若查找到,判断出在活动组件元素集合文件中查找与视图类型和关键信息匹配的活动组件元素,执行步骤208;否则,判断出在活动组件元素集合文件中没有查找与视图类型和关键信息匹配的活动组件元素,当前测试失败,报错;

例如:根据预设的视图类型“edittext”和关键信息标识“index”和关键信息值“0”在活动组件元素集合文件“window_dump2.xml”中查找到元素类型class"=android.widget.edittext"为与视图类型edittext匹配且元素属性为关键信息标识index的元素属性值为“0”的活动组件元素<nodeindex="0"text="输入挑战值"resource-id="com.ftsafe.otp.activity:id/challenge_code"class="android.widget.edittext"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="true"scrollable="false"long-clickable="true"password="false"selected="false"bounds="[60,321][1020,427]"/>,执行步骤216;

步骤215中根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素之后,还可以包括:保存获取结果;相应地,

若步骤215中若未获取到与视图类型和关键信息匹配的活动组件元素,还包括:根据已保存的所有获取结果得到测试报告。

例如,根据步骤208中已保存的没有获取到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“挑战应答型”的活动组件元素;和步骤215中已保存的没有获取到元素类型class"=android.widget.edittext"为与视图类型edittext匹配且元素属性为关键信息标识index的元素属性值为“0”的活动组件元素的信息,组织测试报告。

步骤216:获取与视图类型和关键信息匹配的活动组件元素的元素坐标信息;

例如:获取与视图类型“textview”和关键信息“挑战应答型”匹配的活动组件元素<nodeindex="0"text="输入挑战值"resource-id="com.ftsafe.otp.activity:id/challenge_code"class="android.widget.edittext"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="true"scrollable="false"long-clickable="true"password="false"selected="false"bounds="[60,321][1020,427]"/>的元素坐标信息:bounds="[60,321][1020,427]"。

步骤217:根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息计算第二焦点位置;

具体地,根据第二算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到第二焦点位置。

例如,根据第二算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到元素坐标信息的中心点坐标位置,并将元素坐标信息的中心点坐标位置作为第二焦点位置。

步骤218:判断与视图类型和关键信息匹配的活动组件元素的元素文本值是否为空,如果是,则执行步骤219;否则,清空与视图类型和关键信息匹配的活动组件元素的元素文本值,执行步骤219;

步骤219:根据第二焦点位置将文本内容输入到当前页面的文本输入区域;

步骤219具体包括:

步骤219-1:根据焦点位置组织第二点击命令,将第二点击命令发送给被测设备点击当前页面上的文本输入区域;

具体地,根据第二焦点位置的坐标positionxpositiony组织点击命令<adb-sandroiddevsnshellinputtappositionxpositiony>,将点击命令发送给被测设备的操作系统,被测设备的操作系统接收到第二点击命令后,根据第二点击命令中的第二焦点位置点击当前页面上的待点击区域。

步骤219-2:组织包括文本内容的第一文本输入命令,将第一文本输入命令发送给被测设备将文本内容输入到当前页面上的文本输入区域中。

具体地,组织包括文本内容content的第一文本输入命令<adb-sandroiddevsnshellinputtextcontent>,将第一文本输入命令发送给被测设备的操作系统,被测设备的操作系统接收到第一文本输入命令后,将第一文本输入命令中的文本内容本输入到当前页面上的文本输入区域中。

例如:根据第二焦点位置将文本内容123456输入到当前页面的文本输入区域。

本实施例中,文本内容还可以是生成的。

本实施例中,输入挑战值“123456”之后的等待输入挑战值的当面页面可以但不限于如图5所示。

步骤219之后,还包括:根据解析结果判断当前测试操作是否为测试器中的最后一个测试操作,如果是,则结束;否则,将测试器中的当前测试操作的下一个测试操作作为当前测试操作,执行步骤220。

步骤220:从解析结果中获取测试器中的第三测试操作,将第三测试操作作为当前测试操作,根据当前测试操作获取当前测试操作类型为按钮点击操作,根据当前测试操作获取视图类型和关键信息;

具体地,从解析结果中获取测试器中与第三测试操作对应的第三测试代码并请其作为当前测试代码,若当前测试代码为第四函数,则当前测试操作类型为按钮点击操作,获取第四函数中第七参数和第八参数,将第七参数作为视图类型,将第八参数作为关键信息。

例如:从解析结果中获取测试器中与第三测试操作对应的第三测试代码并请其作为当前测试代码,,获取到当前测试代码为第四函数“thenpressbuttonwithindex1"

{…..view_class="android.widget.button"…..

},则当前测试操作类型为按键点击操作,将第七参数view_class="android.widget.button"作为视图类型,将第八参数“index1”作为关键信息。

步骤221:在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件;

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发给被测设备的操作系统,在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件。

步骤222:将当前活动组件元素集合文件转移到计算机上;

具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发给被测设备的操作系统,将当前活动组件元素集合文件“window_dump3.xml”转移到计算机上。

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发送给被测设备的操作系统,判断是否接收到来自被测设备的操作系统的生成失败应答,如果是,则判断没有在被测设备上生成与当前被测应用的当前页面对应的活动组件元素集合文件,报错结束;否则,判断在被测设备上成功生成与当前被测应用的当前页面对应的活动组件元素集合文件。

本实施例中,当前活动组件元素集合文件“window_dump3.xml”中包含当前页面的多个活动组件元素,每个活动组件元素中包括多个元素属性,元素属性可以具体为:元素索引、元素文本、元素类型和元素坐标等信息;例如:当前活动组件元素集合文件“window_dump3.xml”为:

其中,nodeindex="1"text="确定"resource-id=""class="android.widget.button"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[375,472][705,616]"/>为一个活动组件元素,node中的class为活动组件元素的元素类型、text为活动组件元素的元素文本、index为活动组件元素的元素索引,bounds为活动组件元素的元素坐标范围。

步骤223:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;若未获取到,则当前测试失败,报错;若获取到,则执行步骤224;

其中,关键信息中包括关键信息标识和关键信息值。

具体地,根据预设的视图类型“button”和关键信息标识“index”和关键信息值“1”在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识的元素属性值为关键信息值的活动组件元素,若查找到,判断出在活动组件元素集合文件中查找与视图类型和关键信息匹配的活动组件元素,执行步骤223;否则,判断出在活动组件元素集合文件中没有查找与视图类型和关键信息匹配的活动组件元素,当前测试失败,报错;

例如:根据预设的视图类型“button”和关键信息标识“index”和关键信息值“0”在活动组件元素集合文件“window_dump3.xml”中查找到元素类型class"=android.widget.button"为与视图类型button匹配且元素属性为关键信息标识index的元素属性值为“1”的活动组件元素<nodeindex="1"text="确定"resource-id=""class="android.widget.button"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[375,472][705,616]"/>,执行步骤224;

步骤223中根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素之后,还可以包括:保存获取结果;相应地,

若步骤223中若未获取到与视图类型和关键信息匹配的活动组件元素,还包括:根据已保存的所有获取结果得到测试报告。

例如,根据步骤208中已保存的没有获取到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“挑战应答型”的活动组件元素;和步骤215中已保存的获取到元素类型class"=android.widget.edittext"为与视图类型edittext匹配且元素属性为关键信息标识index的元素属性值为“0”的活动组件元素以及步骤223中已保存的没有获取到元素类型class"=android.widget.button"为与视图类型button匹配且元素属性为关键信息标识index的元素属性值为“1”的活动组件元素的信息,组织测试报告。

步骤224:获取与视图类型和关键信息匹配的活动组件元素的元素坐标信息;

例如:获取与视图类型“textview”和关键信息“挑战应答型”匹配的活动组件元素<nodeindex="0"text="挑战应答型"resource-id=""class="android.widget.textview"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="false"enabled="true"focusable="false"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[105,569][330,630]"/>的元素坐标信息:bounds="[105,569][330,630]。

步骤225:根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息计算第三焦点位置;

具体地,根据第三算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到第三焦点位置。

例如,根据第三算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到元素坐标信息的中心点坐标位置,并将元素坐标信息的中心点坐标位置作为第三焦点位置。

步骤226:根据在第三焦点位置上点击当前页面上的待点击区域。

具体地,根据第三焦点位置组织第三点击命令,将第三点击命令发送给被测设备点击当前页面上的待点击区域。

更加具体地,根据第三焦点位置的坐标positionxpositiony组织点击命令<adb-sandroiddevsnshellinputtappositionxpositiony>,将第三点击命令发送给被测设备的操作系统,被测设备的操作系统接收到第三点击命令后,根据点击命令中的第三焦点位置点击当前页面上的待点击区域。

例如:当被测设备的当前被测应用检测到当前页面的“确定”的活动组件元素的点击操作时,当前被测应用跳转到下一页面;即跳转到显示动态口令的当前页面,本实施例中,显示动态口令的当前页面可以但不限于如图6所示。

步骤226之后,还包括:根据解析结果判断当前测试操作是否为测试器中的最后一个测试操作,如果是,则结束;否则,将测试器中的当前测试操作的下一个测试操作作为当前测试操作,执行步骤227。

步骤227:从解析结果中获取测试器中的第四测试操作,将第四测试操作作为当前测试操作,根据当前测试操作获取当前测试操作类型为断言操作,根据当前测试操作获取视图类型和关键信息;

具体地,从解析结果中获取与第四测试操作对应的第四测试代码并将其作为当前测试代码,若当前测试代码为第三函数,则当前测试操作类型为断言操作,获取第三函数中第五参数和第六参数,将第五参数作为视图类型,将第六参数作为关键信息。

例如:从解析结果中获取与第四测试操作对应的第四测试代码并将其作为当前测试代码,获取到当前测试代码为第四函数“thenassertseetext"103243""{…..view_class="android.widget.textview

…..

}

则当前测试操作类型为断言操作,将第五参数view_class="android.widget.textview"作为视图类型,将第六参数text"103243"作为关键信息。

步骤228:当当前被测应用跳转到显示动态口令的当前页面时,在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件;

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发给被测设备的操作系统,在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件。

更加具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发送给被测设备的操作系统,判断是否接收到来自被测设备的操作系统的生成失败应答,如果是,则判断没有在被测设备上生成与当前被测应用的当前页面对应的活动组件元素集合文件,报错结束;否则,判断在被测设备上成功生成与当前被测应用的当前页面对应的活动组件元素集合文件。

步骤229:将当前活动组件元素集合文件转移到计算机上;

具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发给被测设备的操作系统,将当前活动组件元素集合文件“window_dump4.xml”转移到计算机上。

更加具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发送给被测设备的操作系统,之后,还包括:判断是否接收到来自被测设备的操作系统的转移失败应答,如果是,则判断出没有将活动组件元素集合文件成功转移到计算机上,报错结束;否则,判断出将活动组件元素集合文件成功转移到计算机上。

本实施例中,当前活动组件元素集合文件“window_dump4.xml”中包含当前页面的多个活动组件元素,每个活动组件元素中包括多个元素属性,元素属性可以具体为:元素索引、元素文本、元素类型和元素坐标等信息;例如:当前活动组件元素集合文件“window_dump4.xml”为:

其中,<nodeindex="0"text="请输入以下口令进行认证:"resource-id=""class="android.widget.textview"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="false"enabled="true"focusable="false"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[60,321][672,389]"/>为一个活动组件元素,node中的class为活动组件元素的元素类型、text为活动组件元素的元素文本、index为活动组件元素的元素索引,bounds为活动组件元素的元素坐标。

步骤230:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;若未获取到,则当前测试失败,报错;若获取到,则测试成功,结束。

其中,关键信息中包括关键信息标识和关键信息值。

具体地,根据预设的视图类型“textview”和关键信息标识“text”和关键信息值在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识的元素属性值为关键信息值的活动组件元素,若查找到,判断出在活动组件元素集合文件中查找与视图类型和关键信息匹配的活动组件元素,则测试成功,结束;否则,判断出在活动组件元素集合文件中没有查找与视图类型和关键信息匹配的活动组件元素,当前测试失败,报错。

例如:根据预设的视图类型“textview”和第关键信息标识“text”和关键信息值“103243”在活动组件元素集合文件“window_dump3.xml”中查找到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“103243”的活动组件元素,<nodeindex="1"text="103423"resource-id="com.ftsafe.otp.activity:id/challenge_tkn"class="android.widget.textview"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="false"enabled="true"focusable="false"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[312,419][768,599]"/>,测试成功,结束。

步骤230报错或结束之前,还包括:根据解析结果判断当前测试操作是否为测试器中的最后一个测试操作,如果是最后一个测试操作,则若未查找到与视图类型和关键信息匹配的活动组件元素,则当前测试失败,报错;若查找到与视图类型和关键信息匹配的活动组件元素,则当前测试成功,结束;如果不是最后一个测试操作,将测试器中的当前测试操作的下一个测试操作作为当前测试操作,继续测试。

步骤230中根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素之后,还可以包括:保存获取结果;相应地:

若步骤230中若未获取到与视图类型和关键信息匹配的活动组件元素,还包括:根据已保存的所有获取结果得到测试报告。

若步骤230中若获取到与视图类型和关键信息匹配的活动组件元素,还包括:根据已保存的所有获取结果得到测试报告。

例如,若步骤230中若未获取到与视图类型和关键信息匹配的活动组件元素,则根据已保存的所有获取结果得到测试报告,可以为:根据步骤208中已保存的获取到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“挑战应答型”的活动组件元素;和步骤215中已保存的获取到元素类型class"=android.widget.edittext"为与视图类型edittext匹配且元素属性为关键信息标识index的元素属性值为“0”的活动组件元素以及步骤223中已保存的获取到元素类型class"=android.widget.button"为与视图类型button匹配且元素属性为关键信息标识index的元素属性值为“1”的活动组件元素还有的步骤230中已获取到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“103243”的活动组件元素的信息,组织测试报告。

若步骤230中获取到与视图类型和关键信息匹配的活动组件元素,则根据已保存的所有获取结果得到测试报告,可以为:根据步骤208中已保存的获取到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“挑战应答型”的活动组件元素;和步骤215中已保存的获取到元素类型class"=android.widget.edittext"为与视图类型edittext匹配且元素属性为关键信息标识index的元素属性值为“0”的活动组件元素以及步骤223中已保存的获取到元素类型class"=android.widget.button"为与视图类型button匹配且元素属性为关键信息标识index的元素属性值为“1”的活动组件元素还有的步骤230中没有获取到元素类型class"=android.widget.textview"为与视图类型textview匹配且元素属性为关键信息标识text的元素属性值为“103243”的活动组件元素的信息,组织测试报告。

实施例3

本实施例中提供的自动化测试方法,还可以测试移动设备上的当前被测应用的显示页面的不同进行不同的测试,例如:当前页面为登录页面时,可以执行包括输入用户名和密码的输入操作和点击登录按钮的点击操作;具体操作流程如图7-1和图7-2所所示的操作。

步骤301:解析测试器得到解析结果,从解析结果中获取计算机的数据配置文件,从计算机的数据配置文件中获取目标设备序列号,并枚举出连接到计算机的所有设备的设备序列号;

本实施例中,测试器安装在计算机上。

步骤302:判断获取到的目标设备序列号是否为空,如果是,则将枚举到的第一个设备的设备序列号对应的设备作为当前被测设备,执行步骤305;否则,执行步骤303;

步骤303:判断枚举到的所有设备的设备序列号中是否存在和目标设备序列号对应的设备序列号,如果是,则执行步骤304;否则,报错;

步骤304:将目标设备序列号对应的设备作为当前被测设备,执行步骤305;

步骤305:从解析结果中获取测试器中的第一测试操作,将第一测试操作作为当前测试操作,根据当前测试操作获取当前测试操作类型为输入操作,根据当前测试操作获取视图类型、关键信息和文本内容;

具体地,从解析结果中获取测试器中的与第一测试操作对应的第一测试代码并将其作为当前测试代码,若当前测试代码为第二函数,则当前测试操作类型为输入操作,获取第二函数中第三参数、第四参数和第九参数,将第三参数作为视图类型,将第四参数作为关键信息、将第九参数作为文本内容;

例如:从解析结果中获取测试器中的与第一测试操作对应的第一测试代码并将其作为当前测试代码,获取到当前测试代码为第二函数“thenenter"张三"intoeditextwithindex0

"{…..view_class="android.widget.edittext"…..

}则当前测试操作类型为输入操作,将第三参数view_class="android.widget.edittext"作为视图类型,将第四参数“index0”作为关键信息,将第九参数"张三"作为文本内容。

步骤306:在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件;

本步骤中,当前页面为当前被测应用的等待输入用户名和密码的登录页面,可以但不限于如图8所示。

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发给被测设备的操作系统,在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件。

步骤307:将当前活动组件元素集合文件转移到计算机上;

具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发给被测设备的操作系统,将当前活动组件元素集合文件“window_dump5.xml”转移到计算机上。

本实施例中,当前活动组件元素集合文件“window_dump6.xml”中包含当前页面的多个活动组件元素,每个活动组件元素中包括多个元素属性,元素属性可以具体为:元素索引、元素文本、元素类型和元素坐标等信息;例如:当前活动组件元素集合文件“window_dump5.xml”为:

步骤308:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;若未获取到,则当前测试失败,报错;若获取到,则执行步骤309。

其中,关键信息中包括关键信息标识和关键信息值。

本实施例中,本实施例中,视图类型可以是预设的,也可以是外部传入的。关键信息可以是预设的,也可以是外部传入的。

具体地,根据预设的视图类型和关键信息标识和关键信息值在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识的元素属性值为关键信息值的活动组件元素,若查找到,判断出在活动组件元素集合文件中查找与视图类型和关键信息匹配的活动组件元素,则执行步骤309;否则,判断出在活动组件元素集合文件中没有查找与视图类型和关键信息匹配的活动组件元素,当前测试失败,报错。

例如:根据预设的视图类型“edittext”和关键信息标识“index”和关键信息值“0”在活动组件元素集合文件“window_dump6.xml”中查找到元素类型class"=android.widget.edittext"为与视图类型edittext匹配且元素属性为关键信息标识index的元素属性值为“0”的活动组件元素,则执行步骤309。

步骤309:获取与视图类型和关键信息匹配的活动组件元素的元素坐标信息;

例如:获取与视图类型“edittext”和关键信息“挑战应答型”匹配的活动组件元素<nodeindex="0"text="输入用户名"resource-id=""class="android.widget.edittext"package=""content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="true"scrollable="false"long-clickable="true"password="false"selected="false"bounds="[60,321][1020,427]"/>的元素坐标信息:bounds="[60,321][1020,427]"。

步骤310:根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息计算第五焦点位置;

具体地,根据第五算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到第五焦点位置。

例如,根据第五算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到元素坐标信息的中心点坐标位置,并将元素坐标信息的中心点坐标位置作为第五焦点位置。

步骤311:判断与视图类型和关键信息匹配的活动组件元素的元素文本值是否为空,如果是,则执行步骤312;否则,清空与视图类型和关键信息匹配的活动组件元素的元素文本值,执行步骤312;

步骤312:根据第五焦点位置将文本内容输入到当前页面的文本输入区域;

步骤312具体包括:

步骤312-1:根据焦点位置组织第四点击命令,将第四点击命令发送给被测设备点击当前页面上的文本输入区域;

具体地,根据第五焦点位置的坐标positionxpositiony组织点击命令<adb-sandroiddevsnshellinputtappositionxpositiony>,将点击命令发送给被测设备的操作系统,被测设备的操作系统接收到第四点击命令后,根据第四点击命令中的第五焦点位置点击当前页面上的待点击区域。

步骤312-2:组织包括文本内容的第二文本输入命令,将第二文本输入命令发送给被测设备将文本内容输入到当前页面上的文本输入区域中。

具体地,组织包括文本内容content的第二文本输入命令<adb-sandroiddevsnshellinputtextcontent>,将第二文本输入命令发送给被测设备的操作系统,被测设备的操作系统接收到第二文本输入命令后,将第二文本输入命令中的文本内容本输入到当前页面上的文本输入区域中。

例如:根据第五焦点位置将文本内容“张三”输入到当前页面的文本输入区域。

本实施例中,文本内容可以是预设的,还可以是从已注册数据库中获取到的,也可以是接收外部传入的。

本实施例中,输入文本内容“张三”的登录当前页面可以但不限于如图9所示。

步骤313:从解析结果中获取测试器中的第二测试操作,将第二测试操作作为当前测试操作,根据当前测试操作获取当前测试操作类型为输入操作,根据当前测试操作获取视图类型、关键信息和当前文本信息;

例如:从解析结果中获取测试器中的与第二测试操作对应的第二测试代码并将其作为当前测试代码,获取到当前测试代码为第二函数“thenenter"123456"intoeditextwithindex1

"{…..view_class="android.widget.edittext"…..

}则当前测试操作类型为输入操作,将第三参数view_class="android.widget.edittext"作为视图类型,将第四参数“index1”作为关键信息,将第九参数"123456"作为文本内容。

步骤314:在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件;

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发给被测设备的操作系统,在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件。

步骤315:将当前活动组件元素集合文件转移到计算机上;

具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发给被测设备的操作系统,将当前活动组件元素集合文件“window_dump6.xml”转移到计算机上。

本实施例中,当前活动组件元素集合文件“window_dump1.xml”中包含当前页面的多个活动组件元素,每个活动组件元素中包括多个元素属性,元素属性可以具体为:元素索引、元素文本、元素类型和元素坐标等信息;例如:当前活动组件元素集合文件“window_dump6.xml”为:

步骤316:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;若未获取到,则当前测试失败,报错;若获取到,则执行步骤317。

其中,关键信息中包括关键信息标识和关键信息值。

本实施例中,本实施例中,视图类型可以是预设的,也可以是外部传入的。关键信息可以是预设的,也可以是外部传入的。

具体地,根据预设的视图类型和关键信息标识和关键信息值在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识的元素属性值为关键信息值的活动组件元素,若查找到,判断出在活动组件元素集合文件中查找与视图类型和关键信息匹配的活动组件元素,则执行步骤308;否则,判断出在活动组件元素集合文件中没有查找与视图类型和关键信息匹配的活动组件元素,当前测试失败,报错。

例如:根据预设的视图类型“edittext”和关键信息标识“index”和关键信息值“1”在活动组件元素集合文件“window_dump6.xml”中查找到元素类型class"=android.widget.edittext"为与视图类型edittext匹配且元素属性为关键信息标识index的元素属性值为“1”的活动组件元素<nodeindex="1"text="输入密码"resource-id=""class="android.widget.edittext"package=""content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="true"scrollable="false"long-clickable="true"password="false"selected="false"bounds="[80,321][1020,427]"/>,则执行步骤308。

本实施例中,步骤314还可以具体包括:

步骤c1:创建与将活动组件元素集合文件的中活动组件元素一一对应的标识信息,并将标识信息和活动组件元素对应保存;

步骤c2:根据外部传入的目标标识信息获取与目标标识信息对应的活动组件元素;判断获取到的活动组件元素是否与关键信息和视图类型匹配,如果是,执行步骤315;否则,测试失败,报错。

本实施例中,步骤314又可以具体包括:

步骤d1:在活动组件元素集合文件中获取与视图类型对应的活动组件元素,并创建与获取到的活动组件元素一一对应的标识信息,并将标识信息和活动组件元素对应保存;

步骤d2:根据外部传入的目标标识信息获取与目标标识信息对应的活动组件元素,判断活动组件元素是否与关键信息匹配,如果是,则将其作为与视图类型和关键信息匹配的活动组件元素;执行步骤315;否则,测试失败,报错。

步骤317:获取与视图类型和关键信息匹配的活动组件元素的元素坐标信息;

例如:获取与视图类型“edittext”和关键信息“挑战应答型”匹配的活动组件元素<nodeindex="1"text="输入密码"resource-id=""

class="android.widget.edittext"

package=""content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="true"scrollable="false"long-clickable="true"password="false"selected="false"bounds="[60,321][1020,427]"/>的元素坐标信息:bounds="[80,321][1020,427]"。

步骤318:根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息计算第六焦点位置;

具体地,根据第六算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到第六焦点位置。

例如,根据第六算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到元素坐标信息的中心点坐标位置,并将元素坐标信息的中心点坐标位置作为第六焦点位置。

步骤319:判断与视图类型和关键信息匹配的活动组件元素的元素文本值是否为空,如果是,则执行步骤320;否则,清空与视图类型和关键信息匹配的活动组件元素的元素文本值,执行步骤320;

步骤320:根据第六焦点位置将文本内容输入到当前页面的文本输入区域;

步骤320具体包括:

步骤320-1:根据焦点位置组织第五点击命令,将第五点击命令发送给被测设备点击当前页面上的文本输入区域;

具体地,根据第六焦点位置的坐标positionxpositiony组织点击命令<adb-sandroiddevsnshellinputtappositionxpositiony>,将点击命令发送给被测设备的操作系统,被测设备的操作系统接收到第五点击命令后,根据第五点击命令中的第六焦点位置点击当前页面上的待点击区域。

步骤320-2:组织包括文本内容的第三文本输入命令,将第三文本输入命令发送给被测设备将文本内容输入到当前页面上的文本输入区域中。

具体地,组织包括文本内容content的第三文本输入命令<adb-sandroiddevsnshellinputtextcontent>,将第三文本输入命令发送给被测设备的操作系统,被测设备的操作系统接收到第三文本输入命令后,将第三文本输入命令中的文本内容本输入到当前页面上的文本输入区域中。

例如:根据第六焦点位置将文本内容“123456”输入到当前页面的文本输入区域。

本实施例中,文本内容可以是预设的,还可以是从已注册数据库中获取到的,也可以是接收外部传入的。

本实施例中,输入文本内容“123456”的登录当前页面可以但不限于如图10所示。

步骤321:从解析结果中获取测试器中的第三测试操作,将第三测试操作作为当前测试操作,根据当前测试操作获取当前测试操作类型为按钮点击操作,根据当前测试操作获取视图类型和关键信息;

具体地,从解析结果中获取测试器中的与第三测试操作对应的第三测试代码并将其作为当前测试代码,若当前测试代码为第四函数,则当前测试操作类型为按钮点击操作,获取第四函数中第七参数和第八参数,将第七参数作为视图类型,将第八参数作为关键信息。

例如:从解析结果中获取测试器中的与第三测试操作对应的第三测试代码并将其作为当前测试代码,获取到当前测试代码为第四函数“thenpressbuttonwithindex1"

{…..view_class="android.widget.button"…..

},则当前测试操作类型为按键点击操作,将第七参数view_class="android.widget.button"作为视图类型,将第八参数“index1”作为关键信息。

步骤322:在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件;

具体地,根据被测设备的设备序列号androiddevsn组织第一生成命令<adb-sandroiddevsnshelluiautomatordump>发给被测设备的操作系统,在被测设备上生成与当前被测应用的当前页面对应的当前活动组件元素集合文件。

步骤323:将当前活动组件元素集合文件转移到计算机上;

具体地,根据被测设备的设备序列号androiddevsn组织第一转移命令<adb-sandroiddevsnshellpull>发给被测设备的操作系统,将当前活动组件元素集合文件“window_dump7.xml”转移到计算机上。

本实施例中,当前活动组件元素集合文件“window_dump7.xml”中包含当前页面的多个活动组件元素,每个活动组件元素中包括多个元素属性,元素属性可以具体为:元素索引、元素文本、元素类型和元素坐标等信息;例如:当前活动组件元素集合文件“window_dump7.xml”为:

其中,nodeindex="1"text="登录"resource-id=""class="android.widget.button"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[375,472][705,616]"/>为一个活动组件元素,node中的class为活动组件元素的元素类型、text为活动组件元素的元素文本、index为活动组件元素的元素索引,bounds为活动组件元素的元素坐标。

步骤324:根据视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;若未获取到,则当前测试失败,报错;若获取到,则执行步骤325;

本实施例中,视图类型可以是预设的,也可以是外部传入的。关键信息可以是预设的,也可以是外部传入的。

其中,关键信息中包括关键信息标识和关键信息值。

具体地,根据预设的视图类型和关键信息标识和关键信息值在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识的元素属性值为关键信息值的活动组件元素,若查找到,判断出在活动组件元素集合文件中查找与视图类型和关键信息匹配的活动组件元素,执行步骤325;否则,判断出在活动组件元素集合文件中没有查找与视图类型和关键信息匹配的活动组件元素,当前测试失败,报错;

例如:根据预设的视图类型“button”和第关键信息标识“index”和关键信息值“1”在活动组件元素集合文件“window_dump7.xml”中查找到元素类型class"=android.widget.button"为与视图类型button匹配且元素属性为关键信息标识index的元素属性值为“1”的活动组件元素<nodeindex="1"text="登录"resource-id=""class="android.widget.button"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[375,472][705,616]"/>,执行步骤325;

步骤325:获取与视图类型和关键信息匹配的活动组件元素的元素坐标信息;

例如:获取与视图类型“textview”和关键信息“挑战应答型”匹配的活动组件元素<nodeindex="1"text="登录"resource-id=""class="android.widget.button"package="com.ftsafe.otp.activity"content-desc=""checkable="false"checked="false"clickable="true"enabled="true"focusable="true"focused="false"scrollable="false"long-clickable="false"password="false"selected="false"bounds="[375,472][705,616]"/>的元素坐标信息:bounds="[375,472][705,616]"。

步骤326:根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息计算第七焦点位置;

具体地,根据第七算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到第七焦点位置。

例如,根据第七算法对与视图类型和关键信息匹配的活动组件元素的元素坐标信息进行计算得到元素坐标信息的中心点坐标位置,并将元素坐标信息的中心点坐标位置作为第七焦点位置。

步骤327:根据在第七焦点位置上点击当前页面上的待点击区域。

具体地,根据第七焦点位置组织第六点击命令,将第六点击命令发送给被测设备点击当前页面上的待点击区域。

更加具体地,根据第七焦点位置的坐标positionxpositiony组织点击命令<adb-sandroiddevsnshellinputtappositionxpositiony>,将第六点击命令发送给被测设备的操作系统,被测设备的操作系统接收到第六点击命令后,根据点击命令中的第七焦点位置点击当前页面上的待点击区域。

当当前被测应用检测到登录按钮被点击后,根据登录结果显示相应登录页面。

实施例4

本实施例提供了一种自动化测试装置,如图11所示,包括:第一解析模块01、第一定位模块02、第一获取模块03、第二获取模块04、第一生成模块05、第一转移模块06、第三获取模块07和第一测试模块08;

第一解析模块01,用于解析测试器得到解析结果;

第一定位模块02,用于根据第一解析模块01得到的解析结果从已连接到计算机上的设备中定位被测设备;

本实施例中,计算机上安装有测试器;

第一获取模块03,用于从第一解析模块01得到的解析结果中获取测试器中的当前测试操作;

第二获取模块04,用于根据第一获取模块03获取到的当前测试操作得到当前测试操作类型、视图类型和关键信息;

第一生成模块05,用于在被测设备上生成与被测设备上的当前被测应用的当前页面对应的活动组件元素集合文件;

第一转移模块06,用于将第一生成模块05生成的活动组件元素集合文件转移到计算机上;

第三获取模块07,用于根据第二获取模块04获取到的视图类型和关键信息在转移到计算上的活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;

第一测试模块08,用于根据第三获取模块07获取到的获取结果和第二获取模块04获取到的当前测试操作类型对被测设备进行测试。

本实施例中,测试装置中还可以包括:测试报告模块;

测试报告模块,用于根据第三获取模块07获取到的获取结果得到测试报告。

进一步地,第一测试模块08,可以具体用于当第二获取模块04获取到的当前测试操作类型为点击操作时,判断第三获取模块07是否获取到与视图类型和关键信息匹配的活动组件元素,如果是,则根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的待点击区域的焦点位置,在焦点位置上点击当前页面上的待点击区域;

相应地,测试报告模块,具体用于当第一测试模块08判断出第三获取模块07没有获取到与视图类型和关键信息匹配的活动组件元素时,组织包括匹配失败信息的测试报告;当第一测试模块08判断出第三获取模块07获取到与视图类型和关键信息匹配的活动组件元素时,组织包括匹配成功信息的测试报告。

本实施例中,第二获取模块04还用于当获取到的当前测试操作类型为输入操作时,根据当前测试操作获取文本内容;相应地:

第一测试模块08,还可以具体用于判断第三获取模块07是否获取到与视图类型和关键信息匹配的活动组件元素,如果是,则根据与视图类型和关键信息匹配的活动组件元素中的元素坐标信息得到当前页面上的文本输入区域的焦点位置,在焦点位置点击当前页面上的文本输入区域;将文本内容输入到当前页面上的文本输入区域中;

测试报告模块,具体用于当第一测试模块08判断出第三获取模块07没有获取到与视图类型和关键信息匹配的活动组件元素时,组织包括匹配失败信息的测试报告;当第一测试模块08判断出第三获取模块07获取到与视图类型和关键信息匹配的活动组件元素时,组织包括匹配成功信息的测试报告。

本实施例中,第一测试模块08,又可以具体用于当第二获取模块04获取到的当前测试操作类型为断言操作时,判断第三获取模块07是否获取到与视图类型和关键信息匹配的活动组件元素;

相应地,测试报告模块,具体用于当第一测试模块08判断出第三获取模块07没有获取到与视图类型和关键信息匹配的活动组件元素时,组织包括匹配失败信息的测试报告;当第一测试模块08判断出第三获取模块07获取到与视图类型和关键信息匹配的活动组件元素时,组织包括匹配成功信息的测试报告。

本实施例中,测试装置中还可以包括:第一判断模块;

第三获取模块07具体包括:第三获取单元和第一判断单元;

第一获取模块,具体用于从第一解析模块01获取到的解析结果中获取测试器中的测试操作,将测试器的第一测试操作作为当前测试操作;

第二获取模块04,用于根据第一获取模块03获取到的当前测试操作得到当前测试操作类型、视图类型和关键信息;当前测试操作类型包括:点击操作、输入操作和断言操作中的至少一种;

第三获取单元,用于根据第二获取模块04获取到的视图类型和关键信息在活动组件元素集合文件中获取与视图类型和关键信息匹配的活动组件元素;

第一判断单元,判断第三获取单元是否获取到与视图类型和关键信息匹配的活动组件元素;

第一测试模块08,具体用于当第一判断单元判断为是后:

若当前测试操作为点击操作,则根据第三获取单元获取到的与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的待点击区域的焦点位置,在焦点位置上点击当前页面上的待点击区域;

若当前测试操作为输入操作,则根据与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的文本输入区域的焦点位置,在焦点位置点击当前页面上的文本输入区域;将文本内容输入到当前页面上的文本输入区域中;

第一判断模块,用于若当前测试操作为点击操作,则在第一测试模块08在焦点位置上点击当前页面上的待点击区域之后,判断当前测试操作是否为测试器中的最后一个测试操作;若当前测试操作为输入操作,则在第一测试模块08在将文本内容输入到当前页面上的文本输入区域中之后,判断当前测试操作是否为测试器中的最后一个测试操作;若当前测试操作为断言操作,则判断当前测试操作是否为测试器中的最后一个测试操作;

第二获取模块04,还用于当第一判断模块判断为否后,将测试器中的当前测试操作的下一个测试操作作为当前测试操作;根据当前测试操作得到当前测试操作类型,根据当前测试操作获取视图类型和关键信息。

进一步地,还可以包括:测试报告模块;测试报告模块包括第一保存单元和第一报告单元;

第一保存单元,用于保存第三获取单元的获取结果;

第一报告单元,用于当第一判断模块判断为是后,根据第一保存单元保存的所有获取结果得到测试报告;以及当第一判断单元判断为否后,根据第一保存单元保存的所有获取结果得到测试报告。

本实施例中,点击操作可以包括文本点击操作和按钮点击操作。

本实施例中,第一测试模块08可以具体包括:第四获取单元、第一点击单元;

第四获取单元,用于若当前测试操作为点击操作,则根据第三获取模块07获取到的与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的待点击区域的焦点位置;

第一点击单元,用于根据第四获取单元获取到的焦点位置组织点击命令,将点击命令发送给被测设备点击当前页面上的待点击区域。

进一步地,第一点击单元,具体用于根据第四获取单元获取到的焦点位置的坐标组织点击命令,将点击命令发送给被测设备的操作系统,被测设备的操作系统接收到点击命令后,根据点击命令中的焦点位置的坐标点击当前页面上的待点击区域。

本实施例中,第一测试模块08还可以具体包括:第五获取单元、第二点击单元和第一输入单元;

第五获取单元,用于若当前测试操作为输入操作,则根据第三获取模块07获取到的与视图类型和关键信息匹配的活动组件元素的元素坐标信息得到当前页面上的文本输入区域的焦点位置,

第二点击单元,用于根据第五获取单元获取到的焦点位置组织点击命令,将点击命令发送给被测设备点击当前页面上的文本输入区域;

第一输入单元,用于组织包括文本内容的文本输入命令,将文本输入命令发送给被测设备将文本内容输入到当前页面上的文本输入区域中。

进一步地,第二点击单元,具体用于根据第五获取单元获取到的焦点位置的坐标组织点击命令,将点击命令发送给被测设备的操作系统,被测设备的操作系统接收到点击命令后,根据点击命令中的焦点位置的坐标点击当前页面上的文本输入区域;

第一输入单元,具体用于组织包括文本内容的文本输入命令,将文本输入命令发送给被测设备的操作系统,被测设备的操作系统接收到文本输入命令后,将文本输入命令中的文本内容输入到当前页面上的文本输入区域中。

本实施例中,第二获取模块04,还用于当当前测试操作为输入操作时,根据当前测试操作获取文本内容。

本实施例中,第二获取模块04可以包括:第一获取单元和第二获取单元;

第一获取单元,用于判断测试器中的当前测试代码类型,若当前测试代码为第一函数或第四函数,则当前测试操作类型为点击操作;若当前测试代码为第二函数,则当前测试操作类型为输入操作;若当前测试代码为第三函数,则当前测试操作类型为断言操作;

第二获取单元,用于根据当前测试操作获取视图类型和关键信息。

33、根据权利要求32的装置,其特征在于,第二获取单元具体用于:

若当前测试代码为第一函数时,获取第一函数中第一参数和第二参数,将第一参数作为视图类型,将第二参数作为关键信息;

若当前测试代码为第二函数时,获取第二函数中第三参数和第四参数,将第三参数作为视图类型,将第四参数作为关键信息;

若当前测试代码为第三函数时,获取第三函数中第五参数和第六参数,将第五参数作为视图类型,将第六参数作为关键信息;

若当前测试代码为第四函数时,获取第四函数中第七参数和第八参数,将第七参数作为视图类型,将第八参数作为关键信息。

本实施例中,第一生成模块05包括:第一组织单元、第一发送单元、第一接收单元、第二判断单元、第一报错单元;

第一转移模块06包括:第二组织单元、第二发送单元、第二接收单元、第三判断单元和第二报错单元;

第一组织单元,用于根据被测设备的设备标识组织第一生成命令;

第一发送单元,用于将第一组织单元组织的第一生成命令发送给被测设备的操作系统;

第二判断单元,用于判断第一接收单元是否接收到来自被测设备的操作系统的生成失败应答;若为否,则判断在被测设备上成功生成与当前被测应用的当前页面对应的活动组件元素集合文件;

第一报错单元,用于当第二判断单元判断为是后,报错;

第二组织单元,用于根据被测设备的设备标识组织第一转移命令;

第二发送单元,用于将第二组织单元组织的第一转移命令发送给被测设备的操作系统;

第三判断单元,用于判断第二接收单元是否接收到来自被测设备的操作系统的转移失败应答;若为否,则判断出将活动组件元素集合文件成功转移到计算机上;

第二报错单元,还用于当第三判断单元判断为是后,报错。

本实施例中,关键信息包括关键信息标识和关键信息值;

第三获取模块07,具体用于根据视图类型和关键信息标识和关键信息值在活动组件元素集合文件中查找元素属性中的元素类型与视图类型匹配且元素属性为关键信息标识,元素属性值为关键信息值的活动组件元素,若查找到,则判断出获取到与视图类型和关键信息匹配的活动组件元素;否则,判断出没有获取到与视图类型和关键信息匹配的活动组件元素。

本实施例提供了一种自动化测试装置:通过解析测试器,根据测试器中的当前测试操作获取当前测试操作类型、视图类型和关键信息,通过对被测设备的被测应用程序的界面分析获取界面中的与视图类型和关键信息匹配的活动组件元素,根据获取到活动组件元素中的信息和当前测试操作类型完成对被测设备的被测应用程序界面的测试操作,提高了测试的效率。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1