一种自动化测试元素的识别方法及装置与流程

文档序号:16531520发布日期:2019-01-05 10:47阅读:242来源:国知局
一种自动化测试元素的识别方法及装置与流程

本发明实施例涉及计算机技术领域,更具体地,涉及一种自动化测试元素的识别方法及装置。



背景技术:

软件自动化测试是将人为驱动的测试行为转化为机器执行的一种方式,可完成很大一部分重复性的测试工作,大大提高软件测试效率,使软件测试实现的更迅速。自动化测试中的功能自动化测试是基于黑盒测试,是在测试人员在完全不知道程序内部结构,只知道程序需求的情况下采用的一种测试技术。常见的功能自动化测试工具有qtp、selenium、winrunner、rational、adventnet、silktest、qa、test等,这些测试工具均要求测试人员拥有一定的编程技能。

现有技术中,被测系统对象多种多样,有些被测系统对象比较简单,如只有文本输入框;有些被测系统对象比较复杂,如数据展示表格。自动化测试过程中,测试人员在识别这些对象时,要从技术底层去理清页面对象的层级关系和对象层级的识别方法,还包括对嵌套对象的子对象识别,这些使得测试人员有了较高的技术门槛。

如何降低自动化测试工具对于测试人员的操作技能要求已经成为了一个亟待解决的问题。



技术实现要素:

本发明实施例提供一种自动化测试元素的识别方法及装置,用以解决上述现有技术中存在的缺陷。

第一方面,本发明实施例提供一种自动化测试元素的识别方法,包括:

获取操作步骤序列中的元素,所述元素是可操作且具有业务含义的;

若在预设对象库中检测到与所述元素具有关联关系的第一对象,则将所述第一对象的识别属性作为所述元素的识别属性,以识别所述元素。

第二方面,本发明实施例提供一种自动化测试元素的识别装置,包括:

获取装置,获取操作步骤序列中的元素,所述元素是可操作且具有业务含义的;

识别装置,若在预设对象库中检测到与所述元素具有关联关系的第一对象,则将所述第一对象的识别属性作为所述元素的识别属性,以识别所述元素。

第三方面,本发明实施例提供一种自动化测试元素的识别设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述自动化测试元素的识别方法的步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述自动化测试元素的识别方法的步骤。

本发明实施例提供的一种自动化测试元素的识别方法及装置,通过自动识别测试人员所编写测试用例操作步骤序列中可操作且具有业务含义的元素在预设对象库中对应的对象,使得测试人员在测试过程中只需要关注操作步骤序列中可直接操作且具有业务含义的元素,从而降低了自动化测试工具对于测试人员的操作技能要求。

附图说明

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

图2为本发明一实施例提供的对象库和元素库的结构示意图;

图3为本发明另一实施例提供的对象库和元素库的结构示意图;

图4为本发明又一实施例提供的对象库和元素库的结构示意图;

图5为本发明实施例提供的一种自动化测试元素的识别装置结构示意图;

图6为本发明实施例提供的一种自动化测试元素的识别设备的结构示意图。

具体实施方式

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

软件自动化测试中的功能自动化测试是基于黑盒测试,是在完全不知道程序内部结构,只知道程序需求规格的情况下采用的一种测试技术;本发明实施例主要针对功能测试自动化测试领域。

图1为本发明实施例提供的一种自动化测试元素的识别方法流程图,如图1所示,包括:

步骤s1,获取操作步骤序列中的元素,所述元素是可操作且具有业务含义的;

步骤s2,若在预设对象库中检测到与所述元素具有关联关系的第一对象,则将所述第一对象的识别属性作为所述元素的识别属性,以识别所述元素。

在步骤s1中,操作步骤序列是测试人员站在被测系统用户的视角,根据被测系统的需求将元素分组整理,编写成自动化测试用例操作步骤序列,此时在编写自动化测试用例操作步骤序列时,不需要考虑系统实现的层级关系。相应的,操作步骤序列中的元素是各个可操作且具有直接业务含义的要素;可操作是指站在被测系统用户的视角下,被测系统中可直接操作的要素,例如登录用户名;具有直接业务含义是指这个可直接操作的要素还是能够直接实现被测系统需求的要素,并且这里的业务含义不包含技术实现引入的要素,例如布局框架等。

