一种UI遍历测试方法与系统转让专利

申请号 : CN201410677175.6

文献号 : CN105653441B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田野周学志

申请人 : 中国科学院声学研究所

摘要 :

本发明公开了一种UI遍历测试方法,所述方法包含:步骤101)解析被测应用得到被测应用所包含的UI元素,基于得到的UI元素构建UI元素集合;步骤102)实时探测并触发被测应用的UI界面中的UI元素,进而对探测得到的UI元素进行UI遍历测试;其中,每触发一个UI元素,就相应的在UI元素集合中修改UI元素的状态。本发明提供了一种UI遍历测试方法与系统,通过解析被测应用,构建UI元素集合,同时实时探测并触发被测应用UI界面中的UI元素,而进行UI遍历测试。同时构建UI界面与UI元素之间的关系树,从而能够定位UI元素的路径。使得UI遍历测试系统能够根据路径对所有UI元素进行触发操作。本发明同时保持UI遍历的有效性与覆盖率,减少人工工作量,提高测试的效率。

权利要求 :

1.一种UI遍历测试方法,所述方法包含:

步骤101)解析被测应用得到被测应用所包含的UI元素,基于得到的UI元素构建关于此应用的UI元素集合,并设置UI元素的特征状态初始值;

所述步骤101)进一步包含如下子步骤:

步骤101-1)解析被测应用,得到被测应用所包含的UI元素,其中UI元素的类型包括:按钮、文本框、复选框、超链接或下拉框;

步骤101-2)根据UI元素的类型将各类UI元素分别标记为E1、E2、E3...…En,并构成UI元素集合L={E1,E2,E3...En};

步骤101-3)采用两项指标设置UI元素集合中所有的UI元素的状态,其中第一选项指标用于记录各UI元素已触发或未触发的状态,第二选项指标用于记录触发的UI界面Px;

其中,将所有UI元素特征状态初始值设置为:未触发、Px为空;

步骤102)实时探测并触发被测应用的UI界面中的UI元素,进而对探测得到的UI元素进行UI遍历测试;

每触发一个UI元素,就将相应的UI元素特征状态初始值修改为“已触发”,直到UI元素集合中所有元素的状态都成为“已触发”,即完成遍历测试;

其中,同一个UI元素能被多次触发;

所述步骤102)进一步包含如下子步骤:

步骤102-1)启动应用,实时探测当前UI界面中所包含的UI元素,且被探测出的UI元素应当属于UI元素集合;同时标记当前UI界面为P1,将当前界面中的UI元素与当前UI界面P1形成映射关系;

步骤102-2)随机选择并触发一个状态为未触发的UI元素,并进入到新的UI界面,并将此时触发的UI元素的状态修改为已触发;

步骤102-3)再次实时探测新进入的UI界面,标记新的UI界面为P2,同时,修改被触发的UI元素状态的第二选项指标的UI界面Px=P2,并将UI界面P2中的UI元素与P2形成映射关系,并随机选择触发UI界面P2中一个状态为未触发的UI元素,同时将被触发的UI元素状态标记为已触发;

步骤102-4)重复步骤102-2)至103-3),直到无法通过触发UI元素进入到新的UI界面中,此时通过之前的UI界面与UI元素之间的映射,分析得出UI界面与UI元素之间的关系树;

步骤102-5)重复步骤102-1)至102-4),利用UI界面与UI元素的关系树定位UI元素的位置,将未被触发的UI元素依次触发,直到UI元素集合中所有UI元素的状态全部被修改为已触发。

2.根据权利要求1所述的UI遍历测试方法,其特征在于,

所述步骤101)之前还包含:将被测应用转换成可编译、可读写的文件格式的步骤。

3.根据权利要求1所述UI遍历测试方法,其特征在于,所述步骤102)具体为:实时探测被测应用的UI界面中的UI元素;构建UI界面与探测得到的UI元素之间的关系树,进而定位UI元素的路径;根据UI元素的路径对所有UI元素进行触发操作。

