基于图像对比的稳定性与一致性测试

本文章转载于搜狗测试

在互联网应用高速发展的时代,为了提供高可用、安全、高效的服务,发布应用前会从技术的角度对后台服务进行压力测试、稳定测试、安全测试、接口测试、容错测试等一系列测试环节。如何从实际用户的角度对服务器的一致性和稳定性进行测试呢?本文基于phantomjs、opencv图像处理、Javascript及Web开发等技术,从用户角度出发设计了一套针对服务一致性和稳定性测试的解决方案。

方案概述

本方案通过自主研发的测试机器狗Tigo驱动浏览器,用同样的请求参数在短暂时间内访问服务,同时截取浏览器全屏或特定区域的图像,然后对相应的一组图片进行相似性对比分析,最终实现对服务一致性和稳定性的测试。

技术特点

利用JavaScript技术,可以忽略掉页面中不感兴趣的区域,只针对目标区域进行图像相似度对比。比如当页面中存在调试信息时,为了保证截图易于观察且避免调试信息影响图像对比结果,截取屏幕图像前会隐藏调试信息,同时为了方便发现、跟踪问题,现场又会恢复调试信息的展现;利用opencv技术对判断为不一致的图片进行分块标红,大大提高人工手动测试效率;当测试人员查看报告时,可放大对应测试组的截图以方便其阅读;平台化的使用入口。

测试报告

报告可以通过邮件和网页的形式展现,报告中统计了一致图片、不一致图片和相似图片的比例。可从整体上获得本次被测服务的稳定性情况。通过点击结果详情,可以分别查看相应测试的对比截图效果、抓取时间、现场html页面以及服务访问url。

适用场景

1多次访问部署在同一主机的服务,对服务进行稳定性测试。

2对部署在不同主机上的相同服务进行访问,进行一致性测试。

方案收益

1与人工验证相比,大大提高了测试效率。当对2个环境分别执行2700个用例,进行一致性测试时。完成本次测试任务,通过tigo机器人耗时大概1个半小时;而通过人工手动则需要一个测试人员耗费几十个小时。

2与通过人眼判断网页渲染结果是否一致相比,基于图像处理技术的方法提高了一致性测试的正确性。

实现细节

PhantomJS是一个基于webkit内核无界面浏览器,可通过selenium进行驱动打开网页、截取图片,截图前可以注入javascript代码隐藏或只渲染关注的页面区域,通过document.querySelectorAll找到元素,再动态设置对element.style.display=None进行设置以达到隐藏目的。利用opencv技术可以对截取的图像进行相似性分析.整体流程如图一所示:

图一测试流程

如何去判断两张截图是否一致呢?从机器学习的角度来说,要先选取图像的特征,然后在进行比对。很显然,在我们的项目中,并没有对图像进行过训练(即没有建立某种模型),图像的像素值因此成为了计算机最容易识别到的特征,于是本文选择了利用opencv技术进行图像对比分析。

从肉眼的角度来说,两张相似图片的直方图也是比较重合的,因此通过计算两张图像直方图的重合度,就可以得出这两张图像的相似程度(相似度为1.0代表两张图像完全一致)。但是,基于直方图的图像对比有一个明显的缺点,即它是按照颜色的全局分布来看的,无法描述颜色的局部分布和色彩所处的位置。因此,本文结合使用了另一种图像对比技术:平均哈希算法。该算法是通过比较灰度图每个像素与平均值来实现的,最后的结果为汉明距离(汉明距离为0,代表两张图像完全一致)。本文通过设定灰度直方图相似度与汉明距离双阈值(阈值可以根据实际需要调整)的方法,给出两张截图相似度结果(一致,相似,不一致)。该算法的简单流程图二:

图二图片对比流程

邮件报告输出如下

一致的case详情如下:

不一致的case详情如下:

对应带有调试信息的现场html页面如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 142,061评论 1 300
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 60,947评论 1 255
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 93,744评论 0 211
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 40,878评论 0 175
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 48,601评论 1 255
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,696评论 1 175
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,324评论 2 267
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,120评论 0 165
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 28,921评论 6 229
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,459评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,234评论 2 214
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,558评论 1 226
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,203评论 0 31
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,088评论 2 213
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,460评论 3 204
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,604评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 25,975评论 0 166
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,460评论 2 230
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,536评论 2 229

推荐阅读更多精彩内容