Squish中文网站 > 最新资讯 > Squish图像校验怎么设置 Squish图像校验阈值怎么调整
Squish图像校验怎么设置 Squish图像校验阈值怎么调整
发布时间:2026/06/01 15:01:09

  界面自动化用例跑久了以后,图像差异常常会变成一类很烦人的问题。对于Squish图像校验要怎么设置,以及图像校验里面的阈值又要怎么调整,这里头的重点,其实并不是单纯地去截一张图然后拿来比较,而是先要把校验的对象、截图的区域范围、遮罩的部位,还有能接受的容差规则给确定下来。Squish里面提供的检查点,既可以在它的开发工具里面用选单的方式去建好,也可以直接通过写脚本的办法来产生,而图像类的校验,比较合适的路子,一般是先借助开发工具来生成,之后再去依照结果进行细调。

  一、Squish图像校验怎么设置

 

  在做Squish图像校验的时候,大家一般会用到一种叫截图检查点的功能,它很适合去检查图标、按钮的状态、图表的区域、图片的显示,还有那些复杂控件的外观等等,不过我们并不建议把整个窗口都拿去进行特别严格的比对,要是那样的话,字体的渲染、窗口的阴影,还有分辨率这些因素只要发生改变,就都会引起校验的失败。

 

  1、先定位需要校验的控件

 

  在录制或者调试用例的过程中,要先让程序跑到所要面对的那个界面,然后再到Squish的开发工具里面,用它的对象抓取功能,去把需要截图来校验的那块控件区域给选中,这里有一个原则,就是能选控件的就不要去截整个屏幕,能截按钮那一小块的就不要去截整个页面,因为截图所划定的范围越小,后面冒出来的错误警告也会越少。

 

  2、创建截图校验点

 

  我们可以在录制用例的进程中,把截图检查点给插进去,也可以等程序在断点那里停住以后,再通过一个叫检查点创建器的工具来建立它,在保存的时候,要记得给这个检查点取一个意思清楚的名字,比方说可以叫“检查登录图标”,或者“检查图表区域”,千万不要用那些软件自己给出的预设名字,不然等以后用例积攒得太多了,再想维护起来就会十分费劲了。

 

  3、保存基准图片

 

  等到这个创建步骤做完了以后,Squish就会把当前抓下来的这张图当成是预期当中的正确结果,并把它存到测试套件的资源库里面去,之后每一次再跑用例的时候,实际截出来的那张图片,都会拿这一张基准的图来做对照,而这张基准图本身必须是从一个很安稳的环境里面得来的,像窗口的尺寸、画面缩放的比例、主题的颜色,还有所使用的语言版本,这些条件都应当被提前固定下来。

 

  4、失败后查看差异

 

  如果用例跑完以后没有通过,那么就可以在测试结果的视图里面,用鼠标的右键去点击那个没有通过的截图检查结果,再选择里面一项叫“查看差异”的功能,通过这样来了解不同的地方出现在了哪里,按照官方文件上面的说明,图片比对的对话框里面可以支持把图片放大或者缩小,也可以让遮罩显示出来或者被隐藏掉,并且能够把出现差异的部位用高亮的方式标记出来,同时,当前所定下来的这些设置也都是可以被保存住的。

 

  二、Squish图像校验阈值怎么调整

 

  图像校验里面的这个阈值,并不是你把它设得越宽松就越省心,如果阈值被调得太紧了,那周围的环境哪怕只是有了一点非常细微的变化,校验也会马上失败;可是如果阈值被调得太松了,那哪怕界面上面真的出现了什么错误,它也很可能就被这么轻易地给放过去了,所以比较稳妥的做法应该是,先去看一看差异是出在了什么位置上,然后再去决定到底是要去调整遮罩,还是去改变比较的模式,又或者是去修改容差的数值。

 

  1、先确认失败原因

 

  当我们把能看差异的那个视图打开以后,要先注意红色的高亮部分到底都集中在了哪里,如果发现那些不同的地方是出在了时间、随机的编号、动画所在的范围,或者光标一闪一闪的位置上,那么像这类内容就不太适合用提高阈值的办法去解决,而是应该优先想到要用遮罩去把它们给遮挡住。

 

  2、调整比较模式

 

  Squish的截图校验,是支持好几种比较模式的,比如有那种严格匹配的模式,有基于像素比较的模式,还有基于颜色分布来比对的模式,它默认采用的是严格匹配的模式,而且这个比较的模式,只有在检查点被创建好之后才能再去修改,严格匹配的模式很适合用在那些完全稳定不变的图标和小控件上面;基于像素比较的模式,则适合用在那些只存在很少一点像素偏离的区域;至于基于颜色分布来比对的模式,它更适合从大的方面去判断颜色的分布情况,但它并不适合被拿来做非常精确的页面布局检查。

  3、设置容差范围

 

  对于字体边缘抗锯齿的效果、不同显卡渲染出来的差异,还有很轻微的颜色的不同,我们可以适当地把像素容差这个参数给加大一些,Qt那边关于截图校验的说明资料里面也提到了,图片的比对是可以通过给图像加上遮罩,再利用一种含有容差值的比较方法来慢慢调整的,在动手去调节这个数值的时候,不要一下子就把步子迈得太大,可以先从比较小的范围开始试着跑一跑,一边跑一边去看它失败的比率和对错误放行的情况怎么样。

 

  4、用遮罩处理动态区域

 

  像时间戳、进度条、用户名、会变动的图表,还有广告区域这些部分,比较建议的做法,是在截图校验的对话框里面去设置好遮挡用的遮罩,借助遮罩,就能让这些部位不用再去参加后面的比对了,这种做法比起单纯依靠把整体阈值往上调的思路,要来得更加可靠一些。

 

  三、Squish图像校验不稳定怎么处理

 

  图像校验的结果要是不稳定,常见的原因呀,多半是运行时的环境、截图所划定的范围,还有操作当中等待的时机没有把控好,阈值的调整它只能去解决那些很轻微的差异,像界面都还没加载完、窗口的尺寸变了样,或者主题颜色被切换了这类的问题,阈值是根本处理不了的。

 

  1、固定运行环境

 

  在执行用例之前,就得先把分辨率、DPI的缩放、主题的模式、字体、语言,还有窗口的大小都给统一起来,如果在不同的机器上面去跑同一套图像校验,那么这些环境上面的差别就会很直接地反映到截出来的图上,让比对变得不准确。

 

  2、增加等待条件

 

  千万不要等到界面刚一打开,就急急忙忙地去截图,妥当的做法是,得先等到目标控件已经可见、数据也加载完成了,并且动画效果也彻底结束了之后,再去执行图像校验,要不然的话,截图所拿到的就只是运行过程中的一个中间状态,到了这个时候,不管阈值再怎么去调,结果都不会稳定下来。

 

  3、缩小校验范围

 

  能只校验控件就不要校验整个窗口,能只校验那几个关键的图标,就最好不要把一整块大的区域都包进来,因为图像校验这项操作,越是靠近你真正想去验证的那个视觉上的结果,后期需要投入的维护成本也就越低。

 

  4、保留失败样本

 

  要把那些跑失败了的截图、期待中的截图、标出差异的截图,还有当时运行环境的记录都给保留下来,如果多次的失败都是集中在同一个区域里面,那就去改动基准用的那张图,或者去修改遮罩;可要是每次失败的位置都完全不一样,那就要回头去仔细查一查运行环境和当初设置的等待逻辑了。

  总结

 

  在设置Squish的图像校验时,先是拿截图检查点的方法去保存好一张稳定可靠的基准图,然后再利用能看差异的那个视图去核查失败的具体原因,在动手调阈值的时候,可不要一上来就把全局的规则放得很宽,而应该先分清楚问题到底是出在动态的区域上、颜色的偏差上、渲染的不同上,还是加载时机没有对上,只要能靠设置遮罩来解决的问题,就不要去依赖把容差调大,只要能缩小截图范围的,就不要把整个屏幕都截下来,这样做的话,图像校验才会变得比原来更加稳定。

135 2431 0251