一种UI自动化测试图片识别方法与流程

文档序号:18899648发布日期:2019-10-18 21:45阅读:1994来源:国知局
一种UI自动化测试图片识别方法与流程

本发明属于软件图片识别技术领域,特别是涉及一种ui自动化测试图片识别方法。



背景技术:

在目前广泛使用的移动端自动化测试技术中,图片识别技术必不可少。这类技术的作用在于:

(1)解决终端的多样性导致的原生控件定位问题。

(2)提供内置webview页面的操作可行性。

(3)在严格的自动化测试工程中丰富验证手段的多样性。

现如今市面上使用的商业工具或者是开源框架中,多数采用的较为直接的对比方式(如图1),即在屏幕上执行部分的图片截取,保存到代码库中,以方便在不同的执行环境下进行图片对比;随后根据客户端引入opencv的库,直接调用内部的比较方法,从而转化为相应的屏幕坐标进行操作,或者执行包含验证。这样的方法有着如下的局限性:

(1)让代码库冗余。在常规的代码管理中,类似于图片,视频或者压缩包这样的“制造品”不应该被追踪到git或者subversion的代码库中。保持代码库的整洁是一个好习惯。但是如果我们要使用这种传统的去做图片识别,那么你的代码库会变成一个庞然大物:试想你有一万个图片需要比对。

(2)图片难以维护。当你的用例堆积如山后,脚本可以通过不断的重构和二次封装变得尽量容易维护,但是这些图片会给整体的维护工作带来巨大的困扰,试想一下你每天都在不断的重新截图,然后执行一个最小代码片段来执行测试。

因此,如何解决上述问题成为本领域人员研究的重点。



技术实现要素:

本发明的目的就是提供一种ui自动化测试图片识别方法,能完全解决上述现有技术的不足之处。

本发明的目的通过下述技术方案来实现:

一种ui自动化测试图片识别方法,包括以下步骤:

1)根据应用控件的设计需要按规定制作对照表;

2)根据ui规则对应用控件执行抽象和封装;

3)提取页面控件,获取控件坐标;

4)提取匹配sift特征,获得匹配结果,执行指定操作。

作为优选,步骤1)中对照表的内容包括控件像素、控件字体大小、控件图片色域(rgb)。

作为优选,步骤2)中封装的内容包括控件的图片色域、色调、饱和度、亮度。

作为优选,实现提取页面控件,获取控件坐标的方法为:

11)对页面控件需要执行识别的图片颜色进行空间转换,获得图片色域值;

12)对步骤11)中获得的色域值通过高低边界值匹配所有疑似目标控件,并将获取到的控件坐标以原点坐标+宽高的模式存储。

作为优选,实现取匹配sift特征,获得匹配结果,执行指定操作的方法为:

21)以步骤3)中获取的控件坐标进行区域性的图片截取,并以这些图片作为源进行遍历;

22)使用siftfeaturedetector的detect方法检测特征存入一个向量里,再使用siftdescriptorextractor的compute方法提取特征描述符,使用匹配器对描述符进行匹配,并设置阈值;

23)将匹配的向量距离小于阈值的值作为结果返回,随后执行相关的touchaction或是assert操作。

与现有技术相比,本发明的有益效果在于:

1.本发明让代码库变得更加轻量级;

2.本发明应对ui改变能力增强,大大减少了维护所需工作量;

3.本发明将移动端自动化测试脚本编写工作和图片识别彻底解耦,团队分工明确。

附图说明

图1是现有广泛使用的移动端自动化测试图片识别流程图;

图2是本发明执行自动化图片识别的的流程图;

图3是针对移动端应用控件的封装流程图;

图4是sift特征提取流程图以及各部分运行所占的时间比例。

具体实施方式

下面结合具体实施例和附图对本发明作进一步的说明。

如图1至图4所示,一种ui自动化测试图片识别方法,包括以下步骤:

