发明内容
本申请实施例提供一种图像处理方法、装置及系统,能够提高浏览器兼容性测试的准确性。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供了一种图像处理方法,包括:测试装置获取第一界面图像和第二界面图像。其中,该第一界面图像为通过待测浏览器加载目标网页后显示的界面图像;该第二界面图像为通过基准浏览器加载目标网页后显示的界面图像。而后,测试装置将第一界面图像分割为n个子图,n为正整数。之后,测试装置根据预设的模板匹配算法确定n个模板中的m个匹配模板,m为大于或者等于0且小于或者等于n的整数。其中,该模板为子图,该匹配模板为与第二界面图像匹配的模板。然后,测试装置根据m个匹配模板确定第一界面图像与第二界面图像的匹配结果。该匹配结果包括第一界面图像与第二界面图像匹配,或者第一界面图像与第二界面图像不匹配。
也就是说,测试装置是根据第二界面图像上是否存在与第一界面图像上的子图一致的图像区域来确定两个界面图像是否匹配的,而与子图在第一界面图像上的具体的位置无关。在待测浏览器或基准浏览器由于自身添加了工具条等原因,导致目标网页的网页内容在第一界面图像和第二界面图像上的位置不同(例如错位)时,如果第一界面图像上的网页内容与第二界面图像上的网页内容一致,则第一界面图像上的网页内容包括的模板为匹配模板,测试装置可以根据匹配模板确定第一界面图像与第二界面图像匹配,从而确定待测浏览器与基准浏览器兼容,因而可以提高兼容性测试方法的准确度。
在一种可能的设计中,测试装置根据m个匹配模板确定第一界面图像与第二界面图像的匹配结果,具体包括:测试装置根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果,匹配面积为m个匹配模板的面积之和。
其中,匹配模板的数量m的值越大,可以表明第一界面图像的n个子图中与第二界面图像一致的子图越多,第一界面图像与第二界面图像的匹配的可能性也就越大。m个匹配模板的面积之和越大,即匹配面积越大,则第一界面图像与第二界面图像一致的区域越大,第一界面图像与第二界面图像的匹配的可能性也越大。因而,测试装置可以根据匹配模板的数量m是否较多和/或匹配面积是否较大,确定第一界面图像与第二界面图像是否匹配,从而确定待测浏览器与基准浏览器是否兼容。
在另一种可能的设计中,在测试装置根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果之前,该方法还包括:测试装置获取非匹配模板包括的元素的属性信息以及第二界面图像包括的元素的属性信息,非匹配模板为n个模板中与第二界面图像不匹配的模板。若第二界面图像包括的元素的属性信息中未包括非匹配模板包括的元素的属性信息,则测试装置确定非匹配模板为无效模板,n个模板中除无效模板以外的其他模板为有效模板。测试装置根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果,具体包括:测试装置根据匹配模板的数量m与有效模板的数量s的比值,和/或匹配面积与非匹配面积的比值,确定第一界面图像与第二界面图像的匹配结果,s为小于或者等于n的整数,非匹配面积为有效模板中所有非匹配模板的面积之和。
在该方案中,测试装置在确定无效模板后,可以在确定第一界面图像与第二界面图像是否匹配时,排除无效模板对界面图像匹配结果的影响。即测试装置可以不将无效模板作为判定第一界面图像和第二界面图像是否匹配的参考对象,而只根据有效模板确定第一界面图像与第二界面图像是否匹配。
在另一种可能的设计中,在测试装置将第一界面图像分割为n个子图之前,该方法还包括:测试装置对第一界面图像和第二界面图像分别进行灰度化处理,然后进行二值化处理,之后进行腐蚀处理和膨胀处理。
这样,测试装置可以在图像分割之前进行一些预处理,从而增强第一界面图像和第二界面图像上有效信息的可检测性,并对图像数据进行简化,为图像分割做准备。
在另一种可能的设计中,测试装置将第一界面图像分割为n个子图,具体包括:测试装置对第一界面图像进行边缘检测,以标识出第一界面图像上与相邻像素点的亮度差大于预设阈值的像素点;而后,根据与相邻像素点的亮度差大于预设阈值的像素点确定n个子图的轮廓,根据轮廓获得n个子图。
这样,测试装置可以根据第一界面图像上的图像特征自动获取轮廓内框选的n个子图,删除轮廓外的无效信息,从而将第一界面图像自动分割为n个子图。
在另一种可能的设计中,在测试装置确定第一界面图像与第二界面图像的匹配结果之后,该方法还包括:测试装置显示测试结果界面,测试结果界面包括第一界面图像、第二界面图像、匹配效果图和匹配结果。其中,匹配效果图用于在第二界面图像上标记出匹配模板对应的区域。
这样,可以方便测试人员观察第一界面图像上与第二界面图像一致的区域和与第二界面图像不一致的区域,验证导致界面图像不匹配的原因,便于优化和调整待测浏览器。
在另一种可能的设计中,在测试装置显示测试结果界面之后,该方法还包括:测试装置根据测试结果界面生成网页。
这样,可以方便用户或管理员查找、阅读和管理待测浏览器在加载目标网页时的测试结果。
在另一种可能的设计中,预设的模板匹配算法为线性算法。
这样,可以降低界面匹配过程中的计算复杂度,提高处理效率。
在另一种可能的设计中,在测试装置根据预设的模板匹配算法确定n个模板中的m个匹配模板时,测试装置确定n个模板中的第i个模板是否为匹配模板包括:测试装置根据预设的模板匹配算法确定第i个模板与第一搜索区域是否匹配,第i个模板的宽度为p个像素点高度为q个像素点,第一搜索区域为第二界面图像上以第j个像素点为参考点且宽度为p个像素点高度为q个像素点的区域,j为1到M之间的正整数,M为第二界面图像上的像素点的数量,且M为正整数;若第i个模板与第一搜索区域不匹配,且第二界面图像上存在以第j+1个像素点为参考点且宽度为p个像素点高度为q个像素点的第二搜索区域,则确定第i个模板与第二搜索区域是否匹配;若第i个模板与第一搜索区域不匹配,且第二界面图像上不存在以第j+1个像素点为参考点且宽度为p个像素点高度为q个像素点的第二搜索区域,则确定第i个模板与第二界面图像不匹配;若第i个模板与第一搜索区域匹配,则确定第i个模板与第二界面图像匹配。
这样,当测试装置根据第二界面图像上的某一个像素点确定一个模板与第二界面图像匹配后,就不再根据该像素点以后的其他像素点进行计算以确定该模板是否与第二界面图像匹配,而直接可以确定下一个模板是否与第二界面图像匹配,因而可以降低计算过程的复杂度,提高处理效率。
第二方面,本申请实施例提供了一种测试装置,包括:获取单元,用于获取第一界面图像和第二界面图像,第一界面图像为通过待测浏览器加载目标网页后显示的界面图像,第二界面图像为通过基准浏览器加载目标网页后显示的界面图像。分割单元,用于将第一界面图像分割为n个子图,n为正整数。确定单元,用于根据预设的模板匹配算法确定n个模板中的m个匹配模板,模板为子图,匹配模板为与第二界面图像匹配的模板,m为大于或者等于0且小于或者等于n的整数。确定单元还用于,根据m个匹配模板确定第一界面图像与第二界面图像的匹配结果,匹配结果包括第一界面图像与第二界面图像匹配,或者第一界面图像与第二界面图像不匹配。
在一种可能的设计中,确定单元具体用于:根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果,匹配面积为m个匹配模板的面积之和。
在另一种可能的设计中,获取单元还用于,在确定单元根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果之前,获取非匹配模板包括的元素的属性信息以及第二界面图像包括的元素的属性信息,非匹配模板为n个模板中与第二界面图像不匹配的模板。确定单元还用于,若第二界面图像包括的元素的属性信息中未包括非匹配模板包括的元素的属性信息,则确定非匹配模板为无效模板,n个模板中除无效模板以外的其他模板为有效模板。确定单元还用于,根据匹配模板的数量m与有效模板的数量s的比值,和/或匹配面积与非匹配面积的比值,确定第一界面图像与第二界面图像的匹配结果,s为小于或者等于n的整数,非匹配面积为有效模板中所有非匹配模板的面积之和。
在另一种可能的设计中,测试装置还包括处理单元,用于:在分割单元将第一界面图像分割为n个子图之前,对第一界面图像和第二界面图像分别进行灰度化处理、二值化处理、腐蚀处理和膨胀处理。
在另一种可能的设计中,分割单元具体用于:对第一界面图像进行边缘检测,以标识出第一界面图像上与相邻像素点的亮度差大于预设阈值的像素点;根据与相邻像素点的亮度差大于预设阈值的像素点确定n个子图的轮廓,根据轮廓获得n个子图。
在另一种可能的设计中,测试装置还包括显示单元,用于:在确定单元确定第一界面图像与第二界面图像的匹配结果之后,显示测试结果界面,测试结果界面包括第一界面图像、第二界面图像、匹配效果图和匹配结果。其中,匹配效果图用于在第二界面图像上标记出匹配模板对应的区域。
在另一种可能的设计中,测试装置还包括生成单元,用于:在显示单元显示测试结果界面之后,根据测试结果界面生成网页。
在另一种可能的设计中,预设的模板匹配算法为线性算法,确定单元在根据预设的模板匹配算法确定n个模板中的m个匹配模板时,确定n个模板中的第i个模板是否为匹配模板,具体包括:根据预设的模板匹配算法确定第i个模板与第一搜索区域是否匹配,第i个模板的宽度为p个像素点高度为q个像素点,第一搜索区域为第二界面图像上以第j个像素点为参考点且宽度为p个像素点高度为q个像素点的区域,j为1到M之间的正整数,M为第二界面图像上的像素点的数量,且M为正整数;若第i个模板与第一搜索区域不匹配,且第二界面图像上存在以第j+1个像素点为参考点且宽度为p个像素点高度为q个像素点的第二搜索区域,则确定第i个模板与第二搜索区域是否匹配;若第i个模板与第一搜索区域不匹配,且第二界面图像上不存在以第j+1个像素点为参考点且宽度为p个像素点高度为q个像素点的第二搜索区域,则确定第i个模板与第二界面图像不匹配;若第i个模板与第一搜索区域匹配,则确定第i个模板与第二界面图像匹配。
第三方面,本申请实施例提供了一种电子设备,包括一个或多个处理器和一个或多个存储器。该一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行上述任一方面任一项可能的设计中的图像处理方法。
第四方面,本申请实施例提供了一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述任一方面任一项可能的设计中的图像处理方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述任一方面任一项可能的设计中的图像处理方法。
第六方面,本申请实施例提供了一种测试系统,包括测试装置和加载装置;其中,加载装置用于,通过待测浏览器加载目标网页,显示第一界面图像,并将第一界面图像发送给测试装置。加载装置还用于,通过基准测浏览器加载目标网页,显示第二界面图像,并将第二界面图像发送给测试装置。测试装置用于:接收加载装置发送的第一界面图像和第二界面图像;将第一界面图像分割为n个子图,n为正整数;根据预设的模板匹配算法确定n个模板中的m个匹配模板,模板为子图,匹配模板为与第二界面图像匹配的模板,m为大于或者等于0且小于或者等于n的整数;根据m个匹配模板确定第一界面图像与第二界面图像的匹配结果,匹配结果包括第一界面图像与第二界面图像匹配,或者第一界面图像与第二界面图像不匹配。
在一种可能的设计中,测试装置用于根据m个匹配模板确定第一界面图像与第二界面图像的匹配结果,具体包括:根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果,匹配面积为m个匹配模板的面积之和。
在另一种可能的设计中,测试装置还用于:在根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果之前,获取非匹配模板包括的元素的属性信息以及第二界面图像包括的元素的属性信息,非匹配模板为n个模板中与第二界面图像不匹配的模板。若第二界面图像包括的元素的属性信息中未包括非匹配模板包括的元素的属性信息,则确定非匹配模板为无效模板,n个模板中除无效模板以外的其他模板为有效模板。测试装置用于根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果,具体包括:根据匹配模板的数量m与有效模板的数量s的比值,和/或匹配面积与非匹配面积的比值,确定第一界面图像与第二界面图像的匹配结果,s为小于或者等于n的整数,非匹配面积为有效模板中所有非匹配模板的面积之和。
在另一种可能的设计中,测试装置还用于,在确定第一界面图像与第二界面图像的匹配结果之后,显示测试结果界面,测试结果界面包括第一界面图像、第二界面图像、匹配效果图和匹配结果。其中,匹配效果图用于在第二界面图像上标记出匹配模板对应的区域。
在另一种可能的设计中,测试装置还用于,在显示测试结果界面之后,根据测试结果界面生成网页。
在另一种可能的设计中,测试装置还用于,在接收加载装置发送的第一界面图像和第二界面图像之前,将目标网页指示给加载装置。
在另一种可能的设计中,加载装置还用于,在加载目标网页之前,接收测试装置发送的目标网页的指示信息。
具体实施方式
为了便于理解,示例的给出了部分与本申请实施例相关概念的说明以供参考。如下所示:
浏览器:指可以显示网页服务器或者文件系统的超文本标记语言(hypertextmarkup language,HTML)文件、javascript文件或层叠样式表(cascading style sheets,CSS)文件等文件的内容,并让用户与这些文件交互的一种软件。
元素:超文本标记语言中,开始标签和结束标签之间的代码称为HTML元素。在通过浏览器显示的网页中,元素能够为用户提供一定的操作或用于显示一定内容。例如,该元素可以是图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏或Widget、弹窗或图片等。
网页:构成网站的基本单元,是承载各种网站应用的平台。网页内容通常是由网站开发者提供和设置的,浏览器需要准确地渲染网页内容中的各个元素,包括元素的大小、内容和方向(例如横向设置或纵向设置)等。但是允许浏览器在显示网页内容是额外增加一些工具条等内容。
模板匹配(template matching):模板就是一幅已知的图像区域,而模板匹配就是在一幅大图像上搜寻与已知的图像区域内容一致的目标图像。
线性运算:包括加法和数量乘法。
腐蚀(erode):是将灰度值小(比较暗)的区域增强扩展,可以用于去除比较亮的噪点。
膨胀(dilate):是将灰度值大(比较亮)的区域增强扩展,可以用于连通相似颜色或强度的区域。
开运算:先进行腐蚀再进行膨胀,可以用于消除灰度值高于其邻近点的孤立点。
闭运算:先进行膨胀再进行腐蚀,可以用于消除灰度值低于其邻近点的孤立点。
边缘检测:是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像上亮度变化明显的点。
图像锐化(image sharpening):补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空域处理和频域处理两类。图像锐化是为了突出图像上景物的边缘、轮廓,或某些线性目标要素的特征。该过程提高了景物边缘与周围像素之间的反差,因此也被称为边缘增强。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
本申请实施例提供了一种图像处理方法,可以应用于图2所示的测试系统200。如图2所示,该测试系统200包括测试装置201和加载装置202。加载装置202可以包括一个或多个设备,用于运行多个浏览器,并通过不同的浏览器加载同一网站的同一网页。其中,不同浏览器可以运行在加载装置202的同一设备上,也可以分别运行在加载装置202的不同设备上。测试装置201用于从加载装置202获取网页相关数据,例如加载网页时显示的界面图像以及网页上包括的元素的内容和属性信息等。
并且,加载装置202与测试装置201可以是同一设备,也可以是不同的设备。当加载装置202与测试装置201为不同设备时,测试装置201与加载装置202可以通过数据线或线缆等有线方式连接,也可以通过无线保真(wireless fidelity,wifi)、蓝牙或近场通信(nearfield communication,NFC)等无线方式连接。测试装置201可以通过与加载装置202之间的连接通道获取网页相关数据。
举例来说,测试装置201可以是台式计算机、平板电脑、桌面型电脑、笔记本电脑、手机或上网本等。加载装置202可以是手机、平板电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、手持计算机、上网本、个人数字助理(personal digitalassistant,PDA)、可穿戴电子设备或智能手表等。
示例性的,在本申请一些实施例中,测试装置201具体可以是笔记本电脑,加载装置202具体可以是手机,手机与笔记本电脑之间通过数据线连接。再示例性的,测试装置201与加载装置202可以是同一部台式计算机。再示例性的,测试装置201与加载装置202可以是同一部手机。
本申请实施例所涉及的待测浏览器和基准浏览器可以是基于各种操作系统(例如,Windows、Unix或Linux等)的浏览器。尤其的,待测浏览器和基准浏览器可以是基于移动设备的操作系统的浏览器,例如,这些操作系统可以包括安卓(Android)、iOS、windowsphone、Symbian、BlackBerry OS以及Windows mobile等。
如图3所示,图2中的测试装置101可以通过图3所示的计算机系统300来实现。计算机系统300包括至少一个处理器301,通信总线302,存储器303以及至少一个通信接口304。
处理器301可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线302可包括一通路,在上述组件之间传送信息。
通信接口304,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器303可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-onlymemory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器303用于存储执行本申请方案的应用程序代码,并由处理器301来控制执行。处理器301用于执行存储器303中存储的应用程序代码,以控制计算机系统300实现本申请下述实施例提供的图像处理方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器301可以包括一个或多个CPU,例如图3中的CPU0和CPU1,每个CPU可以支持多个虚拟CPU,虚拟CPU又称VCPU。
在具体实现中,作为一种实施例,计算机系统300可以包括多个处理器,例如图3中的处理器301和处理器307。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机系统300还可以包括输出设备305和输入设备306。输出设备305和处理器301通信,可以以多种方式来显示信息。例如,输出设备305可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备306和处理器301通信,可以以多种方式接受用户的输入。例如,输入设备306可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机系统300可以是一个通用通信设备或者是一个专用通信设备。本申请实施例不限定计算机系统300的类型。在具体实现中,计算机系统300可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digital assistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图3中类似结构的设备。计算机系统300中的各个部件可以同时部署在同一个计算机设备中,也可以部署在位于分布式系统中的不同计算机设备中。
以下将结合图2所示的测试系统,以笔记本电脑为测试装置,手机为加载装置为例,对本申请实施例提供的图像处理方法进行具体阐述。
参见图4,本申请实施例提供的图像处理方法可以包括:
401、测试装置获取第一界面图像和第二界面图像,第一界面图像为通过待测浏览器加载目标网页后显示的界面图像,第二界面图像为通过基准浏览器加载目标网页后显示的界面图像。
其中,基准浏览器可以是预设的浏览器,用于作为一个基准衡量待测浏览器对网页的显示结果是否准确。例如,基准浏览器可以是用户普遍认可的浏览器或者同一浏览器中已经商用的成熟版本。示例性的,基准浏览器可以是谷歌的Chrome浏览器。待测浏览器可以是浏览器厂商或手机厂商开发的新的浏览器或者需要被测试的现有浏览器。
具体的,测试装置可以指示加载装置需要加载的目标网页,例如测试装置可以将目标网页的网址发送给加载装置。加载装置可以通过待测浏览器加载目标网页,显示第一界面图像,并将第一界面图像发送给测试装置。加载装置还可以通过基准浏览器加载目标网页并显示第二界面图像,并将第二界面图像发送给测试装置。其中,该第一界面图像上显示的内容除了包括网站规定和维护的网页内容以外,还可以包括待测浏览器自身增加的工具条等内容。该第二界面图像上显示的内容除了包括网站规定和维护的网页内容以外,还可以包括基准浏览器自身增加的内容。
示例性的,当加载装置采用安卓操作系统时,加载装置可以通过uiautomator2工具获取第一界面图像和第二界面图像,进而将第一界面图像和第二界面图像发送给测试装置。
402、测试装置将第一界面图像分割为n个子图,n为正整数。
测试装置在获取第一界面图像之后,可以将第一界面图像分割为n个小的子图,该n个子图可以用于代表整个第一界面图像。其中,当n为1时,可以理解为整个第一界面图像为一个子图。
403、测试装置根据预设的模板匹配算法确定n个模板中的m个匹配模板,该模板为子图,匹配模板为与第二界面图像匹配的模板,m为大于或者等于0且小于或者等于n的整数。
其中,模板匹配是指在一幅大图像上搜寻目标。模板匹配算法可以有多种,例如平均绝对差(mean absolute differences,MAD)算法、绝对误差和(sum of absolutedifferences,SAD)算法、序贯相似性检测算法(sequential similarity detectionalgorithm,SSDA)、hadamard变换算法(sum of absolute transformed difference,SATD)算法、平均误差平方和算法(mean square differences,MSD)算法或归一化积相关算法(normalized cross correlation,NCC)等,本申请实施例不予一一列举。
在本申请实施例中,在将第一界面图像分割成n个子图之后,测试装置可以将每一个子图作为一个模板,并根据模板匹配算法,以像素点为单位,在第二界面图像上进行搜索,以确定第二界面图像上是否存在与模板对应的,满足模板匹配算法要求的图像区域,该图像区域为第二界面图像上与模板一致的图像区域。若第二界面图像上包含与某一模板一致的图像区域,则可以称为该模板与第二界面图像匹配,该模板可以称为匹配模板。通过该方式,测试装置可以在n个模板中确定m个匹配模板。此外,若第二界面图像上不存在与某一模板相一致的图像区域,则该模板可以称为非匹配模板。
示例性的,若第一界面图像501如图5中的(a)所示,第二界面图像502如图5中的(b)所示。第一界面图像501上包括模板503、模板505和模板507。测试装置根据模板匹配算法,以像素点为单位在第二界面图像502上进行搜索,确定第二界面图像502上存在满足模板匹配算法要求的,与模板503、模板505和模板507一致的图像区域,即测试装置确定模板503、模板505和模板507与第二界面图像502匹配。
对比图5中的(a)和(b)可知,第一界面图像501上的模板503与第二界面图像502上的图像区域504的大小、内容和方向相同;第一界面图像501上的模板505与第二界面图像502上的图像区域506的大小、内容和方向相同;第一界面图像501上的模板507与第二界面图像502上的图像区域508的大小、内容和方向相同。
此外,对比图5中的(a)和(b)可知,虽然测试装置可以根据模板匹配算法确定第二界面图像502上存在与模板503、模板505和模板507一致的图像区域,但模板503、模板505和模板507在第一界面图像501上的位置,与图像区域504、图像区域506和图像区域508在第二界面图像502上的位置不同。
也就是说,当第一界面图像上的一个模板与第二界面图像匹配时,第二界面图像上存在与该模板的内容、大小和方向一致的图像区域;但该图像区域在第二界面图像上的位置,与该模板在第一界面图像上的位置可能不同。
当n个模板中存在m个匹配模板时,可以理解为该m个匹配模板对应的第一界面图像上的子图存在于第二界面图像上,可以在第二界面图像上找到与该m个匹配模板一致的图像区域。也就是说,根据该m个匹配模板可以获知第一界面图像的子图与第二界面图像的一致性情况,即获知第一界面图像与第二界面图像的一致性情况。
另外,当n为1时,即第一界面图像整个归为一个子图,此时测试装置可以确定该子图是否与第二界面图像匹配。
404、测试装置根据m个匹配模板确定第一界面图像与第二界面图像的匹配结果,该匹配结果包括第一界面图像与第二界面图像匹配,或者第一界面图像与第二界面图像不匹配。
由于第一界面图像的子图与第二界面图像的一致性情况,可以用于表示第一界面图像上的网页内容与第二界面图像上的网页内容的一致性情况,因此,测试装置可以根据该m个匹配模板,即根据第一界面图像的子图与第二界面图像的一致性情况,确定第一界面图像与第二界面图像是否匹配。具体的,若第一界面图像上包括的子图与第二界面图像的一致性程度较高,则待测浏览器与基准浏览器兼容;若第一界面图像上包括的子图与第二界面图像的一致性程度较高,则待测浏览器与基准浏览器不兼容。
可见,在本申请实施例中,测试装置通过将待测浏览器对应的第一界面图像分割为n个子图,并将该子图作为模板来在第二界面图像上进行搜索,以确定第二界面图像上是否存在与模板一致的图像区域,从而确定第一界面图像与第二界面图像的一致性程度,进而根据该一致性程度确定第一界面图像与第二界面图像是否匹配,从而确定待测浏览器与基准浏览器是否兼容。
也就是说,测试装置是根据第二界面图像上是否存在与第一界面图像上的子图一致的图像区域来确定两个界面图像是否匹配的,而与子图在第一界面图像上的具体的位置无关。若第二界面图像上存在与子图的大小、内容和方向一样但位置不同的图像,则可以说明该子图与第二界面图像是一致的。这样,与现有技术中的测试方案相比,在待测浏览器或基准浏览器由于自身添加了工具条等原因,导致目标网页的网页内容在第一界面图像和第二界面图像上的位置不同(例如错位)时,如果第一界面图像上的网页内容与第二界面图像上的网页内容一致,则第一界面图像上的网页内容包括的模板为匹配模板,测试装置可以根据匹配模板确定第一界面图像与第二界面图像匹配,从而确定待测浏览器与基准浏览器兼容,因而可以提高兼容性测试方法的准确度。
在本申请实施例中,附图虽未示出,但在上述步骤404中,测试装置根据m个匹配模板确定第一界面图像与第二界面图像的匹配结果,具体可以包括:
4040、测试装置根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像的匹配结果,匹配面积为m个匹配模板的面积之和。
其中,匹配模板的数量m的值越大,可以表明第一界面图像的n个子图中与第二界面图像一致的子图越多,第一界面图像与第二界面图像的匹配的可能性也就越大。m个匹配模板的面积之和越大,即匹配面积越大,则第一界面图像与第二界面图像一致的区域越大,第一界面图像与第二界面图像的匹配的可能性也越大。因而,测试装置可以根据匹配模板的数量m是否较多和/或匹配面积是否较大,确定第一界面图像与第二界面图像是否匹配,从而确定待测浏览器与基准浏览器是否兼容。
示例性的,如图6所示,第一界面图像601为待测浏览器显示的界面图像,第二界面图像602为基准浏览器显示的界面图像。第一界面图像601上包括待测浏览器附加的广告603和虚线框内的页面内容604。与第二界面图像602上的页面内容605相比,第一界面图像601上的页面内容604的位置发生了偏移。测试装置通过上述方法确定虚线框中的模板为与第二界面图像602上的图像一致的匹配模板,匹配面积较大,测试装置确定第一界面图像601与第二界面图像602匹配,待测浏览器与基准浏览器兼容。可见,与图1所示的现有技术相比,在待测浏览器或基准浏览器由于自身添加了工具条等原因,导致目标网页的网页内容在第一界面图像和第二界面图像上的位置不同(例如错位)时,采用本申请实施例提供的方法可以通过模板匹配确定待测浏览器与基准浏览器兼容,从而提高兼容性测试的准确性。
在本申请实施例的一种具体实现方案中,参见图7,在上述步骤4040之前,该方法还可以包括:
4041、测试装置获取非匹配模板包括的元素的属性信息以及第二界面图像包括的元素的属性信息,非匹配模板为n个模板中与第二界面图像不匹配的模板。
具体的,测试装置可以在从加载装置获取第二界面图像时,从加载装置获取第二界面图像包括的所有元素的属性信息;或者,测试装置也可以在确定某一模板为非匹配模板后,从加载装置获取第二界面图像包括的所有元素的属性信息。测试装置可以在从加载装置获取第一界面图像时,从加载装置获取第一图像包括的所有元素的属性信息;或者,测试装置可以在确定某一模板为非匹配模板后,从加载装置获取第一界面图像包括的元素的属性信息或获取非匹配模板包括的元素的属性信息。
其中,元素的属性信息,即HTML元素属性,用于表明该元素的类型或作用,可以包含元素的类名(classname)、身份标识(identity,id)、格式、可点击性(clickable)以及文本信息(text)等。示例性的,图8中的(a)示出了第一界面图像801,图8中的(b)示出了第二界面图像802。与第二界面图像802相比,第一界面图像801上的模板803不存在于第二界面图像802上,第一界面图像801上的模板803为非匹配模板。非匹配模板803中的元素804用于承载网站推送的信息流,元素804的属性信息可以包括:classname:android.widget.FrameLayout;text:主题分享;clickable:false。
再示例性的,图9中的(a)示出了第一界面图像901,图9中的(b)示出了第二界面图像902。与第二界面图像902相比,第一界面图像901上的模板903不存在于第二界面图像902上,第一界面图像901上的模板903为非匹配模板。非匹配模板903中的元素904用于承载图片,元素904的属性信息可以包括:classname:android.view.View;text:Ai在“芯”里;clickable:true。
再示例性的,图10中的(a)示出了第一界面图像1001,图10中的(b)示出了第二界面图像1002。与第二界面图像1002相比,第一界面图像1001上的模板1003不存在于第二界面图像1002上,第一界面图像1001上的模板1003为非匹配模板。非匹配模板1003中的元素1004用于承载广告,元素1004的属性信息可以包括:classname:android.widget.FrameLayout;Description:未知;clickable:true。
实际上,由于网站的时效性较强,内容更新很频繁,动态广告(例如模板)、滚动播放的图片(例如模板)以及实时更新的信息流(例如模板),经常会导致待测浏览器第一界面图像与第二界面图像显示的结果不一致。
4042、若第二界面图像包括的元素的属性信息中未包括非匹配模板包括的元素的属性信息,则测试装置确定非匹配模板为无效模板,n个模板中除无效模板以外的其他模板为有效模板。
如果非匹配模板包括的元素的属性信息不在第二界面图像包括的元素的属性信息中,则可以说明基准浏览器的第二界面图像上根本不存在该非匹配模板中的元素,该非匹配模板为无效模板,该非匹配模板中的元素为无效元素。在第一界面图像的n个模板中,除无效模板以外的其他模板为有效模板。无效模板为非匹配模板,有效模板包括匹配模板和非匹配模板。
示例性的,在图8的(a)和(b)所示的情况下,第二界面图像802上不包括与非匹配模板803一致的图像区域,测试装置确定第二界面图像802包括的元素的属性信息中不包括元素804的属性信息,承载信息流的元素804对应的非匹配模板803为无效模板。
示例性的,在图9的(a)和(b)所示的情况下,第二界面图像902上不包括与非匹配模板903一致的图像区域,测试装置确定第二界面图像902包括的元素的属性信息中不包括元素904的元素信息,承载可滚动的图片的元素904对应的非匹配模板903为无效模板。
示例性的,在图10的(a)和(b)所示的情况下,第二界面图像1002上不包括与非匹配模板1003一致的图像区域,测试装置确定第二界面图像包括的元素的属性信息中不包括元素1004的属性信息,承载广告的元素1004对应的非匹配模板1003为无效模板。
此外,如果非匹配模板包括的元素的属性信息在第二界面图像包括的元素的属性信息中,则可以说明基准浏览器的第二界面图像上存在该非匹配模板中的元素,但该非匹配模板中的这些元素在第一界面图像上的渲染结果与在第二界面图像的渲染结果不一致,第二界面图像上不存在与该非匹配模板一致的图像区域,该非匹配模板为有效模板中的非匹配模板。
在步骤4041和步骤4042的基础上,上述步骤4040具体可以包括:
4043、测试装置根据匹配模板的数量m与有效模板的数量s的比值,和/或匹配面积与非匹配面积的比值,确定第一界面图像与第二界面图像的匹配结果,s为小于或者等于n的整数,非匹配面积为有效模板中所有非匹配模板的面积之和。
在确定无效模板后,测试装置可以在确定第一界面图像与第二界面图像是否匹配时,排除无效模板对界面图像匹配结果的影响。即测试装置可以不将无效模板作为判定第一界面图像和第二界面图像是否匹配的参考对象,而只根据有效模板确定第一界面图像与第二界面图像是否匹配。
示例性的,在确定第一界面图像与第二界面图像是否匹配时,测试装置可以不将上述非匹配模板803、非匹配模板903和非匹配模板1003作为参考因素,从而排除信息流不一致、图片滚动或广告等因素对界面图像匹配造成的影响,更为准确地确定第一界面图像与第二界面图像是否匹配,从而进一步提高兼容性测试的准确度。
具体的,测试装置可以记录匹配模板的数量、非匹配模板的数量、有效模板的数量以及无效模板的数量等信息,获取每个匹配模板的面积和每个非匹配模板的面积等信息,并根据匹配模板的数量m与有效模板的数量s的比值,和/或匹配面积与非匹配面积的比值,确定第一界面图像与第二界面图像的匹配结果。
其中,该确定方式具体可以有多种。例如,当匹配模板的数量m与有效模板的数量s的比值大于60%,且匹配面积与非匹配面积的比值大于1时,测试装置可以确定第一界面图像与第二界面图像匹配,从而可以确定待测试浏览器与基准浏览器兼容。
再例如,当匹配模板的数量m与有效模板中非匹配模板的数量的比值大于1,且匹配面积与非匹配面积及匹配面积之和的比值大于60%时,测试装置可以确定第一界面图像与第二界面图像匹配,从而可以确定待测试浏览器与目标浏览器兼容。
需要说明的是,步骤4043中的相关描述是以测试装置根据匹配模板的数量m与有效模板的数量s的比值,和/或匹配面积与非匹配面积的比值,确定第一界面图像与第二界面图像是否匹配为例进行说明的。在本申请实施例中,测试装置根据匹配模板的数量m和/或匹配面积,确定第一界面图像与第二界面图像是否匹配的方法可以有多种。例如,测试装置根据匹配模板的数量m与模板的总数量n的比值,匹配模板的数量m与非匹配模板的数量的比值,匹配模板的数量m与有效模板的数量s的比值,匹配模板的数量m与无效模板的数量的比值,匹配面积与非匹配面积的比值,匹配面积与第一界面图像总面积的比值,匹配面积与有效模板的面积之和的比值,或匹配面积与无效模板的面积之和的比值中的至少一种,确定第一界面图像与第二界面图像是否匹配。
由步骤4041-4043描述的方案可知,在本申请实施例提供的方案中,测试装置可以无需人工参与而自动确定动态广告、滚动播放的图片以及实时更新的信息流等对应的无效模板,确定出第一界面图像的无效区域,从而在确定界面图像的匹配结果和浏览器的兼容性时,排除无效模板和无效区域这些无效因素的影响,提高判定结果的准确性。而在现有兼容性测试方案中,更新的信息流、滚动的图片和广告等将会影响界面图像匹配结果的准确性,从而使得兼容性测试的准确性较低。
进一步地,在上述步骤402中将第一界面图像分割为n个子图之前,测试装置还可以对第一界面图像和第二界面图像进行预处理,以增强第一界面图像和第二界面图像上有效信息的可检测性,并对图像数据进行简化,为步骤402中从第一界面图像上检测轮廓并根据轮廓抠出子图从而实现图像分割做准备。其中,网页内容通常包含文字、图片和背景等信息。而文字、图片信息为用户关注的主要内容和关键信息,可以称为有效信息;背景信息可以称为无效信息。
具体的,参见图11,预处理操作可以包括:
405、测试装置对第一界面图像和第二界面图像分别进行灰度化处理。
其中,灰度化是指像素点的R值=G值=B值,彩色图像变成灰度图像。在灰度图像上,每个像素点只需一个字节存放灰度值(又称强度值或亮度值),而在RGB彩色图像上,每个像素点需要3个字节存放像素值(R值、G值和B值)。因此,灰度化处理可以减少第一界面图像和第二界面图像的数据量,降低图像数据的存储空间,提高处理效率。
406、在灰度化处理之后,测试装置对第一界面图像和第二界面图像分别进行二值化处理。
二值化处理是指将界面图像上的像素点的灰度值设置为0或255,界面图像上的像素点为黑色像素点或白色像素点。这样,可以使得界面图像呈现出明显的黑白效果,凸显界面图像上景物的轮廓,以方便后续测试装置根据轮廓划分子图。并且,二值化处理还可以减图像区域处理的数据量,提高处理效率。
407、在二值化处理之后,测试装置对第一界面图像和第二界面图像分别进行腐蚀处理和膨胀处理。
其中,腐蚀是将灰度值小(比较暗)的区域增强扩展,膨胀是将灰度值大(比较亮)的区域增强扩展。通过腐蚀、膨胀处理可以连通相似颜色或强度的区域,去除第一界面图像上比较亮的噪点和孤立的像素点,从而可以使图像轮廓更清晰,方便进行图像分割,提高分割的效率。
具体的,测试装置先进行腐蚀再进行膨胀(即开运算),可以消除高于其邻近点的孤立点;测试装置先进行膨胀再进行腐蚀(即闭运算),可以消除低于其邻近点的孤立点。
此外,在步骤407之后,测试装置还可以对第一界面图像和第二界面图像进行图像锐化,以补偿界面图像的轮廓,增强界面图像上景物的边缘及灰度跳变的部分,突出界面图像上景物的边缘、轮廓,提高景物边缘与周围像素之间的反差,以方便后续测试装置根据轮廓划分子图。并且,测试装置还可以去掉景物边缘以外的像素点信息,以减少待处理的数据量。
在步骤405-407的基础上,步骤402具体可以包括:
4021、测试装置对第一界面图像进行边缘检测,以标识出第一界面图像上与相邻像素点的亮度差大于预设阈值的像素点。
由于第一界面图像上同一景物的像素点的亮度变化较小,不同景物的像素点之间的亮度变化较大(即亮度变化明显),因而在上述预处理操作之后,测试装置可以根据预处理操作的结果对第一界面图像进行边缘检测,以标识出第一界面图像上与相邻像素点的亮度差大于预设阈值的像素点,这些像素点通常为第一界面图像上景、物图像的轮廓。并且,测试装置还可以剔除一些背景信息以及一些孤立的噪点等不相关信息,保留第一界面图像上有效信息的图像结构,降低待处理的数据量,减少测试过程的计算量。
4022、测试装置根据与相邻像素点的亮度差大于预设阈值的像素点确定n个子图的轮廓。
4043、测试装置根据轮廓获得n个子图。
在确定第一界面图像上与相邻像素点的亮度差大于预设阈值之后,测试装置可以根据与相邻像素点的亮度差大于预设阈值的像素点确定第一界面图像上多个景、物图像的轮廓。每个轮廓可以对应一个子图,该轮廓及该轮廓内部框选的范围即为该子图的范围。采用该种划分子图的方式,测试装置可以将第一界面图像划分为n个子图,并获得每个子图对应的轮廓和范围。对于第一界面图像上n个子图以外的部分,可能为背景部分的无效信息,测试装置不予进行匹配比对,而仅针对每个子图与第二界面图像进行匹配比对。
举例来说,采用Python语言编写的步骤405-407描述的预处理过程以及步骤4021-4023描述的图像分割过程的程序代码可以包括:
def get_sub_imgs(filename):
kernel=np.uint8(np.ones((3,3)))
#读入图片
src=cv2.imread(filename)
#图像灰度化
img=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
#膨胀图像
dilated=cv2.dilate(img,kernel)
#Sobel边缘检测
sobelX=cv2.Sobel(dilated,cv2.CV_64F,1,0)#x方向的梯度
sobelY=cv2.Sobel(dilated,cv2.CV_64F,0,1)#y方向的梯度
sobelX=np.uint8(np.absolute(sobelX))#x方向梯度的绝对值
sobelY=np.uint8(np.absolute(sobelY))#y方向梯度的绝对值
sobelCombined=cv2.bitwise_or(sobelX,sobelY)
#轮廓获取
image,contours,hier=
cv2.findContours(sobelCombined,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
sub_imgs=[]
for c in contours:
x,y,w,h=cv2.boundingRect(c)
sub_imgs.append((x,y,w,h))
return sub_imgs
由上述步骤405-407以及步骤4021-4023可知,测试装置可以根据第一界面图像上的图像特征自动,获取轮廓内框选的n个子图,删除轮廓外的无效信息,从而将第一界面图像自动分割为n个子图,整个图像分割过程中不需要人为的设置和参与(例如不需要人工划分子图或者预设子图的大小范围)。并且,在第一界面图像包括的n个子图中,不同子图之间的大小可以相同也可以不同,不同子图之间可以是连续的也可以是分离的。
进一步地,在本申请实施例中,附图虽未示出,但在上述步骤404之后,该方法还可以包括:
408、测试装置显示测试结果界面,该测试结果界面中包括匹配效果图和匹配结果,还可以包括第一界面图像和第二界面图像。
其中,匹配结果用于表示第一界面图像与第二界面图像匹配,或者第一界面图像与第二界面图像不匹配。匹配效果图用于表示第一界面图像与第二界面图像的匹配效果。例如,匹配效果图具体可以用于在第二界面图像上标记出第一界面图像上匹配模板对应的区域。其中,第一界面图像上匹配模板对应的区域是指,第二界面图像上与匹配模板中的内容相一致的图像区域。测试装置显示匹配效果图和匹配结果可以方便测试人员观察第一界面图像上与第二界面图像匹配的区域和与第二界面图像不匹配的区域,验证导致界面图像不匹配的原因,便于优化和调整待测浏览器。此外,匹配效果图中还可以包括第一界面图像上的非匹配模板在第二界面图像上的对应位置。具体的,测试装置可以对非匹配模板统一进行标记;或者,测试装置还可以将有效模板中的非匹配模板与无效模板对应的非匹配模板进行区别标记。
例如,在一种具体实现方式中,测试结果界面包括第一界面图像、第二界面图像、匹配效果图和匹配结果。示例性的,图12给出了一种测试结果界面1200,测试结果界面1200上包括如图12中的(a)所示的第一界面图像1201、如图12中的(b)所示的第二界面图像1202、如图12中的(c)所示的匹配效果图1203和如图12中的(d)所示的匹配结果1204。在如图12中的(c)中所示的匹配效果图1203中,黑色填充区域用于标记匹配模板对应的区域,表示第一界面图像上与第二界面图像上显示内容一致的部分;未进行黑色填充的区域表示匹配模板以外的非匹配区域。前述的填充方式只是一种举例,还可以采取其他填充方式,将匹配区域与非匹配区域进行区分显示。
在上述步骤408之后,该方法还可以包括:
409、测试装置根据测试结果界面生成网页。
在显示测试结果界面之后,测试装置还可以根据测试结果界面生成网页。例如,测试装置可以根据测试结果界面生成静态网页,方便测试人员查找和管理待测浏览器在加载目标网页时的测试结果。或者,测试装置可以根据测试结果界面生成网页和网址;这样,用户或管理员通过点击网址就可以打开待测浏览器在加载目标网页时的测试结果,从而可以方便测试人员查找和管理待测浏览器在加载目标网页时的测试结果。
在本申请其他一些实施例中,测试装置还可以在测试过程中对相关处理结果及时进行显示,以方便测试人员实时查看处理情况和处理结果。例如,在测试装置通过上述步骤401从加载装置获取第一界面图像和第二界面图像之后,测试装置可以在显示屏上显示第一界面图像和第二界面图像。其中,第一界面图像可以为图12的(a)中显示的界面图像1201,第二界面图像可以为图12的(b)中显示的界面图像1202。在通过上述步骤402完成图像分割后,如图13中的(a)所示,测试装置可以在显示屏上显示第一界面图像分割成n个子图后呈现的分割效果图1301。其中,分割效果图1301上可以包括多个子图对应的多个模板,例如包括模板1302。此外,测试装置还可以显示匹配效果图,并在确定一个模板是否为匹配模板后在匹配效果图上标记该模板。例如,参见图13中的(b),当测试装置确定模板1302为匹配模板时,测试装置可以在匹配效果图1303上对该模板1302对应的区域进行黑色填充。在确定所有n个子图是否为匹配模板后,测试装置还可以在显示屏上显示第一界面图像与第二界面图像的匹配结果。此时,测试装置显示的包括匹配结果的显示界面可以为图12所示的测试结果界面。
此外,可选地,在本申请实施例中,上述预设的模板匹配算法可以为线性算法。例如,该模板匹配算法可以是SSDA算法或SAD算法等。当预设的模板匹配算法为线性算法时,可以降低界面匹配过程中的计算复杂度,提高处理效率。
在上述步骤403中,测试装置可以分别判断第一界面图像上的n个模板中的每个模板是否与第二界面图像匹配。若测试装置确定n个模板中的第i个模板与第二界面图像匹配,则电子设备可以继续判断第i+1个模板是否与第二界面图像匹配;直到测试装置判断完成第n个模板是否与第二界面图像匹配,从而得到n个模板中与第二界面图像匹配的m个匹配模板。
具体的,测试装置确定n个模板中的第i个模板是否与第二界面图像匹配包括:
4031、测试装置根据预设的模板匹配算法确定第i个模板与第一搜索区域是否匹配,第i个模板的宽度为p个像素点高度为q个像素点,第一搜索区域为第二界面图像上以第j个像素点为参考点且宽度为p个像素点高度为q个像素点的区域,j为1到M之间的正整数,M为第二界面图像上的像素点的数量,且M为正整数。
示例性的,第i个模板可以为图15中的(a)所示的区域1501,区域1501包括p*q个小方格,表示p*q个像素点。以第j个像素点为参考点且宽度为p个像素点高度为q个像素点的第一搜索区域是指,以第j个像素点为左上角的像素点且大小为p*q的图像区域。示例性的,第一搜索区域可以为图15中的(b)所示的区域1502,区域1502包括p*q个小方格,表示p*q个像素点。
示例性的,测试装置可以采用SSDA算法,根据以下式2和参考点计算第i个模板与搜索区域的匹配误差,从而确定第i个模板是否与搜索区域匹配。
在式2中,p表示第i个模板的宽度(以像素点为单位),q表示第i个模板的高度(以像素点为单位)。(u,v)表示第二界面图像上的参考点即第j(序号)个像素点的坐标。(k,e)表示第i个模板中像素点的坐标。该坐标用于表示某个像素点在整个界面图像上的位置。(k+u-1,e+v-1)表示以参考点为左上角的像素点且大小为p*q的第一搜索区域中,与第i个模板中的像素点(k,e)对应的像素点的坐标。示例性的,在图15的(b)所示的第一搜索区域1502中,像素点(k+u-1,e+v-1)与第i个模板中的像素点(k,e)对应。
t(k,e)表示第i个模板上的像素点(k,e)的特征值,f(k+u-1,e+v-1)表示第二界面图像上与像素点(k,e)对应的像素点的特征值。其中,该特征值具体可以是像素点的像素值或灰度值等。w(u,v)表示匹配误差,具体表示第i个模板与第二界面图像上以像素点(u,v)为左上角的像素点且大小为p*q的搜索区域中,相对应的像素点的特征值的差值的总和。
并且,第二界面图像上像素点序号的编号方法可以为,从第二界面图像最上边的第一行的像素点开始编号,在第一行像素点中采用从左往右的顺序对像素点进行编号;第一行像素点编号完成之后,按照从左往右的顺序继续对从上边数第二行中的像素点进行编号,直到完成对界面图像最下边一行像素点的编号。
若根据第j个像素点(即参考点)计算获得的匹配误差w(u,v)的值小于或者等于第一预设值,则可以表明第i个模板与第二界面图像上的第一搜索区域的匹配误差较小,第i个模板与第一搜索区域匹配;若根据第j个像素点(即参考点)计算获得的匹配误差w(u,v)的值大于第一预设值,则可以表明第i个模板与第二界面图像上的第一搜索区域的匹配误差较大,第i个模板与第一搜索区域不匹配。
4032、若第i个模板与第一搜索区域不匹配,且第二界面图像上存在以第j+1个像素点为参考点且宽度为p个像素点高度为q个像素点的第二搜索区域,则测试装置确定第i个模板与第二搜索区域是否匹配。
若第i个模板与第一搜索区域不匹配,且第二界面图像上存在以第j+1个像素点为参考点且大小为p*q的第二搜索区域,例如第二搜索区域为如图15中的(c)所示的实线区域1503,则测试装置可以继续确定第i个模板与第二搜索区域是否匹配。
4033、若第i个模板与第一搜索区域不匹配,且第二界面图像上不存在以第j+1个像素点为参考点且宽度为p个像素点高度为q个像素点的第二搜索区域,则测试装置确定第i个模板与第二界面图像不匹配。
若第i个模板与第一搜索区域不匹配,且第二界面图像上存在以第j+1个像素点为参考点且大小为p*q的第二搜索区域,例如,如图15的(d)所示的实线区域1504所示,当以第j+1个像素点为左上角的像素点时,第二界面图像上参考点右下方的区域的大小小于p*q,不足以形成一个搜索区域,且第i个模板与之前的搜索区域均不匹配,此时测试装置可以确定第二界面图像上不存在与第i个模板匹配的图像区域,第i个模板与第二界面图像不匹配。
4034、若第i个模板与第一搜索区域匹配,则测试装置确定第i个模板与第二界面图像匹配。
若第i个模板与第一搜索区域匹配,则第二界面图像上存在与第i个模板一致的图像区域,该图像区域即为第一搜索区域,那么第i个模板与第二界面图像匹配。
需要说明的是,当测试装置根据第二界面图像上的第j个像素点确定第i个模板与第二界面图像匹配后,不再根据该像素点以后的其他像素点计算匹配误差从而继续判断第i模板是否与第二界面图像匹配,而直接可以确定下一个模板(即第i+1个模板)是否与第二界面图像匹配。也就是说,在确定一个模板是否与第二界面图像匹配时,通常不需要根据上述式2计算所有的M个像素点对应的w(u,v),而只需要根据上述式2计算M个像素点中的部分像素点就可以确定一个模板是否与第二界面图像匹配,因而可以降低计算过程的复杂度,提高处理效率。
此外,还需要说明的是,以上是参考点为搜索区域的左上角的像素点为例进行说明的,参考点也可以为搜索区域中其他像素点,例如还可以为搜索区域右下角或左下角的像素点等。其中,若参考点为搜索区域右下角的像素点的坐标,则第二界面图像上像素点序号的编号方法可以为,从第二界面图像最下边的第一行开始编号,在第一行中采用从右往左的顺序对像素点进行编号;第一行像素点编号完成之后,按照从左往右的顺序继续对从下边数第二行中的像素点进行编号,直到完成对界面图像最上边一行像素点的编号。
并且,当采用线性的模板匹配算法时,测试装置确定第一界面图像与第二界面图像是否匹配的计算复杂度小于n*M;而现有技术提供的测试方法的计算复杂度为M2。可见,与现有技术相比,本申请实施例提供的方案可以降低计算复杂度,减少计算量和计算时间,节省计算资源,提高处理效率。
举例来说,采用Python语言编写的步骤403描述的模板匹配过程的程序代码可以包括:
def find_template(img_file,template_file,threshold=0.9):
#读取灰度化后的第二界面图像与模板
img=cv2.imread(img_file,0)
template=cv2.imread(template_file,0)
w,h=template.shape[::-1]
#目标匹配
res=cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)
if cv2.minMaxLoc(res)[1]>threshold:
pass
else:
return False
#获取匹配的最佳结果
min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(res)
top_left=max_loc
return(top_left[0],top_left[1],w,h)
需要说明的是,以上是以待测浏览器和基准浏览器加载一个目标网站的一个目标网页为例对待测浏览器的兼容性测试进行说明的。在本申请其他一些实施例中,测试装置通过测试预设的R(大于1的整数)个甚至海量的目标网站的目标网页来确定待测浏览器的兼容性。其中,对于预设的R个目标网页中的每个目标网页,测试装置都可以采用本申请上述实施例提供的方法进行测试。例如,测试装置可以测试用户访问频率最高或访问次数最多的TOP100个目标网站的目标网页,来确定待测浏览器和基准浏览器的兼容性。对于TOP100个目标网页,若通过待测浏览器显示的第一界面图像与通过基准浏览器显示的第二界面图像均匹配,则可以确定待测浏览器与基准浏览器兼容。或者,在TOP100个目标网页中,若数量超过第二预设值(例如100%)的目标网页通过待测浏览器显示的第一界面图像与通过基准浏览器显示的第二界面图像匹配,则可以确定待测浏览器与基准浏览器兼容。
当目标网页有R个时,在一种具体实现方式中,测试装置上可以包括一个目标网页列表,如表1所示,该目标网页列表可以包括多个目标网页的网址。测试装置可以每次向加载装置指示一个目标网页的网址,并在当前目标网页测试完成后,再向加载装置指示另一个目标网页的网址。在另一种具体实现方式中,测试装置可以将目标网页列表发送给加载装置,加载装置在接收到测试装置完成当前目标网页测试的通知信息后,加载下一个网址对应的目标网页。
表1
目标网页的网址 |
www.google.com |
https://www.amazon.cn/ |
http://www.baidu.com |
http://www.qq.com |
http://www.taobao.com |
http://www.tmail.com |
http://www.sohu.com |
http://www.sina.com.cn |
http://www.jd.com |
http://www.weibo.com |
http://www.360.cn |
... |
具体的,在测试R个目标网页中的任意一个目标页面时,当加载装置通过待测浏览器和基准浏览器无法正确打开该目标网页时,可以向测试装置发送通知信息,以方便测试装置记录该目标网页的相关信息;当加载装置能够打开目标网页但不能正常加载该目标网页的网页内容时,也可以通知测试装置,以方便测试装置记录该目标网页的相关情况;当加载装置通过待测浏览器和基准浏览器可以正常加载该目标网页的网页内容时,分别显示第一界面图像和第二界面图像,并通过上述实施例描述的方法测试第一界面图像与第二界面图像是否匹配,并记录该目标网页对应的匹配结果。而后测试下一个目标网页对应的第一界面图像与第二界面图像是否匹配。在测试完所有R个目标网页之后,可以列出兼容性测试的相关信息,例如不匹配的目标网页的数量和网址,无法打开的目标网页的数量和网址,无法正确加载的目标网页的数量和网址,匹配的目标网页的数量和网址,每个目标网页分别对应的匹配效果图,待测浏览器与基准浏览器是否兼容的结果等。其中,匹配的目标网页是指,对应的第一界面图像和第二界面图像匹配的目标网页,不匹配的目标网页是指,对应的第一界面图像和第二界面图像不匹配的目标网页。示例性的,测试装置列出的不匹配的目标网页可以如表2所示。
表2
不匹配的目标网页的网址 |
http://www.qq.com |
http://www.tmail.com |
http://www.jd.com |
并且,测试装置还可以根据兼容性测试的相关信息生成静态网页,或者测试装置还可以根据兼容性测试的相关信息生成网页和网址,方便测试人员通过网页形式进行浏览器兼容性结果的确认、管理和维护。示例性的,测试装置在生成完成R个目标网页的测试后,根据兼容性测试的相关信息生成的网页可以如图14所示。
尤其地,在需要通过测试海量目标网页来确定待测浏览器与基准浏览器的兼容性时,本申请实施例提供的方法可以实现自动化测试而不需要人为的参与,因而可以节省人力资源消耗,降低人力测试和维护成本,提高处理效率。
另外,现有技术中还存在另一种浏览器的兼容性测试方法,通过网络爬虫将待测浏览器的网页内容和基准浏览器的网页内容保存在缓存服务器上,然后再根据上述式1采用像素点的R值、G值、B值相减并计算累积方差值的方式来测试浏览器的兼容性。该种缓存的方案需要占用大量的磁盘空间,并且只能测试已缓存的网页,而对由于发生变更需要重新采集和缓存的网站和网页,则不能进行实时的验证和测试。
此外,还需要说明的是,本申请实施例提供的方法不仅可以应用在浏览器兼容性测试领域,还可以应用在其他领域。示例性的,采用本申请实施例提供的方法还可以判断相似图片。例如,在海量图片中搜索与目标图片相似的图片。再示例性的,采用本申请实施例提供的方法还可以判断相似网站。例如,给出一个目标网站的目标网页截图,然后在海量网址对应的网页截图中找出与该目标网页截图相似的网页截图以及对应的网址信息,从而确定是否存在网站盗用了目标网站的设计专利等。
可以理解的是,测试装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对测试装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图16示出了上述实施例中涉及的测试装置1600的一种可能的组成示意图,如图16所示,该测试装置1600可以包括:获取单元1601、分割单元1602、确定单元1603、处理单元1604、显示单元1605和生成单元1606。
其中,获取单元1601可以用于支持测试装置1600执行步骤401、步骤4041;和/或用于本文所描述的技术的其他过程。
分割单元1602可以用于支持测试装置1600执行步骤402、步骤4021-4023;和/或用于本文所描述的技术的其他过程。
确定单元1603可以用于支持测试装置1600执行步骤403、步骤404、步骤4040、步骤4042、步骤4043、步骤4031-4034;和/或用于本文所描述的技术的其他过程。
处理单元1604可以用于支持测试装置1600执行步骤405-407;和/或用于本文所描述的技术的其他过程。
显示单元1605可以用于支持测试装置1600执行步骤408,和/或用于本文所描述的技术的其他过程。
生成单元1606可以用于支持测试装置1600执行步骤409,和/或用于本文所描述的技术的其他过程。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例提供的测试装置,用于执行上述图像处理的实现方法,因此可以达到与上述图像处理的实现方法相同的效果。
在采用集成的单元的情况下,测试装置可以包括处理模块、通信模块和存储模块。其中,处理模块可以用于对测试装置的动作进行控制管理,例如,可以用于支持测试装置执行上述分割单元1602、确定单元1603、处理单元1604、显示单元1605和生成单元1606执行的步骤,和/或用于本文所描述的技术的其他过程。通信模块可以用于支持电子设备与其他网络实体的通信,例如支持测试装置执行上述获取单元1601执行的步骤,和/或用于本文所描述的技术的其他过程。存储模块可以用于支持测试装置存储界面图像,存储程序代码和数据等。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、wifi芯片等与其他电子设备交互的设备。
在一个简单的实施例中,当处理模块为处理器,存储模块为存储器时,本申请实施例所涉及的测试装置可以为具有图3所示计算机系统的设备。
本申请实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在测试装置上运行时,使得测试装置执行上述相关方法步骤实现上述实施例中的图像处理的实现方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的图像处理的实现方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的图像处理的实现方法。
其中,本申请实施例提供的测试装置、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
本申请另一实施例还提供了一种测试系统,可以包括加载装置和测试装置。该测试系统的结构示意图可以参见上述图2。该测试装置可以用于执行上述图像处理方法,以实现浏览器的兼容性测试。例如,该测试装置可以用于执行上述步骤401-409,步骤4021-4023,步骤4031-4034,以及步骤4041-4043等。加载装置可以用于配合测试装置进行图像处理,以实现浏览器的兼容性测试。例如,加载装置可以用于通过待测浏览器加载目标网页,显示第一界面图像,并将第一界面图像发送给测试装置;通过基准测浏览器加载目标网页,显示第二界面图像,并将第二界面图像发送给测试装置。以及,加载装置还可以用于从测试装置获取目标网页的指示信息等。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。