4.根据权利要求1所述UI遍历测试方法,其特征在于,根据UI元素的类型分别选择触发方法。

5.根据权利要求4所述UI遍历测试方法,其特征在于,当UI元素的类型为文本框时,触发方式为:自动在文本框中输入一定长度的字符,并进行提交。

6.一种UI遍历测试系统,其特征在于,所述系统包括:

信息解析模块,用于解析被测应用,并抽取应用中的UI元素信息,其中所述的UI元素信息包含:元素类型、元素所在位置、元素ID、元素名称或URL;

所述信息解析模块执行如下子步骤:

步骤101-1)解析被测应用,得到被测应用所包含的UI元素,其中UI元素的类型包括:按钮、文本框、复选框、超链接或下拉框;

步骤101-2)根据UI元素的类型将各类UI元素分别标记为E1、E2、E3...…En,并构成UI元素集合L={E1,E2,E3...En};

步骤101-3)采用两项指标设置UI元素集合中所有的UI元素的状态,其中第一选项指标用于记录各UI元素已触发或未触发的状态,第二选项指标用于记录触发的UI界面Px;

其中,将所有UI元素特征状态初始值设置为:未触发、Px为空;

UI界面探测模块,用于实时探测被测应用当前运行界面中所包含的UI元素;

数据记录模块,用于记录探测得到的UI元素集合和集合中各UI元素状态信息,其中所述状态信息包含:与当前界面相关的信息及与UI元素的触发状态相关信息;

遍历模块,用于触发处于未触发状态的UI元素,进而对所有未触发UI元素进行遍历;

所述UI界面探测模块执行如下子步骤:

步骤102-1)启动应用,实时探测当前UI界面中所包含的UI元素,且被探测出的UI元素应当属于UI元素集合;同时标记当前UI界面为P1,将当前界面中的UI元素与当前UI界面P1形成映射关系;

步骤102-2)随机选择并触发一个状态为未触发的UI元素,并进入到新的UI界面,并将此时触发的UI元素的状态修改为已触发;

步骤102-3)再次实时探测新进入的UI界面,标记新的UI界面为P2,同时,修改被触发的UI元素状态的第二选项指标的UI界面Px=P2,并将UI界面P2中的UI元素与P2形成映射关系,并随机选择触发UI界面P2中一个状态为未触发的UI元素,同时将被触发的UI元素状态标记为已触发;

步骤102-4)重复步骤102-2)至103-3),直到无法通过触发UI元素进入到新的UI界面中,此时通过之前的UI界面与UI元素之间的映射,分析得出UI界面与UI元素之间的关系树;

步骤102-5)重复步骤102-1)至102-4),利用UI界面与UI元素的关系树定位UI元素的位置,将未被触发的UI元素依次触发,直到UI元素集合中所有UI元素的状态全部被修改为已触发。

7.根据权利要求6所述的UI遍历测试系统,其特征在于,所述系统还包含:软件格式转化模块,用于将被测应用转换为所需的格式。

说明书 :

一种UI遍历测试方法与系统

技术领域

[0001] 本发明涉及应用软件测试领域,特别涉及到一种UI遍历测试方法与系统。

背景技术