在步骤s2中,预设对象库是面向自动化测试工具,相应的,预设对象库中的对象表示实际被测系统技术实现的具体细节,是被测系统中的实际对象,与被测系统实现相关,具有相应的层级关系;预设对象库中存储了具体对象本身的唯一id、具体对象的子对象唯一id列表、具体对象的父对象唯一id、和具体对象的识别属性。而这里的预设对象库并不需要由测试人员来进行维护,而是依靠另外的开发人员对其进行维护。

这里的第一对象是指该元素在预设对象库中具有直接关联关系的对象。需要说明的是,在本发明实施例中第一、第二等限定只是为了区分限定对象是不同的,并无其他含义。

对象的识别属性包括对象的主识别属性和对象的附加属性,该主识别属性是用于识别对象的主要属性,该附加属性是额外的指定序号,当存在多个对象的主识别属性相同时,可以通过指定序号这个附加属性来从多个主识别属性相同的对象中选择一个对象来进行处理。

本发明实施例中描述的第一对象还包含层级关系这一特性,且该层级关系可以为多层或单层。

当第一对象的层级关系为单层时,步骤s2具体为,若在预设对象库中检测到与元素具有关联关系的第一对象,例如,可以在预设对象库中查找该元素直接关联的对象,若元素的relateidentifyobjectid不为空,则取预设对象库中id等于该元素的relateidentifyobjectid的对象作为第一对象。此时将第一对象的识别属性赋予该元素以识别该元素,以识别该元素。

当第一对象的层级关系为多层时,则根据第一对象的层级关系,从顶层到底层逐层识别,直至确定所述第一对象的层级关系底层对应的目标子对象;

将所述目标子对象的识别属性作为所述元素的识别属性,以识别所述元素。

在步骤s1前,该方法还包括,将操作步骤序列中的各个可操作且具有直接业务含义的要素作为所述元素存储到预设元素库中。

预设元素库中存储了元素与预设对象库中对象的关联关系,元素与预设对象库中父对象的关联关系,元素的识别属性,元素与其父元素的关联关系。

预设元素库是由测试人员进行维护,测试人员将元素按照其对应的父元素进行分组管理,方便查找,例如这里的父元素可以是逻辑页面,这里的元素则是逻辑页面下的元素。

测试人员编写的操作步骤序列,例如以登录操作为例,在编辑好元素库的情况下,测试人员编写的自动化操作步骤为:

父元素:登录页面,元素:用户名,操作:输入abc;

父元素:登录页面,元素:密码,操作:输入123;

父元素:登录页面,元素:登录按钮,操作:点击。

测试人员只需要通过输入登录页面的用户名、密码,并点击登录来实现对登录功能的测试,不需要理解自动化工具如何识别用户名、密码控件以及如何实现输入操作。

本发明实施例通过自动识别测试人员所编写测试用例操作步骤序列中的元素在预设对象库中对应的对象,使得测试人员在测试过程中只需要关注测试用例操作步骤序列中的元素,从而降低了自动化测试工具对于测试人员的操作技能要求。

在上述实施例的基础上,若在预设对象库中未检测到与元素具有关联关系的第一对象,则该方法还包括:

在预设对象库中获取与该元素具有关联关系的父对象为第二对象,以根据第二对象和所述元素的识别属性识别所述元素。

具体的,是当该元素在预设对象库中找不到与其具有直接关联关系的第一对象时,则尝试着去找该元素在预设对象库是否存在具有关联关系的父对象,例如元素在预设对象库中存在具有关联关系的父对象relateparentidentifyobjectid不为空,则选取预设对象库中id等于该元素的relateparentidentifyobjectid的对象作为与该元素的父对象,则此时也可以判断得到与元素对应的对象具有父对象,根据第二对象所包含的层级关系和该元素的识别属性来识别该元素。

图2为本发明一实施例提供的对象库和元素库的结构示意图,如图2所示,元素库中的“搜索按钮”元素具有直接关联关系的对象是“searchbutton”,而元素“页面2”具有直接关联关系的对象是“page2”;而元素“搜索按钮”在该对象库中存在关联关系的父对象为“frame2”。

若在自动化测试过程中需要对搜索输入框进行操作,则需要对“搜索输入框”这个元素进行识别定位,而由图可知,“搜索输入框”这个元素在其对应的对象库中并不存在直接关联的第一对象,则此时尝试着寻找“搜索输入框”这个元素是否在预设对象库中存在关联关系的父对象为第二对象,此时第二对象为frame2。然后根据第二对象的层级关系和第二对象的识别属性,并结合该元素的识别属性来识别该元素。

