专栏名称: HULK一线技术杂谈
HULK是360的私有云平台,丰富的一线实战经验,为你带来最有料的技术分享
目录
相关文章推荐
河南商报  ·  本田、日产和三菱汽车终止合并 ·  8 小时前  
科技新知  ·  小鹏有了“雷军”味儿 ·  2 天前  
科技新知  ·  小鹏有了“雷军”味儿 ·  2 天前  
Python初级入门到精通  ·  一曲东风破长安,东风与长安汽车的合并重组,谁 ... ·  3 天前  
Python初级入门到精通  ·  一曲东风破长安,东风与长安汽车的合并重组,谁 ... ·  3 天前  
51好读  ›  专栏  ›  HULK一线技术杂谈

图像识别在测试中的应用

HULK一线技术杂谈  · 公众号  ·  · 2018-05-17 18:00

正文

女主宣言

无论是web端还是移动端,仍有很多时候需要根据页面内容、页面中的图像进行定位及判定,这是传统基于选择器等手段所达不到的,今天我们来介绍一下关于图像识别在测试中的应用。

本文转自Qtest之道,关注了解更多测试知识~

PS:丰富的一线技术、多元化的表现形式,尽在“ HULK一线技术杂谈 ”,点关注哦!


提起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”)

给选定的焦点输入内容

示例代码:








请到「今天看啥」查看全文