[0002] 智能化电子产品已经成为电子产品发展的趋势。各种智能电子产品,例如,平板电脑,智能手机,可穿戴设备等,已经充斥着人们的日常生活。市场上流行着众多不同品牌、不同硬件型号、不同操作系统、不同尺寸大小的智能化电子产品。繁多的种类让人们有着很大的选择余地,同时也带了很多问题。例如,某个应用,因为智能产品的操作系统版本不同,其UI界面在不同设备上呈现的效果也不同。呈现效果的差异通常是负面结果,比如,应用在某款设备上能全屏正常显示,而在另一款设备上无法全屏显示。为了解决这些问题,应用在正式发布前通常需要做一些适配性测试,而UI(user interface,即用户接口)的适配性测试则是重中之重。目前,UI的适配性测试有3种方法:1.录制回放法,在某款设备上先人工执行一遍测试脚本,通过录制软件,将人工测试脚本转化为可自动执行的软件测试脚本。然后利用软件测试脚本在其他各种类型的设备上进行适配性测试。此种方法的优势在于,人工执行一遍脚本后,余下的步骤可以自动化的完成,但缺点在于,录制脚本的规则比较死板,录制回放法对于不同屏幕尺寸的设备的适配测试并不理想,比如,在4英寸大小的屏幕设备上,人工操作的动作是点击坐标(200、120)上的UI元素E,但是在5英寸或者更大的屏幕设备上,坐标(200、120)上可能没有UI元素或者是其他的UI元素,因此,转化后的软件测试脚本执行此动作时,得到的结果并不如预期。2.随机测试法,随机测试法是由测试程序随机执行一些测试动作来触发应用的UI元素。此方法操作简单,但是,因为是随机测试,没有规划,测试的有效性与覆盖率都不高。最后一种方法比较传统正规,其步骤是首先详细的分析被测应用,将UI元素、UI界面等等信息收集完整,分析得出整个应用的关系树;依据应用的关系树,来编写测试脚本。这种方法的测试有效率以及覆盖率非常高,但是需要做大量的事前工作,比较耗时耗力。

发明内容

[0003] 本发明的目的在于,为克服上述问题,本发明实施例提供了一种UI遍历测试方法与系统。
[0004] 为了实现上述目的,本发明提供了一种UI遍历测试方法,所述方法包含:
[0005] 步骤101)解析被测应用得到被测应用所包含的UI元素,基于得到的UI元素构建关于此应用的UI元素集合,并设置UI元素的初始特征状态值;
[0006] 步骤102)
[0007] 实时探测并触发被测应用的UI界面中的UI元素,进而对探测得到的UI元素进行UI遍历测试;
[0008] 每触发一个UI元素,就将相应的UI元素特征初始值修改为“已触发”,直到UI元素集合中所有元素的状态都成为“已触发”,即完成遍历测试;
[0009] 其中,同一个UI元素能被多次触发。
[0010] 可选的,上述步骤101)之前还包含:将被测软件转换成可编译、可读写的文件格式的步骤。
[0011] 进一步可选的,上述步骤101进一步包含如下子步骤:
[0012] 步骤101-1)解析被测应用,得到被应用所包含的UI元素,其中UI元素的类型包括:按钮、文本框、复选框、超链接或下拉框;
[0013] 步骤101-2)根据UI元素的类型将各类UI元素分别标记为E1、E2、E3...…En,并构成UI元素集合L={E1,E2,E3...En};
[0014] 步骤101-3)采用两项指标设置UI元素集合中所有的UI元素,其中第一选项指标用于记录各UI元素已触发或未触发的状态,第二选项指标用于记录触发的UI界面Px;
[0015] 其中,在初始化阶段,将所有UI元素设置为:未触发、Px为空。
[0016] 上述步骤102)具体为:实时探测被测应用的UI界面中的UI元素;构建UI界面与探测得到的UI元素之间的关系树,进而定位UI元素的路径;根据UI元素的路径对所有UI元素进行触发操作。
[0017] 本发明还提供了一种UI遍历测试系统,所述系统包括:
[0018] 信息解析模块,用于解析被测应用,并抽取应用中的UI元素信息,其中所述的UI元素信息包含:元素类型、元素所在位置、元素ID、元素名称或URL;
[0019] UI界面探测模块,用于实时探测被应用当前运行界面中所包含的UI元素;
[0020] 数据记录模块,用于记录探测得到的UI元素集合和集合中各UI元素状态信息,其中所述状态信息包含:与当前界面相关的信息及与UI元素的触发状态相关信息;
[0021] 遍历模块,用于触发处于未触发状态的UI元素,进而对所有未触发UI元素进行遍历。
[0022] 与现有技术相比,本发明的技术优势在于:
[0023] 本发明实施例提供的UI遍历测试方法与系统通过解析被测应用,构建UI元素集合,同时实时探测并触发被测应用UI界面中的UI元素,而进行UI遍历测试。并且本发明实施例构建UI界面与UI元素之间的关系树,从而能够定位UI元素的路径。使得UI遍历测试系统能够根据路径对所有UI元素进行触发操作。每触发一个UI元素,就相应的在UI元素集合中修改UI元素的状态为已触发。从而避免了对同个UI元素的重复触发,或者遗漏触发某个UI元素。本发明在保持UI遍历的有效性与覆盖率的同时,减少了人工工作量,提高了测试的效率。