本发明实施例通过在预设对象库中获取与元素具有关联关系的父对象,从而可以判断该元素所对应父对象的层级关系,再根据该元素的识别属性,识别该元素。

在上述实施例的基础上,若在预设对象库中未检测到与该元素具有关联关系的第一对象,则该方法还包括:

在预设元素库中获取与该元素关联的父元素;

若在预设对象库中检测到与该父元素具有关联关系的第三对象,以根据第三对象和所述元素的识别属性识别该元素。

具体的,该元素在预设对象库中找不到与其具有直接关联关系的第一对象时,则尝试着在预设元素库中查找该元素的父元素,然后查找该父元素是否在预设对象库中存在具有直接关联关系的第三对象,若查找到该父元素在预设对象库中存在具有直接关联关系的第三对象,则此时将该第三对象作为与该元素对应的父对象,具体的,若该父元素的relateidentifyobjectid不为空,则取预设对象库中id等于该父元素的relateidentifyobjectid的对象作为该元素对应的父对象,根据该父对象的层级关系,同时根据该元素的识别属性来识别该元素。

图3为本发明另一实施例提供的对象库和元素库的结构示意图,如图3所示,而元素“页面3”具有直接关联关系的对象是“page3”;元素“登录按钮”在对象的对象库中不存在直接关联关系的对象。

如自动化测试过程中需要对于页面3的登录按钮进行操作,则需要对元素库中“登录按钮”这一元素进行识别,而由图可知,在其对应的对象库中找不到与该元素具有直接关联关系的第一对象,且也找不到与该元素具有关联关系的父对象,此时寻找其父元素,其父元素“页面3”在其对应的对象库中存在具有关联关系的第三对象“page3”,此时根据该第三对象“page3”的层级关系及识别属性,并结合该元素的识别属性从而对该元素进行识别。

本发明实施例通过在预设对象库中获取与该元素的父元素具有关联关系的对象,从而可以判断该元素对应对象的层级关系,从而识别该元素。

在上述实施例的基础上,若所述第一对象的层级关系为多层;相应的,所述识别所述元素包括:

从所述第一对象的层级关系的顶层至底层逐层识别,直至确定所述第一对象的层级关系底层对应的目标子对象;

将所述目标子对象的识别属性作为所述元素的识别属性,以识别所述元素。

对象库中的对象是以树结构进行存储,且每个节点都有记录其关联元素id的字段,从该对象识别过程中根据预设对象库中存储的具体对象本身的唯一id和具体对象的子对象唯一id列表,从具体对象的层级关系的顶层至底层逐层识别,直至确定该对象的层级关系底层对应的目标子对象;将该目标子对象的识别属性作为该元素的识别属性,以识别该元素。

本发明实施例中所描述的第一对象的层级关系可以为多层,也可以为单层。若第一对象的层级关系为多层,则从第一对象层级关系的顶层至底层逐层识别,直到识别第一对象的层级底层的目标子对象,然后将该目标子对象的识别属性作为该元素的识别属性,以识别该元素;若第一对象的层级关系为单层,则直接将第一对象的识别属性作为该元素的识别属性,以识别该元素。

这里的层级关系的判断,可以是根据元素具有直接关联关系的第一对象的层级关系判断,在元素没有直接关联关系的第一对象时,则是判断该元素是否在预设对象库中具有关联关系的父对象作为第二对象,然后根据该第二对象的层级关系来判断,或者是判断该元素对应的父元素是否在预设对象库中具有关联关系的第三对象,然后根据该第三对象的层级关系来判断。

相应的,当所述第二对象和第三对象的层级关系为多层时,则从第二对象层级关系或第三对象层级关系的顶层到底层,逐层识别,直至识别到该对象层级关系底层的目标子对象,再结合元素的识别属性,来识别该元素。

图4为本发明又一实施例提供的对象库和元素库的结构示意图,如图4所示,元素库中的“密码输入框”这一元素在对应的对象库中具有直接关联关系的对象“codeinput”。

在自动化测试过程中,需要对元素库中“密码输入框”这一元素进行操作,则需要对“密码输入框”这一元素进行识别,该元素在其对应的预设对象库中存在具有直接关联关系的第一对象为“codeinput”,此时该第一对象的层级关系为多层。

