一种基于计算机视觉的移动端应用测试系统及方法

文档序号:10512090阅读:367来源:国知局
一种基于计算机视觉的移动端应用测试系统及方法
【专利摘要】一种基于计算机视觉的移动端应用测试系统及方法,包括图像脚本测试模块,全自动测试模块;图像脚本测试模块获取屏幕图像同时获取屏幕信息,读取脚本中的模板图像和模板图像的信息,执行模板匹配算法,如果匹配成功,返回给图像匹配的结果,如果失败,执行特征点匹配算法,如果匹配成功,返回给图像匹配结果,如果失败返回失败码;全自动测试模块获取原始图像,使用显著性检测算法计算原始图像的显著性灰度图像,将显著性图像转为二值图像,在显著性二值图像使用随机算法或者使用K均值算法确定显著性点集自动完成点击和记录。本发明提高了测试的效率,并且适用于种类多样的移动设备,通过给定脚本与全自动的两种方式,极大的提供了测试者的学习成本和测试的方便。
【专利说明】
一种基于计算机视觉的移动端应用测试系统及方法
技术领域
[0001]本发明属于软件测试技术领域,涉及一类移动端应用软件测试方法及一个完整的软件测试系统,特别使用计算机视觉算法对控件自动识别、定位,可应用于移动端软件的自动测试、使用图像脚本的适配测试。
【背景技术】
[0002]目前,移动设备有非常大的市场,移动设备的操作系统主要有10S、WindowS与Android,其中Android的市场非常庞大。而移动上面的应用与游戏种类与数量非常多,有大量的开发者开发移动设备,通过市场与应用中的广告赚钱。对于一个应用它是否能长期被人使用和玩,稳定性非常重要,是否会出现BUG、闪退、黑屏直接影响到了用户的体验,据市场分析闪退出现三次用户就可能卸载了这个程序。良好的测试对于应用的广泛推广起到了至关重要的作用,但是Android测试有非常大的难度,因为Android操作系统有非常多的版本,而且与1S不同的是Android有种类非常多的移动设备,各种屏幕大小的、各种芯片、各种厂家生产的手机平板电脑,所以保证应用程序在各个机型的Android设备上正常运行是非常难的。
[0003]目前已经有很多的性能优良的测试工具针对于Android下的应用程序测试,例如Robo tium,MonkeyRunner,UIAutomator,Appium,这些测试工具主要是通过获得Andro id应用程序的控件名称,基于JUNIT等测试框架,测试人员撰写测试用例进行测试。虽然程序在不同机型和不同尺寸图片上运行和画面布局有所不同,但是获得的控件名称是相同的,所以可以在一个型号手机写出测试脚本在多个手机上运行进行多平台测试,观察这个程序的稳定性。
[0004]但是目前大部分Android应用程序开发尤其是手机游戏的开发,通常使用OpenGL、COCOSplay2D,Unity3D等渲染工具生成,整个的可操作控件都部署在一张画布(铺满整个屏幕)上,无法从应用的后台服务中获取其控件信息,也就无法使用Robotium等目前的工具进行自动化测试。
[0005]现在Android平台自带测试工具Monkey,就不是用控件信息进行测试,这款测试工具可以自动生成随机坐标和随机事件来进行操作,由于是完全随机的操作,所以效率低下,目前只能作为粗糙的压力测试工具,无法返回精确的测试结果,达到精确的测试要求。

【发明内容】

