技术领域
本发明属于图形用户界面自动化测试技术领域,具体涉及一种基于多种定位方法的图形用户界面自动化测试方法。
背景技术
用户界面自动化测试是将人为测试转化为机器执行的过程,通过对用户界面各个元素的定位来模拟鼠标实现单击、右击、拖拽等用户操作,并通过测试程序对预期结果的判断,实现对待测应用的自动化测试,其中定位技术是自动化测试实现的关键技术。
已知的现有自动化测试工具的定位方法比较单一,这种单一的定位方法容易受到其他因素干扰。比如通过元素的按钮属性来进行定位,在实际测试过程对应用的底层编写要求较高,往往捕捉不到部分按钮的属性,甚至大部分的应用不能按照此类方法进行自动化测试,尤其在应用比较多样化的系统桌面环境当中。目前的用户界面自动化测试大部分应用于windows应用以及web应用,有效应用于Linux操作系统的并不多,在国产Linux操作系统的发展日益壮大的今天,对于Linux操作系统UI层面的自动化测试需求也同样迫在眉睫。
现有的用户界面自动化测试技术大多适用于浏览器应用,即BS架构的应用,能够有效针对客户端应用(即CS架构应用)的自动化测试工具以及方法屈指可数。CS架构的应用相比BS架构应用来说,界面按钮往往更加繁复,浏览器应用往往底层代码比较统一,通常利用浏览器自有的工具就可以暴露其界面所有的元素属性。然而CS架构应用就相对复杂得多,不同软件可能由不同的编程语言来实现,需要借助不同的工具来暴露其元素属性。目前在国产化Linux操作系统中,对于用户界面的自动化测试工具、测试方法等可用资源非常有限。单一的测试工具并不能满足庞大的自动化测试需求。
中国发明专利“一种基于UI自动化测试定位元素的改进方法”(申请号CN201911026311.4)公开了一种UI自动化测试定位元素的改进方法,该方法包括:将参数定义在excel表格中,通过查找界面元素,找到可以唯一确定此元素的名称,添加至excel表格当中,然后根据type参数、index参数确定定位元素的方法。该发明只提出了一种在浏览器应用中的数据驱动测试的改进方法,但是该发明未解决在客户端应用中如何获取元素属性。
中国发明专利“基于UI的CS架构软件自动化测试方法及系统”(申请号CN201810282603.3)公开了一种基于UI的CS架构软件自动化测试方法及系统,该方法包括:识别被测软件各个部件的名称和标识信息形成描述文件;获取被测软件的运行环境数据;根据测试用例脚本的名称形成测试用例执行列表,根据列表中脚本名称顺序,执行用例脚本;调用校验结果脚本,生成被测软件的测试报告。该发明只提出了一种数据驱动测试CS架构应用的方法,但未解决在Linux系统上自动化测试定位失败如何处理的问题。
中国发明专利“一种GUI自动测试方法及系统”(申请号CN201710618522.1)公开了一种GUI自动化测试方法及系统,该方法包括:通过生成的测试用例解析出每个用例的自动化测试相关信息;创建/更新图片库;进行自动化测试得出结果图片,将图片与标准图片对比,得出测试结果。该发明只介绍了一种用图片进行测试结果断言与的方法,侧重点在于数据驱动,但是并没有解决执行自动化用例的过程中定位失败的问题。
中国发明专利“一种GUI自动化测试方法及系统”(申请号CN201610056854.0)公开了一种自动化测试方法及系统,先利用控件ID查找测试测试对象的多个待测试控件,对利用控件ID无法正常定位到的待测试控件进行第一标识,并基于所述第一标识查找利用控件ID无法正常定位到的待测试控件;对进行第一标识后仍无法正常定位的待测试控件进行第二标识,并基于所述第二标识查找进行第一标识后仍无法正常定位的待测试控件,最终基于查找到的待测试控件对所述测试对象进行自动化测试。逐次对待测试控件进行标识以使每个待测试控件均存在唯一标识,该发明解决了浏览器应用页面中控件不存在控件ID、控件ID全部一样或由于页面过于复杂无法查找控件的问题,但是并未解决非浏览器应用中定位控件失败的问题。
发明内容
为解决上述问题,本发明提供了一种基于多种定位方法的图形用户界面自动化测试方法,所述方法包括步骤:
识别待测试系统环境;
判断所述待测试系统环境是否满足测试要求;
若是,执行自动化测试脚本;
若否,退出所述待测试系统环境,并输出测试报告;
调用待测试元素对应的定位库;
使用所述定位库中的多种定位方法进行元素定位;
根据定位结果输出所述测试报告。
优选地,所述识别待测试系统环境包括步骤:
识别所述待测试系统的平台类型;
识别所述待测试系统的分辨率;
识别所述待测试系统的版本型号;
识别所述待测试系统的资源记录。
优选地,所述判断所述待测试系统环境是否满足测试要求包括步骤:
获取测试要求;
获取所述待测试系统的平台类型、分辨率、版本型号和资源记录;
判断所述平台类型、所述分辨率、所述版本型号和所述资源记录是否同时满足所述测试要求;
若是,判断所述待测试系统环境满足所述测试要求;
若否,判断所述待测试系统环境不满足所述测试要求。
优选地,在所述识别待测试系统环境之前还包括步骤:
设置所述测试要求;
编写所述自动化测试脚本;
创建所述待测试元素对应的定位库;
在所述定位库中添加图片名称定位方法、按钮名称定位方法和窗口地址定位方法;
获取所述待测试元素的元素属性值;
将所述元素属性值依次按照所述图片名称定位方法、所述按钮名称定位方法和所述窗口地址定位方法存储,并依次得到图片名称标签、按钮名称标签和窗口地址标签;
将所述图片名称标签、所述按钮名称标签和所述窗口地址标签依次放入空集中,并得到所述待测试元素对应的全局标签。
优选地,所述使用所述定位库中的多种定位方法进行元素定位包括步骤:
获取所述定位库中的窗口地址定位方法、图片名称定位方法和按钮名称定位方法;
使用所述窗口地址定位方法对待测试元素进行定位;
判断所述窗口地址定位方法是否成功定位;
若是,继续使用所述图片名称定位方法对所述待测试元素进行定位;
若否,保存日志,终止当前用例测试;
判断所述图片名称定位方法是否成功定位;
若是,结束当前定位操作,继续当前用例测试;
若否,保存日志,使用所述按钮名称定位方法对所述待测试元素进行定位;
判断所述按钮名称定位方法是否成功定位;
若是,结束当前定位操作,继续当前用例测试;
若否,保存日志,终止当前用例测试。
优选地,所述使用所述窗口地址定位方法对待测试元素进行定位包括步骤:
调用所述待测试元素对应的全局标签中的窗口地址标签;
判断是否成功获取所述待测试元素所属窗口的窗口地址;
若是,判断所述窗口地址定位方法成功;
若否,判断所述窗口地址定位方法失败。
优选地,所述使用所述图片名称定位方法对所述待测试元素进行定位包括步骤:
调用所述待测试元素对应的全局标签中的图片名称标签;
判断是否成功获取所述待测试元素所属图片的图片名称;
若是,判断所述图片名称定位方法成功;
若否,判断所述图片名称定位方法失败。
优选地,所述使用所述按钮名称定位方法对所述待测试元素进行定位包括步骤:
调用所述待测试元素对应的全局标签中的按钮名称标签;
判断是否成功获取所述待测试元素所属按钮的按钮名称;
若是,判断所述按钮名称定位方法成功;
若否,判断所述按钮名称定位方法失败。
本申请提供的一种基于多种定位方法的图形用户界面自动化测试方法具有如下有益效果:
(1)可应用于国产银河麒麟操作系统,丰富了Linux操作系统图形用户界面自动化测试技术的使用对象;
(2)采用图形用户界面定位方式,增强了脚本可移植性,在arm、x86等架构上也可运行,拓展了测试方法的使用范围;
(3)采用多种定位方法配合使用,有效避免了测试的“杀虫剂”效应,降低测试过程中定位失败率,从而提高了测试执行率;
(4)测试方法覆盖面广,满足待测软件的多样性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种基于多种定位方法的图形用户界面自动化测试方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
如图1,在本申请实施例中,本发明提供了一种基于多种定位方法的图形用户界面自动化测试方法,所述方法包括步骤:
S1:识别待测试系统环境;
S2:判断所述待测试系统环境是否满足测试要求;
S3:若是,执行自动化测试脚本;
S4:若否,退出所述待测试系统环境,并输出测试报告;
S5:调用待测试元素对应的定位库;
S6:使用所述定位库中的多种定位方法进行元素定位;
S7:根据定位结果输出所述测试报告。
当使用此基于多种定位方法的图形用户界面自动化测试方法对待测试系统环境中的图形用户界面进行自动化测试操作时,首先识别待测试系统环境,并判断所述待测试系统环境是否满足测试要求;当满足测试要求时,执行自动化测试脚本,对待测试系统进行自动化测试;当不满足测试要求时,退出所述待测试系统环境,并输出测试报告;当执行自动化测试脚本时,具体地,调用待测试元素对应的定位库,然后使用所述定位库中的多种定位方法进行元素定位,并最终根据定位结果输出所述测试报告。
在本申请实施例中,本发明提供的一种基于多种定位方法的图形用户界面自动化测试方法可以应用于Linux系统上,特别是国产银河麒麟操作系统上。
在本申请实施例中,步骤S1中的识别待测试系统环境包括步骤:
识别所述待测试系统的平台类型;
识别所述待测试系统的分辨率;
识别所述待测试系统的版本型号;
识别所述待测试系统的资源记录。
在本申请实施例中,识别待测试系统环境包括识别待测试系统的平台类型、分辨率、版本型号和资源记录。具体地,某些平台无法顺利地支撑自动化测试的运行,而识别待测试系统的平台类型就是为了降低由于平台的不匹配而导致自动化测试操作无法顺利运行而输出错误报告的发生几率,平台类型可以为arm、x86等;分辨率识别是为了防止在利用图片和坐标对待测试元素进行定位时由于分辨率低于要求而导致定位不准确;版本型号识别是考虑到不同版本型号的系统界面会有差异;而系统资源记录是用于记录自动化测试前后系统各项资源的变化,避免由于某些资源在测试前后由于发生变化而测试报告上并未客观体现此变化的情况发生,可以提升对待测试系统的整体考量。
在本申请实施例中,步骤S2中的判断所述待测试系统环境是否满足测试要求包括步骤:
获取测试要求;
获取所述待测试系统的平台类型、分辨率、版本型号和资源记录;
判断所述平台类型、所述分辨率、所述版本型号和所述资源记录是否同时满足所述测试要求;
若是,判断所述待测试系统环境满足所述测试要求;
若否,判断所述待测试系统环境不满足所述测试要求。
在本申请实施例中,测试要求可以根据测试者的个人偏好自行设置,或者根据自动化测试脚本的顺利运行要求而按照要求设置,当判断待测试系统环境是否满足所述测试要求时,首先需要获取待测试系统环境的平台类型、分辨率、版本型号和资源记录,然后与测试要求中设置的平台类型、分辨率、版本型号和资源记录分别一一对应比对,当四项同时符合要求时,则认为所述待测试系统环境满足所述测试要求;当四项中有任意一项不符合要求,则认为所述待测试系统环境不满足所述测试要求。
在本申请实施例中,在步骤S1中的识别待测试系统环境之前还包括步骤:
设置所述测试要求;
编写所述自动化测试脚本;
创建所述待测试元素对应的定位库;
在所述定位库中添加图片名称定位方法、按钮名称定位方法和窗口地址定位方法;
获取所述待测试元素的元素属性值;
将所述元素属性值依次按照所述图片名称定位方法、所述按钮名称定位方法和所述窗口地址定位方法存储,并依次得到图片名称标签、按钮名称标签和窗口地址标签;
将所述图片名称标签、所述按钮名称标签和所述窗口地址标签依次放入空集中,并得到所述待测试元素对应的全局标签。
在本申请实施例中,在进行待测试系统环境的识别之前,需要设置测试要求、编写自动化测试脚本、创建待测试元素对应的定位库,以及在定位库中设置多种定位方法。具体地,多种定位方法包括:图片名称定位方法、按钮名称定位方法和窗口地址定位方法,然后获取待测试元素的元素属性值,并将所述元素属性值依次按照所述图片名称定位方法、所述按钮名称定位方法和所述窗口地址定位方法存储,并依次得到图片名称标签、按钮名称标签和窗口地址标签;接着将所述图片名称标签、所述按钮名称标签和所述窗口地址标签依次放入空集中,并得到所述待测试元素对应的全局标签。比如,现有一个待测试元素A,A对应的定位库中配置有图片名称定位方法、按钮名称定位方法和窗口地址定位方法,根据上述方法得到的图片名称标签、按钮名称标签和窗口地址标签分别依次为:
“Pic_name”:“tests/imgs/a.png”、“Button_name”:“文件”和“Win_id”:“123456”,而待测元素A的全局标签为:tag_A={“Pic_name”:“tests/imgs/a.png”、“Button_name”:“文件”和“Win_id”:“123456”}。
在本申请实施例中,步骤S6中的使用所述定位库中的多种定位方法进行元素定位包括步骤:
获取所述定位库中的窗口地址定位方法、图片名称定位方法和按钮名称定位方法;
使用所述窗口地址定位方法对待测试元素进行定位;
判断所述窗口地址定位方法是否成功定位;
若是,继续使用所述图片名称定位方法对所述待测试元素进行定位;
若否,保存日志,终止当前用例测试;
判断所述图片名称定位方法是否成功定位;
若是,结束当前定位操作,继续当前用例测试;
若否,保存日志,使用所述按钮名称定位方法对所述待测试元素进行定位;
判断所述按钮名称定位方法是否成功定位;
若是,结束当前定位操作,继续当前用例测试;
若否,保存日志,终止当前用例测试。
在本申请实施例中,当使用多种定位方法对待测试元素进行定位时,首先获取元素对应的定位库中的窗口地址定位方法、图片名称定位方法和按钮名称定位方法;然后使用所述窗口地址定位方法对待测试元素进行定位;当窗口地址定位方法完成后,判断所述窗口地址定位方法是否成功定位;如果窗口地址定位方法成功定位,则继续使用所述图片名称定位方法对所述待测试元素进行定位;如果窗口地址定位方法没有成功定位,则保存日志,终止当前用例测试;当图片名称定位方法完成后,判断所述图片名称定位方法是否成功定位;如果图片名称定位方法成功定位,则结束当前定位操作,继续当前用例测试;如果图片名称定位方法没有成功定位,则保存日志,使用所述按钮名称定位方法对所述待测试元素进行定位;当按钮名称定位方法完成后,判断所述按钮名称定位方法是否成功定位;如果按钮名称定位方法成功定位,则结束当前定位操作,继续当前用例测试;如果按钮名称定位方法没有成功定位,则保存日志,终止当前用例测试。
在本申请实施例中,所述使用所述窗口地址定位方法对待测试元素进行定位包括步骤:
调用所述待测试元素对应的全局标签中的窗口地址标签;
判断是否成功获取所述待测试元素所属窗口的窗口地址;
若是,判断所述窗口地址定位方法成功;
若否,判断所述窗口地址定位方法失败。
在本申请实施例中,当对待测试元素进行窗口地址定位方法时,首先调用待测试元素对应的全局标签中的窗口地址标签,也即调用“Win_id”:“123456”,然后判断待测试元素所属窗口的窗口地址是否成功获取,也即“123456”是否被成功获取,如果获取,则判断所述窗口地址定位方法成功;如果没有成功获取“123456”,则判断所述窗口地址定位方法失败。
在本申请实施例中,所述使用所述图片名称定位方法对所述待测试元素进行定位包括步骤:
调用所述待测试元素对应的全局标签中的图片名称标签;
判断是否成功获取所述待测试元素所属图片的图片名称;
若是,判断所述图片名称定位方法成功;
若否,判断所述图片名称定位方法失败。
在本申请实施例中,当对待测试元素进行图片名称定位方法时,首先调用待测试元素对应的全局标签中的图片名称标签,也即调用“Pic_name”:“tests/imgs/a.png”,然后判断待测试元素所属图片的图片名称是否成功获取,也即“tests/imgs/a.png”是否被成功获取,如果获取,则判断所述图片名称定位方法成功;如果没有成功获取“tests/imgs/a.png”,则判断所述图片名称定位方法失败。
在本申请实施例中,所述使用所述按钮名称定位方法对所述待测试元素进行定位包括步骤:
调用所述待测试元素对应的全局标签中的按钮名称标签;
判断是否成功获取所述待测试元素所属按钮的按钮名称;
若是,判断所述按钮名称定位方法成功;
若否,判断所述按钮名称定位方法失败。
在本申请实施例中,当对待测试元素进行按钮名称定位方法时,首先调用待测试元素对应的全局标签中的按钮名称标签,也即调用“Button_name”:“文件”,然后判断待测试元素所属按钮的按钮名称是否成功获取,也即“文件”是否被成功获取,如果获取,则判断所述按钮名称定位方法成功;如果没有成功获取“文件”,则判断所述按钮名称定位方法失败。
本申请提供的一种基于多种定位方法的图形用户界面自动化测试方法具有如下有益效果:
(1)可应用于国产银河麒麟操作系统,丰富了Linux操作系统图形用户界面自动化测试技术的使用对象;
(2)采用图形用户界面定位方式,增强了脚本可移植性,在arm、x86等架构上也可运行,拓展了测试方法的使用范围;
(3)采用多种定位方法配合使用,有效避免了测试的“杀虫剂”效应,降低测试过程中定位失败率,从而提高了测试执行率;
(4)测试方法覆盖面广,满足待测软件的多样性。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
机译: 基于中立网络运营将多种服务,楼宇自动化和家庭自动化服务与多种游戏进行集成的方法和系统
机译: 基于中立网络运营将多种服务,楼宇自动化和家庭自动化服务与多种游戏进行集成的方法和系统
机译: 用于注射多个禽蛋,将针尖定位以向内注射物质或从多个禽蛋中的每个禽蛋内的特定位置采集样品的方法,以及用于将物质注射到多个禽蛋中的装置家禽蛋,以及用于定位针尖以将一种物质注入多种生物禽蛋中特定位置或从其中去除生物材料的一种物质