然后,从该第一对象的层级关系的顶层至底层逐层识别,直至确定所述第一对象的层级关系底层对应的目标子对象。

具体地,根据通过各节点的父对象id和子对象id在其对应的预设对象库中查找该第一对象“codeinput”的识别路径,确定codeinput的识别路径为:浏览器1-page1-frame1-codeinput。

通过对象库中各对象的唯一id,找到浏览器1对象,获取浏览器1的识别属性,通过该识别属性定位到浏览器1。

通过对象库中各对象的唯一id,找到page1对象,获取page1的识别属性,通过该识别属性定位到浏览器1-page1。

通过对象库中各对象的唯一id,找到frame1对象,获取frame1的识别属性,通过该识别属性定位到浏览器1-page1-frame1。

通过对象库中各对象的唯一id,找到codeinput对象,然后将codeinput这一对象的识别属性作为该元素的识别属性,通过该识别属性定位到浏览器1-page1-frame1-codeinput,从而完成该元素的识别。本发明实施例根据对象的层级关系,从顶层到底层逐层识别的方式,可以在对象的层级关系为多层情况下,识别所述元素。

在上述实施例的基础上,从所述第一对象的层级关系的顶层至底层逐层识别,直至确定所述第一对象的层级关系底层对应的目标子对象,还包括:

所述从所述第一对象的层级关系的顶层至底层逐层识别过程中,若任一层级的对象识别失败,则停止识别。

本发明实施例中所描述的任一层级,是指该对象层级关系中从顶层到底层过程中的任何一个层级。

这里所说的对象识别失败,是指在任一层级中识别到该层级对象的识别属性为空,并且该识别属性为空的对象在预设元素库中也找不到与其具有关联关系的元素,此时识别失败,停止识别过程并报错退出程序。

在该元素所对应有多层关联关系的对象时,在识别的过程中还需要考虑到对象的层级关系,因此本发明实施例根据该对象的层级关系,从顶层至底层,逐层识别,直至识别到该对象的层级关系底层对象的目标子对象,从而识别到该元素。

本发明实施例识别元素所对应具有多层关联关系的对象,使得测试人员在测试过程中并不需要考虑元素所对应对象的层级关系,从而降低了自动化测试工具对于测试人员的操作技能要求。

在上述任一实施例的基础上,所述方法还包括:

若任一对象的识别属性为空,则根据识别属性为空的所述对象在预设元素库中具有关联关系的元素的识别属性来识别所述元素。

本发明实施例中所描述的任意任一对象可以是与元素具有直接关联关系的第一对象、与元素具关联关系的父对象、与元素的父元素具有直接关联关系的第三对象或从顶层到底层识别过程中任一层级中的对象。若此处描述的与元素具关联关系的父对象的识别属性为空,则查找该与元素具关联关系的父对象是否在预设元素库中具有关联关系的元素,若其存在具有关联关系的元素,则该元素的识别属性作为与元素具关联关系的父对象的识别属性,用以识别所述元素。

若此处所描述的第一对象的识别属性为空,则将该第一对象的识别属性替换为该第一对象在预设元素库中具有关联关系的元素的识别属性来识别所述元素。

若在识别到与元素具有直接关联关系对象的层级关系为多层,则需根据对象层级关系从顶层到底层逐层识别,在逐层识别的过程中,若发现识别过程中任一层级对象的识别属性为空,则将该对象的识别属性替换为该对象的预设元素库中具有直接关联关系元素的识别属性,以继续进行识别。

例如,如图2所示,元素库中的“搜索按钮”元素具有直接关联关系的对象是“searchbutton”,而元素“页面2”具有直接关联关系的对象是“page2”;而元素“搜索按钮”在该对象库中存在关联关系的父对象为“frame2”。

在自动化测试过程中,需要对元素库中页面1的“搜索按钮”这一元素进行操作,则需要对“搜索按钮”这一元素进行识别,该元素在其对应的预设对象库中存在具有直接关联关系的第一对象为“searchbutton”,且此时该第一对象的层级关系为多层。

然后,从该第一对象的层级关系的顶层至底层逐层识别,直至确定所述第一对象的层级关系底层对应的目标子对象。

