图像识别在测试中的应用

栏目: 编程工具 · 发布时间: 6年前

内容简介:本文来自《奇舞周刊》是360公司专业前端团队「奇舞团」运营的前端技术社区。提起ui自动化大家首先想到的就是基于控件的自动化,比如常见的xpath、id、css选择器等手段进行元素定位并进行结果判断。但是在实际应用中,无论是web端还是移动端,仍有很多时候需要根据页面内容、页面中的图像进行定位及判定,是这些手段所达不到的,这里我们来介绍一下关于图像识别在测试中的应用。在具体进行讲解之前先介绍一下图像识别在测试中能够想到的引用场景:

本文来自《奇舞周刊》是360公司专业前端团队「奇舞团」运营的前端技术社区。

提起ui自动化大家首先想到的就是基于控件的自动化,比如常见的xpath、id、css选择器等手段进行元素定位并进行结果判断。但是在实际应用中,无论是web端还是移动端,仍有很多时候需要根据页面内容、页面中的图像进行定位及判定,是这些手段所达不到的,这里我们来介绍一下关于图像识别在测试中的应用。

图像识别在测试中的应用

在具体进行讲解之前先介绍一下图像识别在测试中能够想到的引用场景:

  • 测试过程中,通过对待测软件进行屏幕截图,采用图像识别算法识别截图中是否包含预定义的可操作控件,如果存在,则触发控制指令,达到了图像识别引导测试过程的目的;
  • 测试结果的验证,通过对待测软件的界面进行截图操作,利用图像识别技术将截图与期望的结果进行匹配,从而自动获取测试结果。
  • 通过图像识别对比来进行性能测试,比如app测试中常见的响应时间的测试

首先分享一下图形识别在自动化测试中的应用,目前比较流行的就是开源软件sikuli,  其中关于sikuli的安装在这里就不多说了,官网有具体的介绍(https://launchpad.net/sikuli/+download)

原理

图像识别在测试中的应用

图像识别在测试中的应用 Sikuli脚本是由jython通过图像识别的方式来模拟键盘和鼠标事件,从而实现ui层面的自动化测试。Sikuli脚本的核心是一个 java 库主要由两部分组成:

java.awt.Robot 这个部分主要是讲键盘和鼠标事件传送给指定的位置,具体的位置是由c++引擎(基于opencv模块)通过脚本中的目标图片去屏幕上搜索并定位。C++引擎与java的JNI链接并且进行编译来适应不同的平台。在java的上层是一个简单的应用层就是我们开发脚本用的,这层给最终用户提供了一套简单易用的命令。

函数介绍

Find(x)

在屏幕上找到相对于的图片,比如选定一个手机

示例代码:

图像识别在测试中的应用

findall(x)

在屏幕上找到所有的相同图片x,比如可以关注多个手机(一次性把所有的图片的坐标选定,如果选定后再刷新桌面背景有可能出现之前的坐标和之前的功能点对应不上,达不到测试效果)

示例代码:

图像识别在测试中的应用

wait(x,10)

等待图片x在屏幕上或者指定的区域中出现,超时时间10秒

示例代码:

图像识别在测试中的应用

waitVanish(x,10)

等待屏幕上或者指定区域中给定的gui组件消失,最长等待10秒(最好设置时间)

示例代码:

图像识别在测试中的应用

exists(x)

在屏幕上或者指定区域中查找指定的GUI组件是否存在,若找不到改组件,就返回none,不抛异常,同时可以设置超时时间

示例代码:

图像识别在测试中的应用

click(x)

在屏幕上或指定区域中左键单击匹配度最佳的GUI组件

示例代码:

图像识别在测试中的应用

dubleclick(x)

在屏幕上或指定区域中双击匹配度最佳的GUI组件

示例代码:

图像识别在测试中的应用

rightclick()

在屏幕上或指定区域中右击匹配度最佳的GUI组件

示例代码:

图像识别在测试中的应用

hover(x)

将鼠标指针移动到匹配度最佳的GUI组件

示例代码:

图像识别在测试中的应用

dragDrop(x,y)

将图片x拖拽到图片y上

示例代码:

图像识别在测试中的应用

type(x,“text”)

给选定的焦点输入内容

示例代码:

图像识别在测试中的应用

paste(x,“text”)

给选定的焦点粘贴内容(具体和type目前没发现具体的区别)

图像识别在测试中的应用

代码介绍

http://www.sikuli.org/productivity.html

下面是一个用来测试响应时间的一个代码示例

图像识别在测试中的应用

优缺点

优点:

介绍到这会有人问有了webdriver等ui自动化后为什么还要用图像识别呢?我能想出来的理由也只有这几点了:

1、代码简单易懂,简单到什么程度呢?可以说会截图就可以进行自动化测试 、

2、针对一些游戏或者一些特殊的应用ui控件比较难以识别这样就可以通过图像识别轻易的找到对应的元素

3、代码的学习成本比较低常用的函数已经封装完毕,而且简单易懂。

4、 工具 开源可以进行二次开发

5、可以识别类似flash这样不能通过识别控件来进行自动化测试的项目

缺点:

1、 屏幕不能有遮挡,因为sikuli是在当前桌面识别 对应的目标并进行操作,如果桌面有遮挡就会导致对应的元素找不到

2、 如果代码换一个显示屏进行测试就要重新进行截图,因为之前所有的截图分辨率已经不适应当前界面

3、 不能在后台进行测试,必须前台运行


以上所述就是小编给大家介绍的《图像识别在测试中的应用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C标准库

C标准库

P. J. Plauger / 卢红星、徐明亮、霍建同 / 人民邮电出版社 / 2009-7 / 79.00元

本书是由世界级C语言专家编写的C标准库经典著作。英文版已经重印十多次,影响了几代程序员。 本书结合C标准的相关部分,精辟地讲述了每一个库函数的使用方法和实现细节,而这正是一个真正的C程序员所必须掌握的。更重要的是,书中给出了实现和测试这些函数的完整源代码,可以让你更深入地学习C语言。不仅如此,本书还讨论了一些即使是最有经验的C程序员通常也不熟悉的知识,比如国际化和独立于区域设置的程序的编写、......一起来看看 《C标准库》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试