OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库。OpenCV是用C/C++语言编写而成,可以运行在Unix/Windows/Mac等操作系统上。与此同时,OpenCV还提供了Python、Ruby、MATLAB等语言接口,OpenCV可以提供简单易用的计算机视觉框架,帮助开发人员更快捷地设计复杂的计算机视觉相关的应用程序。
在GUI自动化测试中,测试方经常会遇到一些问题导致测试中断,不同的测试工具遇到的情况也不一样。对于需要绑定UI源代码来进行模拟操作的测试工具来说,如果UI源代码被修改,即使是小的修改也可能导致虽然界面看起来没有什么变化,但是测试已经无法继续进行的情况,而且这种测试工具脚本的编写需要对该应用的UI源代码有一定的了解,脚本的复杂度也比较高。还有一种方法是录入用户对屏幕的操作来进行模拟测试,这样测试脚本会比较简单,但是应用的界面布局变换会直接导致基于坐标的位置抓取失败,一些窗口大小位置微调或者系统弹出对话框等都会导致测试的中断。对于手机应用测试来说,一个好的手机应用通常会跨越好几个平台,不同平台上的编程方式和UI都不一样,类似的问题会更加突出,很多时候需要依靠手工测试,通过识别截图来判断问题出在了哪里,同样的可以用机器进行对截图的识别,来代替人工进行测试。
目前的计算机视觉软件大概有以下三种:
1.研究代码(慢,不稳定,独立并与其他库不兼容)
2.耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
3.依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)
OpenCV可以提供API简化计算机视觉程序和解决方案的开发同时通过优化的C代码的编写对执行速度带来了可观的提升。
图片1 OpenCV与其它视觉函数库性能对比
OpenCV提供的视觉处理算法非常丰富,并且它部分以C语言编写,加上其开源的特性,处理得当,不需要添加新的外部支持也可以完整的编译链接生成执行程序,通过使用OpenCV,对手机UI进行识别和定位可以比较容易的解决上述出现的问题,这种利用UI截图进行测试脚本的编写使得测试人员只需要具有基本的程序设计知识即可快速学会创建自动化脚本进行GUI测试。
OpenCV中,一种识别图片的方法是模板匹配,模板匹配可以实现在一幅图像中寻找与另一幅模板图像最匹配(相似)部分,通过模版匹配的方法可以定位需要测试的UI控件在界面上的坐标,通过模板匹配得出的坐标不是固定的,而是通过识别最相似的部分计算得出的。模板匹配的主要步骤一般是先通过截图界面,得到需要进行匹配的目标图片,然后以需要测试的UI界面为模板图片,在截取图片上覆盖同样大小的区域进行计算,得出模板和覆盖区域的匹配值,然后滑动模板图片进行下一个区域的计算,所有计算结果中的最大值就是最佳匹配值,OpenCV向用户提供了多种匹配算法。得到最佳匹配同时也会得到测试UI在当前截图的最佳匹配坐标,通过该坐标,可以进行对手机进行各种操作测试。模板匹配是比较基础的一种匹配方法,对模板的要求比较高,但是容许一定的失真。
对于GUI变化的复杂情况,使用基于样本的学习的方法将测试GUI可能的变化情况作为样本存储,然后确定相近特征的样本并获得相应的匹配值。用OpenCV来做特征提取匹配相当简便,只要检测每张图像的关键点,然后在目标图像中找到相应的图像即可,过程如下:
1、读取图像的 mat 数据
2、使用 detector 获取关键点
3、通过关键点,得到图像的描述信息
4、比较图像的描述信息,在目标图像中找到相应的图像
5、通过匹配后的数据,实现相应的功能(对应用进行操作)
在OpenCV中,实现了很多种特征,如SIFT,FAST等,这些特征的实现各不相同,但是都是从一个公共抽象基类派生出来的,因此可以用多态方便地切换特征提取算法。
在实际测试过程中,不同应用和应用的不同UI的情况变化很多,所以需要根据不同的需求和情况选择和优化不同的方法,但是核心都是对测试UI的图片识别。
这种利用目标GUI元素的截图来获取需要进行操作的对象,并执行相应操作的测试方法简单高效。使得GUI测试摆测试脱了对应用的内部程序实现的依赖,无需获取手机 API和了解 GUI 的内部代码实现,也不需要关注标准控件和非标准控件在操作和获取上的差异性,普遍适用于所有运行在有图形用户界面的操作系统之上的应用,有 GUI 显示的地方即可被获取和操作。可以最大限度的缩小与截图手工测试的差距。
在实际应用中,这种基于图片的测试方法也有一定的局限性,测试的结果需要依赖屏幕截图,而在不同的手机操作系统上,根据需求可能需会要独立维护一套图形源文件,对识别算法的要求也很高,对于其跨平台的能力造成障碍。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于