1)根据应用控件的设计需要按规定制作对照表;由于本发明不再将图片作实时对比,因此需要强大的ui体系作依托,因此移动端应用的控件设计必须按照严格的规定,从控件像素、控件字体大小、控件图片色域(rgb)等各方面制定完整的对照表。

2)根据ui规则对应用控件执行抽象和封装;由于需要采用opencv做轮廓查找,所以需要根据ui规则制作的完整对照表对控件的rgb、色调、饱和度、亮度等信息作封装。并且针对特定的控件作特定的方法处理。同时,在最上层脚本需要提供足够的精确到步骤的检测方法,同样采用接口的模式实现,以避免在自动化测试用例的开发过程中再次去维护ui控件类集群,因此在高速迭代的互联网移动应用时代,每一个迭代难免都出现ui的改变,所以我们可以采用专门的时间去维护控件,但是不要在做用例的时候,可大大减少维护成本和耗时。

3)提取页面控件,获取控件坐标;具体的,首先对页面控件执行颜色空间转换和范围删选,即当特定的屏幕上需要执行图片识别时,我们会将这种识别精确定位到执行该行为所需要的某种控件,使用该控件截取原图后,执行颜色空间转换,然后通过高低边界值匹配所有疑似目标控件,并将获取到的控件左边以原点坐标+宽高的模式存储。

4)提取匹配sift特征,获得匹配结果,执行指定操作;具体的以步骤3)中获取的坐标进行区域性的图片截取,并以这些图片作为源进行遍历,使用siftfeaturedetector的detect方法检测特征存入一个向量里,再使用siftdescriptorextractor的compute方法提取特征描述符,使用匹配器对描述符进行匹配,并设置阈值。将匹配的向量距离小于阈值的值作为结果返回,随后执行相关的touchaction或是assert操作。

显而易见,通过本发明的方式将图片识别引入移动端自动化测试中,带来了效率的提升和维护成本的减少。主要体现在:

(1)将移动端自动化测试脚本编写工作和图片识别彻底解耦。这样一来可以将原本的团队一分为二,让编码能力更强的一个小组去实现控件的封装,编写和维护,同时他们可以做更多的优化;而另一个小组则只需要专心的编写脚本,因为他们甚至都不用再从屏幕上去截取图片,而是和使用appium提供的方法一样,直接编写点击或者验证逻辑——他们不用关心这个步骤是否使用了图片识别。

(2)让代码库变得更加轻量级。就算我们的验证的控件图片平均大小只有20kb,那么如果我们需要用传统的方法验证1000张图片,那也会是20mb的图片。再者你一定会在你的.gitignore文件中写上图片后缀,那么每次维护完成后加一个强制标签或许也让人心烦。使用本发明的技术,这些问题都不存在了,你更不必担心图片的引用路径问题——脚本编写者只会看到一个普通的方法,和图片无关。

(3)应对ui改变能力增强。高速迭代的互联网移动应用难免会在每一个迭代都出现ui的改变。如果用传统的方式,那么你只能每一个发版周期都去花时间重新截图了。但本发明的识别方式,甚至可以说是对ui的变化免疫。当开发人员按照既定的ui规则作控件的更改时,我们根本不需要去维护;当然,如果规则有变动,我们只需要告诉负责控件封装的小组,请他们根据新规则稍作改动即可。

由上可知,本发明采用sift算法,其原因在于:

通常来说,surf算法是sift算法的加速版。我们知道,surf相对于sift而言,特征点检测的速度有着极大的提升,所以在一些实时视频流物体匹配上有着很强的应用。而sift因为其巨大的特征计算量而使得特征点提取的过程异常花费时间(如图4),所以在一些注重速度的场合难有应用场景。但是sift相对于surf的优点就是,由于sift基于浮点内核计算特征点,因此通常认为,sift算法检测的特征在空间和尺度上定位更加精确,所以在要求匹配极度精准且不考虑匹配速度的场合可以考虑使用sift算法。执行移动端ui自动化测试的时候,显然对精确度的要求要比速度高很多,所以我们采用sift算法执行特征提取。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1