附图说明

[0024] 图1为本发明实施例一提供的UI遍历测试方法流程图;
[0025] 图2为本发明实施例二提供的UI遍历测试系统示意图。

具体实施方式

[0026] 下面结合附图和实施例对本发明进一步说明。
[0027] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028] 本发明提供一种UI遍历测试方法,所述方法包括:
[0029] 步骤1,将被测软件转换成所需格式;
[0030] 步骤2,解析被测应用,得到应用所包含的UI元素,UI元素类型包括:按钮、文本框、复选框、超链接、下拉框等等,标记UI元素为E1、E2、E3...…En,并构成UI元素集合L={E1,E2,E3...En},同时设置集合中所有UI元素的状态,每个元素的状态包含两个选项,第1选项为已触发/未触发,第2选项为触发的UI界面Px,在初始状态,所有元素状态都为(未触发、Px等于空);
[0031] 步骤3,实时探测被测应用的UI界面中的UI元素;构建UI界面与探测得到的UI元素之间的关系树,进而定位UI元素的路径;根据UI元素的路径对所有UI元素进行触发操作。
[0032] 上述述步骤3)进一步包含如下子步骤:
[0033] 步骤3-1,启动应用,实时探测当前UI界面中所包含的UI元素,被探测出的UI元素应当属于UI元素集合L,同时标记当前UI界面为P1,将当前界面中的UI元素与当前UI界面P1形成映射关系;
[0034] 步骤3-2,随机选择并触发一个状态为未触发的UI元素,并进入到新的UI界面,此时,将被触发的UI元素的状态修改为已触发;
[0035] 步骤3-3,再次实时探测新进入的UI界面,标记新的UI界面为P2,同时,修改被触发的UI元素状态为Px=P2,并将UI界面P2中的UI元素与P2形成映射关系,并随机选择触发UI界面P2中一个状态为未触发的UI元素,同时将被触发的UI元素状态标记为已触发;
[0036] 步骤3-4,重复步骤3-2和3-3,直到无法通过触发UI元素进入到新的UI界面中,此时,通过之前的UI界面与UI元素之间的映射,可以分析得出UI界面与UI元素之间的关系树;
[0037] 步骤3-5,重复步骤3-1到3-4,利用UI界面与UI元素的关系树定位UI元素的位置,将未被触发的UI元素依次触发,直到UI元素集合L中所有UI元素的状态全部被修改为已触发。
[0038] 上述方法会根据不同类型的UI元素,使用不同的触发方法,例如,文本框,会自动在文本框中输入一定长度的字符,并进行提交。上述方法是实时探测应用当前运行的UI界面中包含有哪些UI元素。
[0039] 为便于对本发明实时的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
[0040] 实施例一
[0041] 下面以图1为例详细说明本发明实施例一提供的UI遍历测试方法,图1为本发明实施例一提供的UI遍历测试方法流程图,在本发明实施例中,执行下述步骤的实施主体为UI遍历测试系统。如图1所示,该实施例具体包括以下步骤:
[0042] 步骤101,首先将被测软件转换成审核系统所需的文件格式;例如,将android的apk应用软件,进行反编译。
[0043] 步骤102,对反编译过后的apk应用软件进行解析,从Manifest等文件中抽取出apk所包含的全部UI元素,组成UI元素集合L。对UI元素集合中的元素进行编号(假设,本实施例中的被测apk有15个UI元素,E1、E2、E3...…E15)。同时设置集合中所有UI元素的状态,每个元素的状态包含两个选项,第1选项为已触发/未触发,第2选项为触发的UI界面Px,在初始状态,所有元素状态都为(未触发、Px等于空)。
[0044] 步骤103,启动应用,实时探测当前UI界面中所包含的UI元素,被探测出的UI元素应当属于UI元素集合L,假设此界面中包含UI元素为E1、E2、E3、E4,同时标记当前UI界面为P1,将当前界面中的UI元素与当前UI界面P1形成映射关系P1{E1,E2,E3,E4};
[0045] 步骤104,随机选择并触发一个状态为未触发的UI元素,假设选择了元素E1,并进入到新的UI界面,此时,E1的状态被修改为已触发,E2,E3等依然是未触发;
[0046] 步骤105,再次实时探测新进入的UI界面,标记新的UI界面为P2,同时,修改被触发的UI元素E1状态为Px=P2,并将UI界面P2中的UI元素与P2形成映射关系,并随机选择触发UI界面P2中一个状态为未触发的UI元素,假设选择E5,同时将E5状态标记为已触发;
[0047] 步骤106,重复步骤104和105,直到无法通过触发UI元素进入到新的UI界面中,此时,通过之前的UI界面与UI元素之间的映射,可以分析得出UI界面与UI元素之间的关系树,例如,P1{E1(已触发,P2),E2,E3,E4},P2{E2,E5(已触发,P3),E6};
[0048] 步骤107,重复步骤103到107,利用UI界面与UI元素的关系树定位UI元素的位置,将未被触发的UI元素依次触发,在上述步骤中,UI界面P2中E2与E6都未被触发,如果想再次进入P2,则需要再次触发UI元素E1。通常情况,每个UI元素只允许被触发一次,但是在步骤107中,UI遍历测试系统会调整策略,已被触发的元素可以被再次触发,利用这些已被触发的元素进入指定UI界面去操作未触发的元素。直到UI元素集合L中所有UI元素的状态全部被修改为已触发。
[0049] 实施例二
[0050] 另外,本发明实施例二还提供了一种UI遍历测试系统,用以实现前述本发明实施例一中的UI遍历测试方法。
[0051] 图2为本发明实施例二提供的一种UI遍历测试系统示意图,如图2所示,该系统包括以下功能模块:
[0052] 软件格式转化模块201,用于将被测软件转换为所需的格式;
[0053] 信息解析模块202,用于解析应用,并抽取应用中的UI元素信息;其中所述的UI元素信息包含:元素类型、元素所在位置、元素ID、元素名称或URL;
[0054] UI界面探测模块203,用于实时探测应用当前运行界面中所包含的UI元素;
[0055] 数据记录模块204,包含UI元素集合数据库等,用于记录当前被测应用的UI元素集合、UI元素状态等信息;
[0056] 遍历模块205,用于触发UI元素,进行UI遍历。
[0057] 综上所述,本发明通过实时探测被测应用运行时所呈现的UI界面中的UI元素,并触发UI元素进入新的UI界面,而进行自动化的UI遍历,同时针对不同类型的UI元素,而采用了不同的触发方式。在保持UI遍历的有效性与覆盖率的同时,减少了人工工作量,提高了测试的效率。
[0058] 以上所述仅为本发明的一个具体实施方式,并非用于限定本发明的保护范围,本领域的技术人员应当理解,在不脱离发明原理的前提下,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保护范围中。