在自动化测试中,最头疼的事情是发现一个组件无法录制到。
无法录制到的组件,就无法对它进行操作,包括:click、setvalue()等都不可以。
在这种情况下AutoRunner使用图形化对象可以实现自动化测试。但是带来的问题是执行速度比较慢:因为图形化匹配查找组件,本身就是一个速度比较慢的算法。
我们在新版本的AutoRunner中,即将提供一个新的方法,来提速组件识别操作。具体的原理如下:
首先,AutoRunner自动化引擎会扫面当前的屏幕界面,根据图形的“特征”,找到所有“疑似”的对象,就是button、editor、combobox等组件,并且记录下来;
第二,根据我们的图形对象的图片,来提取特征值,把这个图片转换为一个图形特征值;
第三,去使用图形对象的特征值,与所有的备选组件列表进行特征值比对,找到差异(戴明距离)最小的那一个,作为识别到的组件返回;
第四,根据找到的结果,对此组件进行操作,比如click、setvalue等等。
这个新特性,提供了2个方法,第一个方法是只处理界面上的一个元素,执行完成就会转到下一个屏幕界面,处理一次耗时在5秒左右;第二个方法,支持在一个界面上处理多个不同的图形对象,那么每一个处理的速度,大概在2秒左右。当然第一次处理的时间,也在5秒(主要是用来分析屏幕上的所有的组件),之后就只存在比对问题,无需再扫描分析屏幕组件。
从本质上来说,AutoRunner的新特性,在摆脱完全依赖组件的方向上,前进了一大步,实现了通过图形特征获取对象的第一步。之后,我们会陆续支持无对象的自动化高速执行,无论被测试系统采用什么样的技术,都可以实现高速的测试执行自动化了!