基于图像识别技术的pc自动化测试与应用流畅度测试方法
技术领域
1.本发明主要涉及自动化测试领域和机器视觉领域,具体涉及一种为pc端应用程序自动化测试和应用流畅度测试方法。
背景技术:2.在pc应用中,很多工具类应用功能强大,成为人们生产生活中不可或缺的一部分。若应用功能出现不可用或流畅度降低的情况,会为人们的工作带来严重的损失。因此,对应用的自动化测试技术和流畅度分析技术来保障应用的高可用性就变得非常重要。
3.流畅度测试的基础是自动化测试,在目前技术背景下,自动化测试往往需要深入程序内存空间,例如获取程序的界面结果或者执行相应的测试操作。在程序自身具备相应的检测机制时,这些操作才可能被程序检测到。当程序检测到这些行为时,通常会选择结束自身进程,以保护自身代码,从而无法对其进行自动化流畅度测试。
4.在自动化测试方面,一类自动化测试方法的常规流程包括获取应用界面结构、匹配控件信息、触发相应控件的功能,然后重新获取操作后的应用界面结构,完成全部测试操作;另一类自动化测试方法则较为简单,测试前要确定界面上的相应位置坐标,在坐标处模拟进行键盘、鼠标等操作,完成自动化测试。第一种方式大多依靠现有工具,通过读取内存的方式获取当前页面结构,在获取到页面结构之后,根据控件的路径或者是控件特征匹配到需要进行操作的控件,在确定需要进行操作的控件后,对其控件对象执行相应的操作。这种方式需要侵入应用的内存空间,在应用对自身代码进行严格保护的情况下,这种自动化测试方式无法生效。第二种根据坐标进行测试的方法,则需要根据测试界面进行准确的定位,一旦界面发生变化,该种自动化测试方法就会失效,维护成本很高。
5.在流畅度测试方面,常用的方法有流量分析与界面结构分析两种方法。流量分析方法通过抓取应用加载时的数据包对应用的加载情况进行大体判断,但是在目前大多数应用采取https或其他加密手段通信的环境中,这种方法不够准确,仅依靠数据包大小、访问域名等简单特征无法对应用加载情况进行准备判断,采取中间人攻击的方式,又容易被应用发现。界面结构分析将加载完成的界面结构与测试时界面结构对比,判断当前应用加载情况。同样这种方法需要侵入应用内存空间,在应用对自身代码保护严格的情况下,无法通过这种方法进行流畅度判断。
技术实现要素:6.针对上述进行应用流畅度测试时,现有技术的自动化测试依赖获取程序内存空间数据或是依赖固定坐标的不足,本发明提出一种基于图像识别技术的pc自动化测试与应用流畅度测试方法,以不侵入应用的方式对应用进行自动化测试,进行应用流畅度分析,在对具有安全保护机制的应用进行自动化流畅度分析时,具有较好的适用性,能够摆脱自动化测试对获取应用内存数据的依赖,同时也减少对固定坐标的依赖。
7.本发明的一种基于图像识别的pc自动化测试与应用流畅度测试方法,包括如下步
骤:
8.步骤1)在自动化测试脚本中预先存储控件的图像模板,设置测试操作,以及设置界面截图操作;其中,所述控件的图像模板为控件的特定logo截图或者部分图像截图;所述测试操作包括截图、暂停程序、识别控件、鼠标移动、鼠标单机、鼠标双击以及键盘输入;所述识别控件是指根据控件的图像模板从截图中识别控件位置;所述界面截图操作包括针对测试的不同界面设置截取应用界面的指定部分;
9.步骤2)当pc端接收到流畅度测试任务时,根据测试目标,调用执行对应目标的自动化测试脚本,对脚本中的每个测试操作依次进行自动化操作;其中每次操作包括:截取应用界面,在截图中识别待测试的控件位置,在控件位置执行测试操作;
10.步骤3)在对测试目标执行完所有测试操作后,当应用加载时间达到预设时间后,触发应用流畅度判断;所述应用流畅度的判断方式是:(3.1)首先截取应用界面,(3.2)其次统计截图中的预设颜色像素点个数以及所包含的色彩种类,然后与预先设置的阈值比较,满足阈值条件时判断程序加载完成,否则判断程序未加载完成,(3.3)若程序未加载完成,暂停设定时间后再重复执行(3.1)和(3.2),直到程序加载完成,或者测试超时;(3.4)根据程序加载所耗费的时间判定应用流畅度。
11.所述的步骤2中,对空间的图像模板进行多次不同比例的缩放,将缩放后的图像模板在截图中进行匹配寻找最相似的位置。
12.所述的步骤3中,预设颜色像素点为白色像素点。
13.与现有的各类自动化流畅度测试方法相比,本发明的优点与积极效果在于:
14.(1)本发明采用图像识别匹配的方式,解决了常规自动化测试工具需要侵入程序内存空间、在程序具有保护机制时无法使用的情况,实现了在应用无感知,即应用程序检测不到自身正在被测试的情况下,完成自动化测试。
15.(2)本发明方法采用图像识别匹配的方式,同时解决了常规方法依赖固定坐标进行自动化测试时,无法处理程序界面微小改变的问题。
16.(3)本发明方法采用白像素点与色彩丰富度作为特征对应用流畅度进行判断,解决了流量分析方法不准确的问题,本发明方法能更准确更快速的进行应用流畅度判断;并且本发明通过图像识别技术,以更贴近人的视觉感受的方式去判断应用的加载情况,用户体验更好。
附图说明
17.图1是本发明基于图像识别技术的pc自动化测试与应用流畅度测试方法的流程图;
18.图2是本发明实施例实现pc自动化测试与应用流畅度测试方法的具体流程图。
具体实施方式
19.下面将结合附图和实施例对本发明作进一步的详细说明。
20.本发明提供的一种基于图像识别技术的pc自动化测试与应用流畅度测试方法,整体流程如图1和图2所示,包括如下4个步骤。
21.步骤1,解析流畅度测试任务,根据任务内容中的测试目标,选取相应的自动化测
试脚本;并进行初始化操作,根据时间和测试目标创建相应的目录存放界面截图文件。
22.本发明预先针对不同测试目标设置相应的自动化测试脚本。
23.步骤2,读取自动化测试脚本文件,从中得到全部测试操作。测试操作包括:截图、暂停程序、识别控件、鼠标移动、鼠标单机、鼠标双击、键盘输入七种基础操作。截图、鼠标操作和键盘操作使用java自动化测试类robot完成。暂停程序使用睡眠函数实现。
24.针对识别控件的操作,本发明进行了改进。现有技术直接点击固定的坐标,坐标指向相应的控件,或者通过一些界面结构,如通过控件的xpath定位到相应的控件。而本发明预先采集控件的图像模板,如控件上特定的logo或具有识别度的部分图像,将logo或部分图像的截图作为模板,也即控件的特征图像,再利用图像识别技术在界面中找到与模板最相近的地方作为识别到的控件的位置。
25.步骤3,依次执行测试脚本中的操作。进行一次测试操作的流程包括:截取应用界面,在截图中识别待测试的控件位置,找到控件位置后按照测试脚本进行相应鼠标和/或键盘输入操作。步骤3进行一次测试操作包括如下步骤3.1~3.3。
26.步骤3.1,对程序界面进行截图,将截图保存为图片文件放到指定位置,供后续图片识别步骤使用。
27.截取应用界面操作主要分为两种,一种直接截取整个屏幕内容,另一种为根据测试脚本中预先定义的需求截取屏幕特定部分。本发明在测试脚本中根据测试的不同界面,可预先设置所截取的部分屏幕,而非整个屏幕,从而减少不必要的界面内容对图像识别造成影响。
28.步骤3.2,根据测试脚本,利用控件的特征图像与界面截图,在界面中识别该控件的位置。在识别过程中会对控件的特征图像进行缩放,以对不同分辨率下的界面进行适配。
29.本发明实施例识别控件位置操作主要通过opencv库实现,首先从测试脚本库中提取目标控件特征图像,利用该特征图像和应用界面截图进行匹配,尝试在应用界面截图中找到与目标控件最相似的位置。识别控件位置操作将会进行多次,对控件图像进行不同尺寸的缩放,尝试在应用界面截图中匹配缩放后的目标控件特征图像,通过这种方法处理控件特征图像分辨率与应用界面截图分辨率不一致的情况,以对不同分辨率下的界面进行适配。在匹配到相应位置后,使用方差的方式计算匹配到的控件图像与原有控件特征之间的差异值,将多次识别操作得到的差异值进行对比,找到其中方差最小,即与控件特征最相似的位置作为待测试控件位置的识别结果。
30.步骤3.3,在得到识别的控件位置后,根据测试脚本进行相应的鼠标、键盘输入操作,完成测试操作。
31.按照测试脚本重复执行上述步骤3.1~3.3,完成全部自动化测试项目。
32.步骤4,在完成全部自动化测试操作后,对应用的流畅度进行判断。本发明使用机器视觉技术分析界面特征来对应用的流畅度进行判断,本发明在测试操作执行完,应用加载时间达到所设定的时间后,触发流畅度判断逻辑,包括如下步骤4.1~4.4。
33.步骤4.1,首先根据需求对整个屏幕或者应用部分区域进行截图,并将截图保存为文件。
34.步骤4.2,判断应用是否出现加载出错的情况,如果出错直接结束本次自动化测试,返回结果,否则继续步骤4.3。
35.步骤4.3,对界面截图的白像素点或是其他某种颜色的像素点的个数,以及色彩丰富度进行统计,与事先统计得到的阈值进行比较,如果白像素点的数量低于阈值,同时色彩丰富度大于阈值,判断此时应用界面加载完成,否则,加载未完成。
36.本发明实施例使用opencv库分析截图文件中的像素点信息,预先可设置所统计的颜色像素点,本发明实施例主要统计截图中白色像素点个数以及界面截图中包含的色彩种类。如果程序加载完成,那么程序中的白色像素点个数将会明显少于程序未加载完成时界面中的白色像素点个数。同理,加载完成时界面中的色彩种类应明显多于程序未加载完成时。
37.将当前统计得到的白色像素点个数和色彩种类,与测试脚本中事先测试得到的经验值进行对比,如果白色像素点个数少于阈值,同时色彩种类多于阈值,判定此时程序加载完成,否则判断程序加载未完成。所述的阈值是预先多次对程序页面加载完全后的白像素点和色彩种类的值进行测试统计,从而设置出来的。
38.步骤4.4,如果判断程序加载完成,则进入步骤4.5;如果判断程序加载未完成,则暂停流畅度判定程序一段时间后,再返回步骤4.1。
39.如果判断应用界面尚未加载完毕,则当前流畅度判断程序睡眠一定时间后,重复整个步骤4,直至判断界面加载完成或是测试过程超时。
40.步骤4.5,根据程序加载耗费的时间,给出本次测试的流畅度判断结果,将判断结果打包返回测试数据,完成自动化流畅度测试。
41.除说明书所述的技术特征外,均为本专业技术人员的已知技术。本发明省略了对公知组件和公知技术的描述,以避免赘述和不必要地限制本发明。上述实施例中所描述的实施方式也并不代表与本技术相一致的所有实施方式,在本发明技术方案的基础上,本领域技术人员不需要付出创造性的劳动即可做出的各种修改或变形仍在本发明的保护范围内。
技术特征:1.一种基于图像识别技术的pc自动化测试与应用流畅度测试方法,其特征在于,包括如下步骤:(1)在自动化测试脚本中预先存储控件的图像模板,设置测试操作,以及设置界面截图操作;其中,所述控件的图像模板为控件的特定logo截图或者部分图像截图;所述测试操作包括截图、暂停程序、识别控件、鼠标移动、鼠标单机、鼠标双击以及键盘输入;所述识别控件是指根据控件的图像模板从截图中识别控件位置;所述界面截图操作包括针对测试的不同应用界面设置截取界面的指定部分;(2)当pc端接收到流畅度测试任务时,根据测试目标,调用执行对应目标的自动化测试脚本,对脚本中的每个测试操作依次进行自动化操作;其中每次操作包括:截取应用界面,在截图中识别待测试的控件位置,在控件位置执行测试操作;(3)在对测试目标执行完所有测试操作后,当应用加载时间达到预设时间后,触发应用流畅度判断;所述应用流畅度的判断方式是:(3.1)首先截取应用界面;(3.2)其次统计截图中的预设颜色像素点个数以及所包含的色彩种类,然后与预先设置的阈值比较,满足阈值条件时判断程序加载完成,否则判断程序未加载完成;(3.3)若程序未加载完成,暂停设定的时间后再重复执行(3.1)和(3.2),直到程序加载完成,或者测试超时;(3.4)根据程序加载所耗费的时间判定应用流畅度。2.根据权利要求1所述的方法,其特征在于,所述的步骤2中,识别待测试的控件位置时,对空间的图像模板进行多次不同比例的缩放,每次将缩放后的图像模板在截图中进行匹配,寻找最相似的位置;对匹配到的位置,使用方差计算匹配到的控件图像与图像模板之间的差异值,选取方差最小的匹配位置作为控件位置识别结果。3.根据权利要求1或2所述的方法,其特征在于,所述的步骤3中,预设颜色像素点为白色像素点。4.根据权利要求3所述的方法,其特征在于,所述的步骤3中,预先设置的阈值是根据程序加载完成情况下的白色像素点个数以及所包含的色彩种类进行设置。5.根据权利要求4所述的方法,其特征在于,所述的步骤3中,满足阈值条件是指,统计的白色像素点个数少于对应阈值,同时色彩种类多于对应阈值。
技术总结本发明提供了一种基于图像识别技术的PC自动化测试与应用流畅度测试方法,涉及自动化测试领域和机器视觉领域。本发明方法包括:预先针对不同测试目标设置自动化测试脚本,脚本包括控件的图像模板、测试操作等;当PC端接收到流畅度测试任务时调用相应脚本,依次执行测试操作,每次都先截取应用界面识别待测试控件的位置;当执行完所有测试操作后,经过特定时间后触发应用流畅度判断,采用白像素点与色彩丰富度作为特征对应用流畅度进行判断。本发明方法可实现在应用无感知的情况下完成自动化测试,解决现有依赖固定坐标调用控件的问题,能更快更准确进行应用流畅度判断,且用户体验更好。更好。更好。
技术研发人员:姜松浩 王博 朱天 董自勘
受保护的技术使用者:国家计算机网络与信息安全管理中心
技术研发日:2022.05.11
技术公布日:2022/11/1