一种用于用户界面测试的自动化辨色系统和方法与流程

文档序号:18969313发布日期:2019-10-28 23:47阅读:345来源:国知局
一种用于用户界面测试的自动化辨色系统和方法与流程

本发明涉及用户界面测试领域,并且特别涉及一种用于用户界面测试的自动化辨色系统和方法。



背景技术:

目前的安卓系统版本更新越来越快,版本功能界面也越来越复杂,有很多细小的控件和元素的颜色无法辨别,依靠传统的人工辨色效率低下,且无法准确判断。

在现有的安卓系统自动化测试中,依靠屏幕截图,进行图片颜色对比。将安卓系统运行时,需要的点位进行屏幕截图,和原有目标图片对比。此方法具有一定的误差,且效率较低。



技术实现要素:

本发明的目的在于提供一种用于用户界面测试的自动化辨色系统和方法以改进现有的图片对比方法中存在误差以及效率低下的缺陷。

本发明实施例提供一种用于用户界面测试的自动化辨色系统,包括:

控件颜色反射模块,用于利用反射机制从源代码中来获取控件颜色标准值;

数字辨色模块,用于对比运行中的控件的颜色值和所述控件颜色标准值。

优选地,所述控件颜色反射模块包括:

控件颜色属性添加单元,用于将待测控件的控件颜色属性添加到获取的控件属性中;

控件属性反射单元,用于利用所述反射机制来反射所述控件属性以获取所述待测控件的颜色属性值;

属性导出单元,用于将所述颜色属性值数字化得到所述控件颜色标准值,并将所述控件颜色标准值汇总到控件属性记录文档后导出。

优选地,所述控件颜色属性添加单元包括:

控件属性获取子单元,用于通过安卓自动化测试工具的封装类获取所述控件属性;

控件属性导入子单元,用于传入所需要获得的所述控件颜色属性,并导入继承所述封装类;

关联子单元,用于关联所述控件颜色属性和所述封装类。

优选地,所述控件属性反射单元包括:

根节点定位子单元,用于利用从所述封装类继承的定位方法来定位所述待测控件的根节点;

反射子单元,用于利用所述反射机制反射所述根节点,找到所述待测控件的所述颜色属性值。

优选地,当运行中的控件的所述颜色值和所述控件颜色标准值不同时,提示脚本运行错误。

本发明实施例还提供一种用于用户界面测试的自动化辨色方法,包括:

利用反射机制从源代码中来获取控件颜色标准值;以及

对比运行中的控件的颜色值和所述控件颜色标准值

优选地,在制作脚本时利用反射机制从源代码中来获取控件颜色标准值的所述步骤包括:

将待测控件的控件颜色属性添加到获取的控件属性中;

利用所述反射机制来反射所述控件属性以获取所述待测控件的颜色属性值;以及

将所述颜色属性值数字化得到所述控件颜色标准值,并将所述控件颜色标准值汇总到控件属性记录文档后导出。

优选地,将待测控件的控件颜色属性添加到获取的控件属性中的所述步骤包括:

通过安卓自动化测试工具的封装类获取所述控件属性;

传入所需要获得的所述控件颜色属性,并导入继承所述封装类;以及

关联所述控件颜色属性和所述封装类。

优选地,利用所述反射机制来反射所述控件属性以获取所述待测控件的颜色属性值的所述步骤包括:

利用从所述封装类继承的定位方法来定位所述待测控件的根节点;以及

利用所述反射机制反射所述根节点,找到所述待测控件的所述颜色属性值。

优选地,当运行中的控件的所述颜色值和所述控件颜色标准值不同时,提示脚本运行错误。

通过本发明提供的用于用户界面测试的自动化辨色系统和方法,在制作脚本时,利用JAVA反射机制,从代码设计程序中进行精准反射,以获取脚本中的控件的颜色属性,并进行数字化;由此,在运行时,利用数字化的控件颜色标准值与运行中的控件信息进行比对,即可发现运行中的控件的颜色是否正确。通过源代码反射获取控件颜色值,不存在误差;通过数字化对比,可以提高对比效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例提供的用于用户界面测试的自动化辨色系统的原理图。