[0006]本发明技术解决问题:克服现有技术中存在的上述问题,提供一种基于计算机视觉算法的测试系统及方法,大大提高了移动端软件测试的效率和准确率,并提供了基于图像匹配与显著性检测算法实现的系统方法。
[0007]本发明技术解决方案:一种基于计算机视觉的移动端应用测试系统,包括:图像脚本测试模块、全自动测试模块、开放应用程序接口、图像算法模块、测试逻辑模块、文件传输模块、图像库、测试框架、Android底层库,其中图像脚本测试模块、全自动测试模块、开放应用程序接口位于顶层的应用层,图像算法模块、测试逻辑模块、文件传输模块位于中间层,图像库、测试框架、Android库位于最底层:
[0008]图像脚本测试模块,通过文件传输模块的adb或者http协议获取移动端屏幕图像和移动端屏幕信息,同时读取图像脚本中的模板图像和模板图像的信息,还有操作命令;然后执行位于图像算法模块中的模板匹配算法,将图像脚本中的模板图像在移动端屏幕图像上找到相应的位置,如果匹配成功则结束,根据图像匹配的结果,即位置信息,执行图像脚本中的操作命令;如果失败,执行图像算法模块中的特征点匹配算法,如果匹配成功则结束,同样根据图像匹配的结果,即位置信息,执行图像脚本中的操作命令;如果失败则返回失败码;
[0009]全自动测试模块,通过文件传输模块的adb或者http协议获取屏幕图像同时获取屏幕信息,得到原始图像,采用显著性检测算法计算原始图像的显著性灰度图像,使用设定的阈值将显著性图像转为显著性二值图像,在显著性二值图像中通过测试逻辑模块选择采用图像算法模块中随机算法或者K均值算法确定显著性点集,然后再根据显著性点集的位置信息,自动完成在移动端这些位置的点击和记录;
[0010]开放应用程序接口,将图像脚本测试模块和全自动测试模块分别包装起来,各自提供相应的Java,Python接口,方便各种程序员简单使用;
[0011]图像算法模块,依赖于底层的图像库,该模块实现了模板匹配算法、特征点匹配算法、图像显著性检测算法、随机算法和K均值算法,并提供给上层的图像脚本测试模块与全自动测试模块使用;
[0012]测试逻辑模块,依赖于底层测试框架Junit框架,实现一些测试逻辑给上层的图像脚本测试模块与全自动测试模块使用,实现整个测试的操作流程全部架构在Junit之上;
[0013]文件传输模块,依赖于底层Android库,使用Android库中的adb与http通信协议,传输给上层的图像脚本测试模块与全自动测试模块使用,包括移动设备屏幕图像和移动设备屏幕信息;
[0014]图像库,底层依赖,使用Opencv构建,为上层图像算法模块提供基础的底层开发环境及一些基本的库,包括图像输入输出,图像像素点的获取与更改;
[0015]测试框架,底层依赖,使用的Java中的junit,为上层的测试逻辑模块提供基础的测试方法,和Java基础的测试接口和实现类;
[0016]Android库,底层依赖,android自带的基础库,为上层的文件传输模块提供基础的移动端操作接口,各种文件的读取写入最底层接口。
[0017]所述模板匹配算法实现如下:
[0018](I)根据测试人员给定的图像脚本中的图片的大小,以及在原始屏幕上的位置,计算在新的屏幕上同比例缩放所在的位置与大小,这个位置作为预估匹配图像位置;
[0019](2)将新的屏幕图像上的上述位置和大小的图像从中剪裁出来,缩放至与脚本中图像大小相同,对两个图像像素值按相同位置相减,求绝对平均值,如果大于设定的阈值,图像匹配失败,如果小于设定的值,匹配成功。
[0020]所述特征点匹配算法实现如下:
[0021](I)对模板图像和移动设备上屏幕图像在灰度域上分别提取SURF特征点(一种鲁棒快速的特征点提取算法)与描述子,特征点是图像匹配的基本元素,描述子时特征点的基本信息,目前各种特征点中适合这种“方块控件”图像匹配的特征点主要是SIFT和SURF,SURF要比SIFT速度更快更加鲁棒;
[0022](2)使用随机一致性采样的算法对SURF特征点进行匹配,匹配中的距离定义为两个描述子的平方差,匹配到的点对再使用随机一致性采样算法,确定二维图像转移矩阵(二维图像的转移矩阵为3*3),利用所述转移矩阵计算模板图像在目前移动端上的位置和大小。
[0023](3)将新的屏幕图像上的上述位置和大小的图像从中剪裁出来,缩放至与脚本中图像大小相同,对两个图像像素值按相同位置相减,求绝对平均值,通常阈值选定在102,如果大于这个值,图像匹配失败,如果小于这个值,匹配成功。
[0024]所述显著性检测算法采用直方图显著性检测算法或图像频率谱残差算法。
[0025]所述直方图显著性检测算法是基于图像像素点的,在灰度域上,计算图像灰度均值,同时将图像灰度值量化成为一个直方图,计算每个点的值在直方图的位置和与图像灰度均值的距离作为新的图像,给定一个阈值,可以将该显著性图像转化为显著性二值图像。
[0026]所述图像频率谱残差算法基于的原理是大量自然图像的灰度均值在频率域上表现为高斯随机分布,所以将原始图像的灰度图像转化到傅里叶空间中,减去服从高斯分布的随机噪声图像,再使用反傅里叶变换求在空间域的显著性图像,如上面所述同样的使用阈值将该图像转为显著性二值图像。
[0027]所述设定的阈值是100-105左右,在大量实验基础上得到。
[0028]—种基于计算机视觉的移动端应用测试方法,实现步骤如下:
[0029]步骤1、通过adb或者http协议获取屏幕图像同时获取屏幕信息,读取脚本中的模板图像和模板图像的信息;
[0030]步骤2、执行模板匹配算法,如果匹配成功则结束,返回给图像匹配的结果,即位置信息如果失败执行步骤3 ;
[0031]步骤3、执行特征点匹配算法,果匹配成功则结束,返回给图像匹配的结果,即位置信息如果失败返回失败码;
[0032]步骤4、通过adb或者http协议获取屏幕图像同时获取屏幕信息,得到原始图像;
[0033]步骤5、使用显著性检测算法计算原始图像的显著性灰度图像;
[0034]步骤6、使用设定的阈值将显著性图像转为二值图像,在显著性二值图像使用随机算法或者使用K均值算法确定显著性点集;
[0035]步骤7、显著性点集作为候选的操作位置,全自动只能测试模块根据此位置自动完成点击和记录。
[0036]本发明与现有技术相比的优点在于:
[0037](I)本发明使用计算机算法实现了移动端的测试,应用在屏幕尺寸不同、运行环境多样的各种环境下,根据图像的信息自动分析、和基于测试人员的截图信息自动化测试,拥有非常强大的适配性,相比传统的基于控件的测试方法,本方法不用在每台机器上定制脚本,一套脚本或者自动测试程序可以通用的运行在多种平台上;
[0038](2)本发明提出了一种基于图像脚本的移动适配测试方法,并且改进原有算法,提出了一种非常鲁棒的,在效率和准确率取得不错折衷的策略,可以满足目前的脚本运行需求,同时提出的算法应用手机运行时的屏幕显示界面,支持分辨率的多样性、支持广告等遮挡的情况、支持屏幕方向的改变;
[0039](3)本发明首次提出应用显著性检测算法在测试领域,尤其适用在移动端测试,自动的去识别图像中的显著性点,自动化的操作,相比Monkey这些传统的压力测试,测试的效率和准确率高了很多,可以做到计算机有“有意识”的去测试。
【附图说明】
[0040]图1为本发明的系统架构图;
[0041 ]图2为基于图像脚本匹配算法的详细流程图;
[0042]图3为全自动化智能测试及显著性检测算法的详细流程图;
[0043]图4为基于图像脚本测试模块匹配算法部分实验结果;
[0044]图5为全自动智能测试模块部分实验结果。
【具体实施方式】
[0045]本发明的原理:
[0046]1.基于像素点的模板匹配算法使用图片之间像素点的灰度值平方差作为衡量值,可以找到最佳匹配位置,和匹配程度,这个算法耗时短效率高,但是准确率较差,使用鲁棒的特征点描述子匹配准确率高,但这个算法耗时非常长,效率低,采取结合这两种算法的方式,在时间消耗上和准确率上进行折衷,针对这种移动端测试过程中的特点,设计了合适的算法,实现图像的匹配,为基于图像脚本的移动测试提供基础计算方法。
[0047]2.传统的类似monkey工具的随机操作测试工具,效率低准确率也低,基于图像显著性检测算法主要检测图像中“显著的区域”,这些区域是属于视觉上的敏感区域,极大的概率是可以操作的控件,在这些区域上用一些方法选择一些操作点,可以极大的提高计算机自动操作的效率。基于灰度直方图距离的显著性检测算法是在灰度空间上,计算图像的灰度均值,将图像每个像素灰度量化到直方图上,用直方图的距离,计算差距比较大的点作为I,差距小的点作为0,这样会生成一个显著性位图,可以从像素空间估计出显著性位置;基于图像谱残差算法的计算方法是,研究发现大量图像的平均图像的log频谱是一条直线,在频域上的含义是一个高斯分布的形式,所以计算一幅图像的显著性图像只需要将灰度图像傅里叶变换,减去高斯图像,反傅里叶变换,用一个阈值将图像转为二值图像即可得到显著性图像。得到的二值显著性图像,值为I的像素点是可以操作对象的可能性会大很多,采用随机抽取或者使用K均值算法均可得到可操纵的控件位置。
[0048]如图1所示,本发明系统的架构主要分为三层:
[0049]最底层、主要是三个底层库,Android底层库、Junit框架底层库还有图像识别的底层库 OpenCV。
[0050]中间层、主要是算法的实现模块、算法的测试模块,以及上层逻辑需要的通用逻辑模块、包括控制逻辑、文件传输、网络分发的逻辑。
[0051]应用层、主要有两个最核心的功能,移动应用基于图像脚本的测试模块与移动应用全自动测试模块,还开发了对外使用的简易借口。
[0052]本发明的方法中,移动应用基于图像脚本的测试模块,测试的主要流程为,测试一个移动的应用,由用户指定每一个步骤的截图或者点击位置的截图,程序将截图信息存储起来,在其他的手机或这台手机上再次运行这个程序时,使用图像匹配的方式重新定位当前应该具体的执行步骤。图像匹配的主要步骤包括(见图2):
[0053]如图2所示,本发明基于图像脚本匹配算法主要分为三个步骤:
[0054]步骤1、通过adb或者http协议获取屏幕图像同时获取屏幕信息,读取脚本中的模板图像和模板图像的信息,Android底层库提供了访问屏幕、访问手机详细信息的方法,用户的脚本中指定图片路径和参数信息使用文件1可以访问;
[0055]步骤2、首先根据测试人员给定的脚本中的图片信息,和一些历史信息,和目前屏幕尺寸等信息,预估计匹配的位置,使用模板匹配算法快速的在同一尺度下验证匹配的吻合成都,如果吻合成功,匹配成功,程序结束,返回给图像匹配的位置信息,否则执行步骤3;
[0056]步骤3、对模板图像和手机上显示的图像在灰度域上均提取SURF特征点(一种鲁邦快速的特征点提取算法),使用随机一致性采样的算法进行匹配,匹配到的结果再使用随机一致性采样再次确定3*3的二维图像转移矩阵,计算模板图像在目前手机上的位置信息,最后再次使用模板匹配算法,估计结果的正确性。
[0057]本发明的方法中,移动应用全自动测试模块主要流程为,给定手机信息和待测应用的信息,计算机自动完成测试,计算机通过adb或者http协议连接测试终端,获取当前终端显示图像,计算机计算图像中的显著性图像与显著性点集,返回操作指令,移动端完成指令,返回执行结果。其中显著性算法的主要步骤包括(见图3):
[0058]如图3所示,把发明全自动智智能测试模块主要分为三个步骤,
[0059]步骤1、通过adb或者http协议获取屏幕图像同时获取屏幕信息,得到原始图像;
[0060]步骤2、使用显著性检测算法计算原始图像的显著性灰度图像,主要使用直方图显著性检测算法和图像频率谱残差算法来实现。
[0061]其中直方图显著性检测算法是基于图像像素点的,在灰度域上,计算图像灰度均值,同时将图像灰度值量化成为一个直方图,计算每个点的值在直方图的位置和与图像灰度均值的距离作为新的图像,给定一个阈值,可以将该显著性图像转化为二值图像;
[0062]另外图像频率谱残差算法基于的原理是大量自然图像的灰度均值在频率域上表现为高斯随机分布,所以将原始图像的灰度图像转化到傅里叶空间中,减去服从高斯分布的随机噪声图像,再使用反傅里叶变换求出在空间域的显著性图像,如上面所述同样的使用阈值将该图像转为二值图像;
[0063]步骤3、在显著性二值图像使用随机算法或者使用K均值算法均可估计显著性点集,随机算法就是随机生成点,在显著性二值图像指示的区域则输出,否则不输出,K均值算法是将显著图像中的显著性像素点采用K均值聚类算法聚成给定的若干个类,数量和一张图片推荐的显著性点数量一致(K个),K均值算法的初始值是随机的K个点,将每个点选取距离最近的这K个点中的一个点,做为这个点所属的区域,将这K个区域重新求形心,迭代的重复上述步骤若干步,工具中默认是5步迭代;
[0064]步骤4、将所求得到的显著性点集返回给程序,做为程序自动操作移动应用的待测试点集,使用深度优先的操作树,完成测试操作并将中间结果记录文件中。
[0065]提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
[0066]部分系统实验结果
[0067]基于图像脚本测试模块的系统测试见图4,在三种型号的Android手机上分别运行相同的测试脚本,分别是他们的运行时间和完成的情况,可以发现大部分的情况下,图像匹配算法可以完成模板匹配,最终实现测试的目标。
[0068]全自动测试模块的算法测试见图5,使用了一个对比试验,比较在相同的移动终端应用上(一共有5个应用,3部手机,每个手机运行5次,时间限制在3分钟),自动的进行测试操作,横坐标是给定的一个运行参数,每张图像所选用的显著性点的数量,g卩K均值算法中的K值,纵坐标是平均每个应用的有效操作数量。可以发现直方图均衡算法的有效操作次数要比随机抽取点高一倍,谱残差方法也会比随机算法的效果有所提高。
[0069]提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
【主权项】
1.一种基于计算机视觉的移动端应用测试系统,其特征在于:包括图像脚本测试模块、全自动测试模块、开放应用程序接口、图像算法模块、测试逻辑模块、文件传输模块、图像库、测试框架、Android底层库,其中图像脚本测试模块、全自动测试模块、开放应用程序接口位于顶层的应用层,图像算法模块、测试逻辑模块、文件传输模块位于中间层,图像库、测试框架、Android库位于最底层: 图像脚本测试模块,通过文件传输模块的adb或者http协议获取移动端屏幕图像和移动端屏幕信息,同时读取图像脚本中的模板图像和模板图像的信息,还有操作命令;然后执行位于图像算法模块中的模板匹配算法,将图像脚本中的模板图像在移动端屏幕图像上找到相应的位置,如果匹配成功则结束,根据图像匹配的结果,即位置信息,执行图像脚本中的操作命令;如果失败,执行图像算法模块中的特征点匹配算法,如果匹配成功则结束,同样根据图像匹配的结果,即位置信息,执行图像脚本中的操作命令;如果失败则返回失败码; 全自动测试模块,通过文件传输模块的adb或者http协议获取屏幕图像同时获取屏幕信息,得到原始图像,采用显著性检测算法计算原始图像的显著性灰度图像,使用设定的阈值将显著性图像转为显著性二值图像,在显著性二值图像中通过测试逻辑模块选择采用图像算法模块中随机算法或者K均值算法确定显著性点集,然后再根据显著性点集的位置信息,自动完成在移动端这些位置的点击和记录; 开放应用程序接口,将图像脚本测试模块和全自动测试模块分别包装起来,各自提供相应的Java,Python接口,方便各种程序员简单使用; 图像算法模块,依赖于底层的图像库,实现了模板匹配算法、特征点匹配算法、图像显著性检测算法、随机算法和K均值算法,并提供给上层的图像脚本测试模块与全自动测试模块使用; 测试逻辑模块,依赖于底层测试框架Junit框架,实现一些测试逻辑给上层的图像脚本测试模块与全自动测试模块使用,实现整个测试的操作流程全部架构在Junit之上; 文件传输模块,依赖于底层Android库,使用Android库中的adb与http通信协议,传输给上层的图像脚本测试模块与全自动测试模块使用,包括移动设备屏幕图像和移动设备屏幕信息; 图像库,底层依赖,使用Opencv构建,为上层图像算法模块提供基础的底层开发环境及一些基本的库,包括图像输入输出,图像像素点的获取与更改; 测试框架,底层依赖,使用的Java中的junit,为上层的测试逻辑模块提供基础的测试方法,和Ja va基础的测试接口和实现类; Android库,底层依赖,android自带的基础库,为上层的文件传输模块提供基础的移动端操作接口,各种文件的读取写入最底层接口。2.根据权利要求1所述的基于计算机视觉的移动端应用测试系统,其特征在于:所述模板匹配算法实现如下: (1)根据测试人员给定的图像脚本中的图片的大小,以及在原始屏幕上的位置,计算在新的屏幕上同比例缩放所在的位置与大小,这个位置作为预估匹配图像位置; (2)将新的屏幕图像上的上述位置和大小的图像从中剪裁出来,缩放至与脚本中图像大小相同,对两个图像像素值按相同位置相减,求绝对平均值,如果大于设定的阈值,图像匹配失败,如果小于设定的值,匹配成功。3.根据权利要求1所述的基于计算机视觉的移动端应用测试系统,其特征在于:所述特征点匹配算法实现如下: (1)对模板图像和移动设备上屏幕图像在灰度域上分别提取SURF特征点与描述子; (2)使用随机一致性采样的算法对SURF特征点进行匹配,匹配中的距离定义为两个描述子的平方差,匹配到的点对再使用随机一致性采样算法,确定二维图像转移矩阵,利用所述转移矩阵计算模板图像在目前移动端上的位置和大小; (3)将新的屏幕图像上的上述位置和大小的图像从中剪裁出来,缩放至与脚本中图像大小相同,对两个图像像素值按相同位置相减,求绝对平均值,通常阈值选定在102,如果大于这个值,图像匹配失败,如果小于这个值,匹配成功。4.根据权利要求1所述的基于计算机视觉的移动端应用测试系统,其特征在于:所述显著性检测算法采用直方图显著性检测算法或图像频率谱残差算法。5.根据权利要求4所述的基于计算机视觉的移动端应用测试系统,其特征在于:所述直方图显著性检测算法是基于图像像素点的,在灰度域上,计算图像灰度均值,同时将图像灰度值量化成为一个直方图,计算每个点的值在直方图的位置和与图像灰度均值的距离作为新的图像,给定一个阈值,将该显著性图像转化为显著性二值图像。6.根据权利要求1所述的基于计算机视觉的移动端应用测试系统,其特征在于:所述图像频率谱残差算法是大量自然图像的灰度均值在频率域上表现为高斯随机分布,再将原始图像的灰度图像转化到傅里叶空间中,减去服从高斯分布的随机噪声图像,使用反傅里叶变换求在空间域的显著性图像,再使用阈值将该图像转为显著性二值图像。7.根据权利要求1所述的基于计算机视觉的移动端应用测试系统,其特征在于:所述设定的阈值是100-105。8.一种基于计算机视觉的移动端应用测试方法,其特征在实现步骤如下: 步骤1、通过adb或者http协议获取屏幕图像同时获取屏幕信息,读取脚本中的模板图像和模板图像的信息; 步骤2、执行模板匹配算法,如果匹配成功则结束,返回给图像匹配的结果,即位置信息如果失败执行步骤3; 步骤3、执行特征点匹配算法,果匹配成功则结束,返回给图像匹配的结果,即位置信息如果失败返回失败码; 步骤4、通过adb或者http协议获取屏幕图像同时获取屏幕信息,得到原始图像; 步骤5、使用显著性检测算法计算原始图像的显著性灰度图像; 步骤6、使用设定的阈值将显著性图像转为二值图像,在显著性二值图像使用随机算法或者使用K均值算法确定显著性点集; 步骤7、显著性点集作为候选的操作位置,全自动只能测试模块根据此位置自动完成点击和记录。
【文档编号】G06F11/36GK105868102SQ201610165980
【公开日】2016年8月17日
【申请日】2016年3月22日
【发明人】张震宇, 孙成龙
【申请人】中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1