具体地,根据通过各节点的父对象id、子对象id在其对应的预设对象库中查找该第一对象“searchbutton”的识别路径,确定searchbutton的识别路径为:浏览器2-page2-frame2-searchbutton。

通过对象库中各对象的唯一id,找到浏览器1对象,获取浏览器2的识别属性,通过该识别属性定位到浏览器2。

通过对象库中各对象的唯一id,找到page2对象,获取page2的识别属性,通过该识别属性定位到浏览器2-page2。

通过对象库中各对象的唯一id,找到frame2对象,获取frame2的识别属性,通过该识别属性定位到浏览器2-page2-frame2。

通过对象库中各对象的唯一id,找到searchbutton对象,获取searchbutton这一对象的识别属性为空,则使用该对象在其对应元素库中具有直接关联关系的元素“搜索按钮”的识别属性,通过该识别属性定位到浏览器2-page2-frame2-搜索按钮,从而完成对该元素的识别。

若识别到对象层级底层所对应目标子对象的识别属性为空,则根据目标子对象在预设元素库中具有关联关系元素的识别属性来识别该元素,若目标子对象在预设元素库中不存在具有关联关系的元素,则此时识别失败。

本发明实施例通过在识别过程中遭遇到任意对象的识别属性为空时,根据该对象在预设元素库中的元素的识别属性,来继续进行后续识别,保证了后续识别过程的顺利。

在上述实施例的基础上,在所述获取操作步骤序列中的元素之前,所述方法还包括:

将操作步骤序列中的各个可操作要素作为所述元素存储到预设元素库中。

具体的,在步骤s1前,该方法还包括,将操作步骤序列中的各个可操作且具有直接业务含义的要素作为该元素存储到预设元素库中。

预设元素库中存储了元素与预设对象库中对象的关联关系,元素与预设对象库中父对象的关联关系,元素的识别属性,元素与其父元素的关联关系。

预设元素库是由测试人员进行维护,测试人员将元素按照其对应的父元素进行分组管理,方便查找,例如这里的父元素可以是逻辑页面,这里的元素则是逻辑页面下的元素。

这里在识别元素前由测试人员将操作步骤序列中的各个可操作且具有直接业务含义的要素作为元素存储到预设元素库中,从而保证我们在识别过程中,不会出现识别的元素不在元素库中的情况,且测试人员也会在该元素库中存储元素与预设对象库中对象的关联关系。

本发明实施例通过在识别元素前,将操作步骤序列中的各个可操作且具有直接业务含义的要素作为元素存储到预设元素库中,保证了后续识别过程的顺利进行。

图5为本发明实施例提供的一种自动化测试元素的识别装置结构示意图,如图5所示,包括:获取装置501和识别装置502;其中,获取装置501获取操作步骤序列中的元素,所述元素是可操作且具有业务含义的;其中,识别装置502若在预设对象库中检测到与所述元素具有关联关系的第一对象,则将所述第一对象的识别属性作为所述元素的识别属性,以识别所述元素。

本发明实施例提供的一种自动化测试元素的识别装置是用于执行本发明上述各方法实施例,具体的流程和详细介绍请参照上述各方法实施例,此处不再赘述。

本发明实施例通过一种自动化测试元素的识别装置,自动识别测试人员所编写测试用例操作步骤序列中的元素在预设对象库中对应的对象,使得测试人员在测试过程中只需要关注测试用例操作步骤序列中的元素,从而降低了自动化测试工具对于测试人员的操作技能要求。

图6为本发明实施例提供的一种自动化测试元素的识别设备的结构示意图,如图6所示,该设备可以包括:

处理器(processor)610、通信接口(communicationsinterface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行如下方法:获取操作步骤序列中的元素,所述元素是可操作且具有业务含义的;

若在预设对象库中检测到与所述元素具有关联关系的第一对象,则将所述第一对象的识别属性作为所述元素的识别属性,以识别所述元素。

此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取操作步骤序列中的元素,所述元素是可操作且具有业务含义的;若在预设对象库中检测到与所述元素具有关联关系的第一对象,则将所述第一对象的识别属性作为所述元素的识别属性,以识别所述元素。

本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述实施例所提供的自动化测试元素的识别方法,例如包括:获取操作步骤序列中的元素,所述元素是可操作且具有业务含义的;若在预设对象库中检测到与所述元素具有关联关系的第一对象,则将所述第一对象的识别属性作为所述元素的识别属性,以识别所述元素。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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