图2为本发明第二实施例提供的用于用户界面测试的自动化辨色系统的原理图。

图3为本发明第三实施例提供的用于用户界面测试的自动化辨色方法的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例一

图1为本发明第一实施例提供的用于用户界面测试的自动化辨色系统的原理图。如图1所示,用于用户界面测试的自动化辨色系统包括控件颜色反射模块10和数字辨色模块20。其中,所述控件颜色反射模块10用于利用反射机制从源代码中来获取控件颜色标准值;所述数字颜色辨色模块20用于对比运行中的控件的颜色值和所述控件颜色标准值。具体地,在制作脚本时利用JAVA反射机制来获取脚本中的控件的控件颜色标准值;在运行时对比所述控件颜色标准值和运行中的控件信息,如果运行中的所述控件信息与所述控件颜色标准值不同,则提示脚本运行错误。

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

通过本实施例提供的用于用户界面测试的自动化辨色系统,在制作脚本时,利用JAVA反射机制,从代码设计程序中进行精准反射,以脚本中的控件的颜色属性,并进行数字化,得到控件颜色标准值;在运行时,利用数字化的控件颜色标准值与运行中的控件信息进行比对,即可发现运行中的控件的颜色是否正确。通过源代码反射获取控件颜色值,不存在误差;通过数字化对比,可以提高对比效率。

实施例二

图2为本发明第二实施例提供的用于用户界面测试的自动化辨色系统的原理图。

如图2所示,用于用户界面测试的自动化辨色系统包括用于利用反射机制从源代码中来获取控件颜色标准值的控件颜色反射模块10和用于对比运行中的控件的颜色值和所述控件颜色标准值的数字辨色模块20。

具体地,在本实施例中,控件颜色反射模块10包括:

控件颜色属性添加单元11,用于将待测控件的控件颜色属性添加到获取的控件属性中;

控件属性反射单元12,用于利用所述反射机制来反射所述控件属性以获取所述待测控件的颜色属性值;

属性导出单元13,用于将所述颜色属性值数字化得到所述控件颜色标准值,并将所述控件颜色标准值汇总到控件属性记录文档后导出。

在android开发中,在Activity layout界面中进行添加各种控件,比如Button、ImageView等等,每个控件都会有各种属性、坐标位置,包含类名称,字体内容,颜色属性等。我们这边就是要在通过安卓自动化测试工具uiautomator获取的属性中添加一个颜色属性。

因此,在本实施例中,所述控件颜色属性添加单元11包括:

控件属性获取子单元111,用于通过安卓自动化测试工具的封装类获取所述控件属性;

具体地,通过uiautomator的封装类进行获取控件的属性,然而获取的这些属性中,并无控件颜色(Activity Color)这一属性。

控件属性导入子单元112,用于传入所需要获得的所述控件颜色属性,并导入继承所述封装类;

具体地,在选取某一个Activity控件后,传入所需要获得的控件属性BackgroundColor,并导入SDK中的uiautomator的封装类,并继承该类。

关联子单元113,用于关联所述控件颜色属性和所述封装类;

具体地,利用UiObject类来关联所述控件颜色属性和所述封装类。UiObject类是uiautomator的一个父类(包含了所有的android控件信息的类),将BackgroundColor属性导入后,利用UiObject类将控件颜色属性和uiautomator封装类联系起来。

进一步地,在本实施例中,所述控件属性反射单元12包括:

根节点定位子单元121,用于利用从所述定位方法定位所述待测控件的根节点;

具体地,通过上一步骤关联,从uiautomator的封装类继承的QueryController来获得AccessibilityNodeInfo方法,通过AccessibilityNodeInfo方法能够定位该控件,得到用户指定控件的根节点。

反射子单元122,用于利用所述反射机制反射所述根节点,找到所述待测控件的所述颜色属性值。

具体地,用从uiautomator得到继承来的QueryController获得AccessibilityNodeInfo根节点对象,通过反射AccessibilityNodeInfo根节点,找出用户所需的控件的颜色属性。

