图像比对技术在软件自动化测试中的应用探究

图像比对技术在软件自动化测试中的应用探究

2023年6月29日发(作者:)

泰尔检测《信息通信技术与政策》2019年11月第11期七七七七七七七七七七七七七七七七七七七图像比对技术在软件自动化测试中的七七七七七七七泰尔检测应用探究苗力元李启明刘雅东郑梦青摘要:分析了当前Web自动化测试工具在软件自动化测试中应用的状况,提出了将图像比对技术引入Web自动化测试的方法。从现有的Applitools软件测试平台入手,分析了其功能及结构,给出了将图像比对技术引入Web自动化测试的系统结构。同时,尝试利用Pillow和OpenCV库在本地进行图像比对操作,实现了Applitools在云端的功能。并将其与Selenium框架相结合,实现了纯本地化的图像自动化测试。最后,对于图像自动化测试提出了可能的发展建议。关键词:图像比对;软件测试;自动化测试;Web应用测试1引言随着电子计算机软件和网络技术的发展,越来越2Web自动化测试现状分析及存在问题目前,能够进行Web自动化测试的工具有很多,比多的应用软件特别是浏览器/服务器(B/S)架构的Web应用软件被开发。为了保障这些应用程序的质量,软件测试成为软件开发环节中必不可少的一部分,也成为了软件开发成本中占比较大的一部分。为了节约在软件测试中消耗的人力、物力等资源,降低软件开发成本,自动化测试被引入。自动化测试可以帮助测试者在软件项目的每一个版本迭代之后能够迅速而全面地对被测程序进行测试。具有测试速度快、覆盖全面、准确度高、可重复利用等优势。对于一些需求变动不频繁、周期长的软件项目,测试者往往使用自动化测试工具来进行回归测试。但是,目前软件自动化测试特别是自动化功能测试还存在许多问题。其中一个较大的问题在于,功能测试作为一种测试软件的功能完备性、功能正确性、功能适合性等特性的测试,判定结果的标准较为模糊,通常需要人为判定结果的正确与否。在加入了自动化脚本之后,测试执行的效率大大提升,但是对于测试结果的判定,需要在准确度和效率上做一个取舍。较成熟的有MicroFocus公司的UFT等功能强大、界面友好的测试系统,也有Selenium这种开源的、可定制度高的测试库。文本验证法目前是最常用的、较为可靠的结果验证方法。其一般步骤为:先从文件或数据库中读取预期结果文本并存入一个变量A;再从结果网页上读取目前结果变量B;然后将结果A和结果B进行对比。同时,也可以采用页面元素验证或者窗口变化验证等方法,其实现方式与文本验证相类似,都是通过读取结果页面中的内容并与预期结果进行比较的形式。这些方式都存在着一些问题,比如,结果不够全面。假设在某一次版本迭代之后,页面中的一个按钮位置发生了偏移,但是其功能依然正常发挥,自动化测试脚本就能够顺利执行完毕。假设采用文本验证法,校验结果将不会发生改变。因此,一种能够解决自动化测试中结果判定问题的有效方式亟待研究。3Web自动化测试结果判定方案研究目前,人工智能、机器学习、图像识别等技术快速·79·Copyright©博看网 . All Rights Reserved.□InformationandCommunicationsTechnologyandPolicyNo.11CHINATTLTEST发展,许多测试人员和专家正在思考能否将这些新技术应用于自动化测试当中来。Applitools便是其中的先行者之一。Applitools的重点研究对象是使用人工智能驱动的可视化测试,其产品-ApplitoolsEyes是一套在线的自动化测试系统,能够将图像识别技术与自动化测试相结合。ApplitoolsEyes的实现步骤如下:(1)将截图加入结果判断步骤中,抓取全页面截图。(2)比较不同平台/不同软件版本下的截图,通过人工智能驱动的图像识别算法得到这些图像之间的差异。(3)通过前期的部分人工判断,对于每个发行版本执行自动化视觉测试,其将自动忽略一些因素带来的微小差异,告知版本迭代带来的巨大视觉差异。其具体应用流程如图1所示。以Python语言配合Selenium测试框架为例,当使用ApplitoolsEyes时,首先需要引用其模块,之后仅需在需要进行图像比对的位置调用check_window函数,即可将图像传输至Applitools服务器进行比对分析。第一次执行测试时,Applitools会自动设定该图像为基准图像,并对后续测试中图像中的差异做出标注,但是会自动忽略一些微小性非程序差异,比如图中超链接文本的颜色。默认情况下,出现差异将会被标记为测试不通过,但是可以手动进行忽略操作。每一次迭代测试都将显示在Applitools面板中进行统一管理,并可以清晰地看到每一次测试的结果和问题。4基于图像比对的自动化测试系统机制探究通过上文的探究分析,不难看出Applitools系统包含下列主要组件:●被测软件。●验证被测软件正确性的测试集。●在测试集中用来抓取截图和进行视觉检查的图1ApplitoolsEyes应用流程·80·Copyright©博看网 . All Rights Reserved.泰尔检测《信息通信技术与政策》2019年11月第11期SDK。送事件。●测试框架,这里是Selinium,用来向被测软件发●Eyes服务器,用来接收和存储从SDK发来的被●Eyes测试管理器,让用户查看测试结果,报告缺将上述组件组合起来,可得到如图2所示系统结构图,可将图中的步骤描述如下:1:测试者执行测试集,之后一直循环下面的步骤;2.1:使用测试框架如Selenium模拟用户动作(比如鼠标点击或者键盘输入);2.2:调用EyesSDK来进行视觉检查;2.2a:EyesSDK使用测试框架取得截图;2.2b:EyesSDK发送图像到服务器,并将其与存储在服务器上的基准图像进行对比;3:前面测试中的图像处理完毕之后,服务器回复是否找到差异;4:测试者使用测试管理器查看测试结果,更新基准图像,标记缺陷,标注需要特别处理的地方。在查看完所有的结果之后,测试者保存用于下一次测试执行时的基准图像。通过以上分析不难看出,整个Applitools系统中最核心的部分——结果图像差异比对运行在Applitools的服务器端。通过ApplitoolsSDK将测试结果图像传至服务器之后,服务器端进行比对运算,并将结果发回测试者。测软件截图,将其同基准图像进行比对后报告差异。陷,管理基准图像。5图像比对技术的实现为了深入探究图像比对技术在软件自动化测试中的应用,下面探究图像比对的方法。这里将使用Pillow和OpenCV两种库在Python语言下进行图像比对探究。5.1使用Pillow库进行比对Pillow是在PIL基础上创建的兼容版本,能够支持Python3.x版本,功能强大、简单易用。借助其ImageChops模块,我们能够快速找到两幅图像的逐像素对比结果。图2ApplitoolsEyes系统结构图·81·Copyright©博看网 . All Rights Reserved.□InformationandCommunicationsTechnologyandPolicyNo.11CHINATTLTEST用于比对的函数如下:defcompare_images(path_one,path_two,diff_save_location):image_one=(path_one)image_two=(path_two)diff=ence(image_one,image_two)x()isnotNone:(diff_save_location)其中,path_one和path_two代表两幅图像的位置,diff_save_location代表结果保存的位置。使用测试网页进行测试,将变更前和变更后的图像进行Pillow对比(见图3)。可见,这两幅图像的不同之处已经被标记出来,而相同颜色的部分使用了黑色。在这种情况下,可以认为:如果图像的颜色不是全黑色,而是出现了别的颜色,就表明两幅图像的内容是不一致的,测试结果发生了改变。但是这里存在一个问题,不是所有结果变动都代表着测试结果应该被标记为失败。有部分差异是合理的、正当的,这部分应当被排除。同时,测试者可能希望能够将差异之处用指定颜色表示,其他位置保持原有颜色。因此,可能需要借助别的图像运算库,才能够达到我们的需求。被存储进一个三维数组,维度分别是高度、宽度和色彩通道数,比如有一张图片宽度、高度是300×100,用返回的数组为(100,300,3)。通过对两张图片每个色彩点位的值进行比较,便可得出图像差异信息。对于两张图像每一个点位的3个通道颜色值作差值,当两张图像上的同一点位差值为0时,代表这两个点位色彩一致。对整个图像做遍历操作,当颜色差为0时,保留原色彩;当颜色差不为0时,将颜色设置为粉色,标识出差异。具体函数代码如下:defcompare_img(img1,img2):print()print()height1=[0]weight1=[1]channels1=[2]imgc=(,8)forrowinrange(height1):forcolinrange(weight1):forcinrange(channels1):pv=img2[row,col,c]-img1[row,col,c]ifpv!=0:imgc[row,col,0]=250imgc[row,col,1]=131imgc[row,col,2]=255elifpv==0:imgc[row,col,c]=img1[row,col,c]("compare",imgc)当使用此代码进行图像比对时,将会得到如图4所示的结果。图3对比结果5.2使用OpenCV库进行比对OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。当使用OpenCV读取文件时,图像的颜色信息将图4使用OpenCV库进行比对的结果·82·Copyright©博看网 . All Rights Reserved.泰尔检测《信息通信技术与政策》2019年11月第11期在此基础上,对代码加以改良,让其能够不对指定区域进行比对。经过改良以后的比对结果如图5所示。可以发现,数字部分不再被判定为差异部分,这符合测试者的期望,因为网页中的该部分可能是随机出现的,而并不是因为软件版本迭代或其他原因导致的显示错误。试的发展方向之一。7.1基于图像相似率的自动判断结构相似性(SSIM)是一种衡量两幅图像结构相似度的指标,其值越大越好,最大为1。参考文献[4]中的计算方法如下所示:(1)该算法可以通过e库中的compare_ssim函数实现。通过记录两次合格的样本测试的SSIM值来判断之后的迭代测试图像是否符合要求。假如某一次的迭代测试图像与基准图像的SSIM值小于基准值,则说明可能存在较大差异,需要进一步人工确认;假如该值大于基准值,则说明差异较小,无需人工干预。通过这种方式,可以减少在图像差异较小时的人工判断次数,提高自动化测试效率。7.2基于机器学习的自动判断目前在Applitools提供的自动化测试平台中,需要人工划定无需比对的区域。如果能够自动划定无需对比的区域,毫无疑问将会大大提高自动化测试效率。这可能会用到机器学习技术。利用机器学习技术,当测试者多次认定某差异不为软件缺陷时,自动化测试程序能够自动将该区域排除,并在之后的迭代测试中不再对该区域进行比对。通过这种方式,可以减少在自动化测试中的人工干预,提高测试者的工作效率。图5经过改后的比对结果经过改良后的图像比对代码已经能够带来与Applitools相似的结果。但是,未能与自动化测试相结合。为了能够将使用OpenCV库的图像比对加入至Selenium自动化测试中,需要将该部分代码整理、封装并引入自动化测试代码当中。6将图像比对与自动化测试相结合在一般的自动化测试中,通常是通过读取网页上的元素来进行结果判断。在结合了本地图像比对之后,可以使用页面截图来进行结果判断操作。Selenium自动化测试库中自带截图函数save_screenshot。在需要进行比对的点放置该函数,并调用OpenCV库进行图像比对即可。需要注意的是,在进行截图之前,窗口大小必须是固定的,否则将无法进行比较。在这里使用set_window_size函数即可,Selenium会根据该函数的参数值对窗口大小进行调整。8结束语图像比对技术在软件自动化测试中具有良好的发展前景。通过引入图像比对技术,可以大大提高自动化测试结果的准确性,同时减少对于人工的需求。特别是在图像相似率和机器学习引入之后,更是可以减少人工干预,实现准确、高效的软件自动化测试。7图像比对自动化测试改进的方向对于之前介绍的图像比对形式,最终还是需要测参考文献[1]曾利宏.分析软件自动化测试技术及应用[J].信息系统工程,2017(10):42.[2]姜文,刘立康.基于Selenium的Web软件自动化测试[J].试者进行人工介入确认,以确保结果是真实、可靠的。那么,减少测试者手动判断的介入,便成为了自动化测·83·Copyright©博看网 . All Rights Reserved.□InformationandCommunicationsTechnologyandPolicyNo.11计算机技术与发展,2018,28(09):47-52+58.[3]贾小军,喻擎苍.基于开源计算机视觉库OpenCV的图像处理[J].计算机应用与软件,2008(04):276-278.[4]闫乐乐,李辉,邱聚能,梁平.基于区域对比度和SSIM的图像质量评价方法[J].应用光学,2015,36(01):58-63.[5]葛修婷,潘娅.机器学习技术在软件测试领域的应用[J].西南科技大学学报,2018,33(04):TLTEST刘雅东郑梦青中国信息通信研究院泰尔系统实验室网络与中国信息通信研究院泰尔系统实验室网络与应用测评部助理工程师应用测评部助理工程师作者简介:苗力元李启明中国信息通信研究院泰尔系统实验室网络与中国信息通信研究院泰尔系统实验室网络与应用测评部助理工程师应用测评部助理工程师ResearchonapplicationofimagecomparisontechnologyinsoftwareautomatictestMIAOLiyuan,LIQiming,LIUYadong,ZHENGMengqingAbstract:Thispaperanalyzesthecurrentapplicationofwebautomationtesttoolsinsoftwareautomationtest,andputsforwardamengwiththeexistingtestingplatformcalledapplitools,thispaperanalyzesitsfunctionandstructure,andpresentsthesystemstrucametime,wetrytousethepillowandopencvlibrarytocompareimageslocally,scombinedwiy,ds:imagecomparison;softwaretest;automationtest;webapplicationtest(收稿日期:2019-11-01)·84·Copyright©博看网 . All Rights Reserved.

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688020651a67397.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信