基于图像识别的软件测试方法、装置、设备及介质与流程

文档序号:28492879发布日期:2022-01-15 03:13阅读:105来源:国知局
基于图像识别的软件测试方法、装置、设备及介质与流程

1.本发明涉及软件测试领域,尤其涉及一种基于图像识别的软件测试方法、装置、计算机设备及存储介质。


背景技术:

2.目前的软件自动化测试,不论ui(user interface,用户界面)自动化或是api接口(application programming interface,应用程序接口)自动化,都不能完全模拟人类的实际操作行为,执行成功率也受到自动化框架及技术的一些限制。因而,此类自动化测试的灵活性受到限制。同时现有的自动化设计和执行对测试人员的脚本代码能力要求较高,需要成熟的测试开发人员支持。


技术实现要素:

3.基于此,有必要针对上述技术问题,提供一种基于图像识别的软件测试方法、装置、计算机设备及存储介质,以在保证测试灵活性的同时,降低自动化测试的实施难度。
4.一种基于图像识别的软件测试方法,包括:
5.获取待测试的应用程序的界面图像;
6.识别所述界面图像中的若干控件对象;
7.判断所述若干控件对象中是否包含与用例步骤匹配的目标控件对象,所述用例步骤用于测试所述应用程序;
8.若所述若干控件对象中包含与用例步骤匹配的目标控件对象,则根据所述用例步骤生成用于操作所述目标控件对象的操作控制指令;
9.根据所述操作控制指令控制至少两个操作部件中的至少一个所述操作部件,以执行所述用例步骤包含的测试操作。
10.一种基于图像识别的软件测试装置,包括:
11.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现上述基于图像识别的软件测试方法。
12.一个或多个存储有计算机可读指令的可读存储介质,所述计算机可读指令被一个或多个处理器执行时,使得所述一个或多个处理器执行如上述基于图像识别的软件测试方法。
13.本发明通过操作部件模拟测试人员的测试操作,可以实现应用程序的自动化测试,同时,不需要编写应用程序的自动化测试脚本,真正实现业务人员与测试技术、自动化开发代码能力的分离。本发明可以实现全仿真的实物真实操作自动化,这种智能自动化将大量减少测试人员的机械操作,将节省大量的人力投入,降低测试成本,提升测试效率。并能解耦项目团队对高级测试人员的能力复杂度要求,让专业测试人员更多精力专注于用例场景设计和探索性测试。
附图说明
14.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
15.图1是本发明一实施例中基于图像识别的软件测试方法的一应用环境示意图;
16.图2是本发明一实施例中基于图像识别的软件测试方法的一流程示意图;
17.图3是本发明一实施例中基于图像识别的软件测试装置的一结构示意图;
18.图4是本发明一实施例中计算机设备的一示意图。
具体实施方式
19.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.本实施例提供的基于图像识别的软件测试方法,可应用在如图1的应用环境中,其中,客户端与服务端进行通信。其中,客户端包括但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
21.在一实施例中,如图2所示,提供一种基于图像识别的软件测试方法,以该方法应用在图1中的服务端为例进行说明,包括如下步骤:
22.s10、获取待测试的应用程序的界面图像。
23.可理解地,待测试的应用程序可以是运行在测试终端(如手机、平板电脑)上的程序。界面图像指的是包含应用程序的应用界面的图像。界面图像可以通过拍照获得,也可以通过截图的方式获得(该截图可以由测试终端发送给执行主体)。在此处,获取界面图像的执行主体可以是机器人或者是机器臂(设置有摄像头)。机器人可以通过模拟测试人员的操作,实现对运行在测试终端上的应用程序进行测试。机器人指的是具有图像识别功能的机器人。
24.s20、识别所述界面图像中的若干控件对象。
25.可理解地,控件对象可以是应用界面上的页面栏位(如输入框)或者是按钮。可以通过图像识别模式识别出控件对象。在此处,控件对象呈现的方式可以是文字或图形(图标等)。在一示例中,控件对象可以是应用界面上的“确认”按钮。
26.在一些示例中,还可以识别出各个控件对象的三维坐标。可以通过三维坐标生成用于精确控制目标控件对象的操作控制指令。
27.在另一示例中,可以获取应用程序的多个应用界面,对应用界面中的控件对象进行标记,然后根据新开发的版本进行自动识别和替换。
28.s30、判断所述若干控件对象中是否包含与用例步骤匹配的目标控件对象,所述用例步骤用于测试所述应用程序。
29.可理解地,可以使用测试用例对应用程序进行测试。在此处,用例步骤指的是测试
用例中的某一个步骤。用例步骤包括测试动作和测试对象。在一示例中,用例步骤为:点击提交按钮,则测试动作为“点击”,测试对象为“提交按钮”。
30.若干控件对象中包含与用例步骤匹配的目标控件对象,指的是在机器人识别出的若干控件对象中,包含与测试对象相同或等价的控件对象。例如,机器人识别出的若干控件对象包括“提交按钮”,用例步骤的测试对象为“提交按钮”,则机器人识别出的若干控件对象包含与用例步骤匹配的目标控件对象,该目标控件对象为“提交按钮”。在另一示例中,用例步骤的测试对象为“确定按钮”,机器人识别出“確定按钮”,此时也可以认为机器人识别出的若干控件对象包含与用例步骤匹配的目标控件对象。
31.s40、若所述若干控件对象中包含与用例步骤匹配的目标控件对象,则根据所述用例步骤生成用于操作所述目标控件对象的操作控制指令。
32.可理解地,操作控制指令指的是用于控制操作部件执行测试动作的控制指令。在一些示例中,操作部件可以是机器人的机械手臂。机械手臂可以设置有类似人手的关节,可以实现与人手一样的操作,这些操作包括但不限于点击、双击、长按、上下划动、左右划动、放大、缩小、摇晃。机械臂与测试终端的触摸屏接触的部分具有一定导电性,可以实现触摸操作。
33.操作控制指令可以是预先配置好的控制指令。当机器人识别出目标控制对象后,可以自动触发操作控制指令。
34.s50、根据所述操作控制指令控制至少两个操作部件中的至少一个所述操作部件,以执行所述用例步骤包含的测试操作。
35.可理解地,至少两个操作部件,可以指至少两个可活动的机械臂,也可以指一个机械手的至少两个可活动的手指。对于一些操作,如点击,只需要一个操作部件;对于另一些操作,如放大,则需要至少两个操作部件。
36.本实施例通过操作部件模拟测试人员的测试操作,可以实现应用程序的自动化测试,同时,不需要编写应用程序的自动化测试脚本,真正实现业务人员与测试技术、自动化开发代码能力的分离。
37.本实施例提供的基于图像识别的软件测试方法主要涉及软件测试的执行部分。在一应用实例中,基于图像识别的软件测试方法还涉及输入部分和控制部分。其中,输入部分主要是前端配置单元,用于输入测试用例集,输入执行用例集、输入界面图像集、输入机械臂调校参数。控制部分主要是后端配置单元,用于摄像头的传输控制、用例调度、图像识别对比、机械臂精准控制。
38.可选的,步骤s30之后,即所述判断所述若干控件对象中是否包含与用例步骤匹配的目标控件对象之后,还包括:
39.s31、若所述若干控件对象中不包含与用例步骤匹配的目标控件对象,则判定测试失败。
40.可理解地,若机器人无法识别出目标控件对象,则无法进行下一步的用例步骤,此时,可以判定当前测试失败。失败原因可能有两种,一种是由机器人在图像识别时发生错误,另一种是应用程序存在问题。对于第一种,可以使用更多的被测试程序的页面图像对图像识别模型进行训练,提高控件对象的识别能力。对于第二种,可以根据当前的界面图像以及用例步骤生成失败信息,提交到服务端,以便于开发人员分析出错原因。
41.可选的,步骤s10,即所述获取待测试的应用程序的界面图像,包括:
42.s101、在测试终端上运行所述应用程序,并显示所述应用程序的应用界面;
43.s102、通过拍摄装置对所述应用界面进行拍摄,获得所述界面图像。
44.可理解地,测试终端包括但不限于手机、平板电脑。特别的,测试终端可以指带有触摸功能,且可以运行应用程序的设备。可以在测试终端上运行待测试的应用程序,并显示该应用程序的应用界面。通过拍摄装置对该应用界面进行拍摄,可以获得界面图像。可以对界面图像进行识别,识别出界面图像中的控件对象。
45.可选的,所述操作部件包括机械手臂。
46.可理解地,在此处,操作部件可以是机械手臂。机械手臂可以模拟真人的测试操作,实现应用程序的自动化测试。
47.可选的,所述机械手臂为三轴机械手臂。
48.可理解地,在此处,使用的机械手臂可以是三轴机械手臂,可以实现上下、左右、前后三个维度的运动,实现不同的测试操作。
49.可选的,所述测试操作包括点击、双击、长按、上下划动、左右划动、放大、缩小、摇晃中的至少一种。
50.可理解地,测试操作包括点击、双击、长按、上下划动、左右划动、放大、缩小、摇晃中的至少一种。每一种测试操作都经过预先的训练,可以保证操作力度适中,控制精度高。在一些示例中,机械臂的触摸端还设置有压力传感器,该压力传感器可以测量触摸操作时触摸端与触摸屏之间的压力。该压力可以作为反馈信息,用于提高测试操作的精准度。
51.可选的,所述控件对象包括图形控件和/或页面栏位。
52.可理解地,控件对象包括但不限于图形控件和页面栏位。图形控件可以指应用界面上的按钮,如确认按钮、返回按钮等。页面栏位可以指各种输入框,如账户输入框、密码输入框。
53.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
54.在一实施例中,提供一种基于图像识别的软件测试装置,该基于图像识别的软件测试装置与上述实施例中基于图像识别的软件测试方法一一对应。如图3所示,该基于图像识别的软件测试装置包括获取图像模块10、识别模块20、判断模块30、生成控制指令模块40和测试模块50。各功能模块详细说明如下:
55.获取图像模块10,用于获取待测试的应用程序的界面图像;
56.识别模块20,用于识别所述界面图像中的若干控件对象;
57.判断模块30,用于判断所述若干控件对象中是否包含与用例步骤匹配的目标控件对象,所述用例步骤用于测试所述应用程序;
58.生成控制指令模块40,用于若所述若干控件对象中包含与用例步骤匹配的目标控件对象,则根据所述用例步骤生成用于操作所述目标控件对象的操作控制指令;
59.测试模块50,用于根据所述操作控制指令控制至少两个操作部件中的至少一个所述操作部件,以执行所述用例步骤包含的测试操作。
60.在一应用场景中,可以在服务端存储有大量个测试用例集,在测试现场,可以布置
n套软件测试装置。软件测试装置设置有至少两个操作部件和一个拍摄装置。由服务端同时控制n套软件测试装置,实现并行的软件测试。
61.可选的,基于图像识别的软件测试装置还包括:
62.失败模块,用于若所述若干控件对象中不包含与用例步骤匹配的目标控件对象,则判定测试失败。
63.可选的,获取图像模块10包括:
64.显示单元,用于在测试终端上运行所述应用程序,并显示所述应用程序的应用界面;
65.拍摄单元,用于通过拍摄装置对所述应用界面进行拍摄,获得所述界面图像。
66.可选的,所述操作部件包括机械手臂。
67.可选的,所述机械手臂为三轴机械手臂。
68.可选的,所述测试操作包括点击、双击、长按、上下划动、左右划动、放大、缩小、摇晃中的至少一种。
69.可选的,所述控件对象包括图形控件和/或页面栏位。
70.关于基于图像识别的软件测试装置的具体限定可以参见上文中对于基于图像识别的软件测试方法的限定,在此不再赘述。上述基于图像识别的软件测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
71.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于图像识别的软件测试方法涉及的方法。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于图像识别的软件测试方法。
72.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时实现以下步骤:
73.获取待测试的应用程序的界面图像;
74.识别所述界面图像中的若干控件对象;
75.判断所述若干控件对象中是否包含与用例步骤匹配的目标控件对象,所述用例步骤用于测试所述应用程序;
76.若所述若干控件对象中包含与用例步骤匹配的目标控件对象,则根据所述用例步骤生成用于操作所述目标控件对象的操作控制指令;
77.根据所述操作控制指令控制至少两个操作部件中的至少一个所述操作部件,以执行所述用例步骤包含的测试操作。
78.在一个实施例中,提供了一个或多个存储有计算机可读指令的计算机可读存储介质,本实施例所提供的可读存储介质包括非易失性可读存储介质和易失性可读存储介质。
可读存储介质上存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时实现以下步骤:
79.获取待测试的应用程序的界面图像;
80.识别所述界面图像中的若干控件对象;
81.判断所述若干控件对象中是否包含与用例步骤匹配的目标控件对象,所述用例步骤用于测试所述应用程序;
82.若所述若干控件对象中包含与用例步骤匹配的目标控件对象,则根据所述用例步骤生成用于操作所述目标控件对象的操作控制指令;
83.根据所述操作控制指令控制至少两个操作部件中的至少一个所述操作部件,以执行所述用例步骤包含的测试操作。
84.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,所述的计算机可读指令可存储于一非易失性可读取存储介质或易失性可读存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
85.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
86.以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1