进一步地,在找到用户所需的控件的颜色属性值后,属性导出单元13将其数字化,然后汇总到window_dump.xml文件中(uiautomator界面记录所有控件属性的文档)。在Android系统中,每一个页面,都会生成一个window_dump.xml属性,记录当前UI界面所有的控件属性。通过先前的汇总,window_dump.xml文件中已有控件的颜色属性值,这样,在运行时,可通过控件属性记录文档直接获取需要的控件颜色标准值。

进一步地,通过控件颜色反射模块10,在制作脚本时,记录好控件的颜色属性,得到数字化的控件颜色标准值(例如,0*FFFF00);在运行时,数字辨色模块20就可根据控件颜色标准值去对比是否和运行中的颜色相同,如果不同则提示产生异常。

有利地,通过本实施例提供的用于用户界面测试的自动化辨色系统,在制作脚本时,利用JAVA反射机制,从代码设计程序中进行精准反射,以获取脚本中的控件的颜色属性,并进行数字化;由此,在运行时,利用数字化的控件颜色标准值与运行中的控件信息进行比对,即可发现运行中的控件的颜色是否正确。通过源代码反射获取控件颜色值,不存在误差;通过数字化对比,可以提高对比效率。

实施例三

图3为本发明第三实施例提供的用于用户界面测试的自动化辨色方法的流程示意图。如图3所示,用于用户界面测试的自动化辨色方法包括以下步骤:

步骤S1:利用反射机制从源代码中来获取控件颜色标准值;

具体地,在本实施例中,步骤S1包括以下子步骤:

步骤S11:将待测控件的控件颜色属性添加到获取的控件属性中;

步骤S12:利用所述反射机制来反射所述控件属性以获取所述待测控件的颜色属性值;以及

步骤S13:将所述颜色属性值数字化得到所述控件颜色标准值,并将所述控件颜色标准值汇总到控件属性记录文档后导出。

进一步地,步骤S11包括以下子步骤:

步骤S111:通过安卓自动化测试工具的封装类获取所述控件属性;

步骤S112:传入所需要获得的所述控件颜色属性,并导入继承所述封装类;以及

步骤S113:关联所述控件颜色属性和所述封装类。

进一步地,步骤S12包括以下子步骤:

步骤S121:利用从所述封装类继承的定位方法定位所述待测控件的根节点;以及

步骤S122:利用所述反射机制反射所述根节点,找到所述待测控件的所述颜色属性值。

步骤S2:对比运行中的控件的颜色值和所述控件颜色标准值。

进一步地,当运行中的控件的所述颜色值和所述控件颜色标准值不同时,提示脚本运行错误。

具体地,在本实施例中,在选取某一个Activity控件后,传入所需要获得的控件属性BackgroundColor,并导入SDK中的uiautomator封装类,并继承该类;将BackgroundColor属性导入后,利用UiObject类将控件颜色属性和uiautomator封装类联系起来;通过上一步骤关联,能从uiautomator得到继承来的AccessibilityNodeInfo方法,能得到用户指定控件的根节点(通过它能定位该控件);用从uiautomator得到继承来的QueryController获得AccessibilityNodeInfo根节点对象,通过反射AccessibilityNodeInfo根节点,找出用户所需的控件的颜色属性;在找到用户所需的控件的颜色属性值后,将其数字化,然后汇总到window_dump.xml文件中;通过先前的汇总,window_dump.xml文件中已有控件的颜色属性值,这样,在运行时,可通过控件属性记录文档直接获取需要的控件颜色标准值。

有利地,通过本实施例提供的用于用户界面测试的自动化辨色方法,在制作脚本时,利用JAVA反射机制,从代码设计程序中进行精准反射,以获取脚本中的控件的颜色属性,并进行数字化;由此,在运行时,利用数字化的控件颜色标准值与运行中的控件信息进行比对,即可发现运行中的控件的颜色是否正确。通过源代码反射获取控件颜色值,不存在误差;通过数字化对比,可以提高对比效率。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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