CN115237800A - 一种自动化测试方法、系统、设备及可读存储介质 - Google Patents
一种自动化测试方法、系统、设备及可读存储介质 Download PDFInfo
- Publication number
- CN115237800A CN115237800A CN202210938448.2A CN202210938448A CN115237800A CN 115237800 A CN115237800 A CN 115237800A CN 202210938448 A CN202210938448 A CN 202210938448A CN 115237800 A CN115237800 A CN 115237800A
- Authority
- CN
- China
- Prior art keywords
- test
- program
- decorator
- target program
- graphical interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 161
- 238000000034 method Methods 0.000 claims abstract description 72
- 238000013515 script Methods 0.000 claims abstract description 53
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000013480 data collection Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 28
- 238000012545 processing Methods 0.000 abstract description 27
- 238000010998 test method Methods 0.000 abstract description 2
- 230000000875 corresponding effect Effects 0.000 description 55
- 230000006870 function Effects 0.000 description 39
- 239000003607 modifier Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005316 response function Methods 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000009517 secondary packaging Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种自动化测试方法、系统、设备及存储介质,其中方法包括:对目标程序添加装饰器,并通过装饰器收集目标程序录制运行时的关键数据;建立目标程序与对应测试接口的映射关系,基于映射关系生成测试用例脚本;基于测试用例脚本和关键数据对目标程序进行自动化测试。通过本发明提出方法,解决了手动测试人工编写脚本效率低,易出现漏测的问题;自动化测试方法中记录信息多,夹杂无效的事件导致处理复杂且对事件依赖性强,无法自动处理弹框,测试运行与实际运行存在差距等问题。通过上述方法实现了自动化测试脚本生成过程的简单高效且不易受事件和信号变更的影响,提高了测试精准度。
Description
技术领域
本发明属于计算机领域,具体涉及一种自动化测试方法、系统、设备及可读存储介质。
背景技术
图形用户界面(GUI)应用程序因其具有优良的交互性得到广泛的应用。在桌面应用程序中,因为PyQt既继承Qt的强大功能,又具有Python简单易用的特征,所以用PyQt编写的桌面应用程序非常多,涉及领域也非常广泛。任何桌面应用程序在其生命周期内都要进行不断的修改完善,包括针对问题的修改,适应环境变化的修改,满足新需求的修改等。为了确保软件的可靠性,应用程序在修改完成后需要进行手动测试或自动化测试。手动测试存在效率低下和漏测的可能,逐步在大型桌面应用程序测试中被淘汰。自动化测试普遍采用通过各种方式录制测试脚本,然后运行脚本验证桌面应用程序的正确性。现有的录制方式或是记录所有Qt事件和信号,或是记录响应后端响应程序。前者存在记录信息太多,夹杂无效的Qt事件,处理逻辑复杂,测试脚本易受Qt事件或信号变更影响的缺点,加之在运行脚本进行测试时多以模拟的方式处理消息队列,与软件实际运行的情况存在一定的差异。后者在处理常见的弹框提示时,多以在程序中区分运行模式的方式去掉弹框,避免测试进程阻塞,与软件实际运行的情况也存在一定的差异,但会造成测试内容不完整的情况。
因此,亟需一种有效的测试方法解决上述问题。
发明内容
为解决上述问题,本发明提出一种自动化测试方法,包括:
对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据;
建立所述目标程序与对应测试接口的映射关系,基于所述映射关系生成测试用例脚本;
基于所述测试用例脚本和所述关键数据对目标程序进行自动化测试。
在本发明的一些实施方式中,对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据包括:
对所述目标程序的图形界面驱动程序添加第一装饰器,并通过所述第一装饰器收集所述图像界面驱动程序在图形界面所显示的内容以及用户在所述图形界面中的操作。
在本发明的一些实施方式中,方法还包括:
将公共图形界面驱动程序进行私有化封装以生成所述目标程序的图形界面驱动程序,并在所述图形界面驱动程序添加事件过滤器。
在本发明的一些实施方式中,方法还包括:
响应于所述图形界面驱动程序在测试环境运行,通过所述事件过滤器将所述图形界面驱动程序运行信息发送给所述测试用例脚本。
在本发明的一些实施方式中,方法还包括:
响应于接收到事件过滤器发送的对应的图形界面驱动程序的运行信息,通过所述测试用例脚本获取所述图形界面对应的关键数据,并基于所述图形界面驱动程序当前显示的内容,查找匹配的关键数据,并基于匹配的关键数据中的记录的操作数据对所述图形界面进行操作。
在本发明的一些实施方式中,对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据包括:
对所述目标程序的后端响应程序添加第二装饰器,并通过所述第二装饰器收集所述后端响应程序数据信息。
在本发明的一些实施方式中,方法还包括:
基于所述后端响应程序的数据信息中程序标识信息将为每一个后端响应程序建立对应的测试接口,并将所述程序标识和测试接口名称作为映射关系保存。
本发明的另一方面还提出一种自动化测试系统,包括:
数据收集模块,所述数据收集模块配置用于对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据;
脚本生成模块,所述脚本生成模块配置用于建立所述目标程序与对应测试接口的映射关系,基于所述映射关系生成测试用例脚本;
自动化测试模块,所述自动化测试模块配置用于基于所述测试用例脚本和所述关键数据对目标程序进行自动化测试。
本发明的又一方面还提出一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现上述实施方式中任意一项所述方法的步骤。
本发明的再一方面还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述实施方式中任意一项所述方法的步骤。
通过本发明提出的一种自动化测试方法,解决了现有方法手动测试人工编写脚本效率低,易出现漏测的问题,解决了现有自动化测试方法中记录信息多,夹杂无效的事件,处理复杂,对事件依赖性强,无法自动处理弹框,测试运行场景与实际运行存在差距等问题。让自动化测试脚本生成过程变得简单高效,不易受事件和信号变更的影响,同时在运行脚本进行测试时无需对弹框做特殊处理,让桌面应用程序的测试更贴近真实运行情况,提高测试精准度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种自动化测试方法的方法流程图;
图2为本发明实施例提供的一种自动化测试系统的系统结构图;
图3为本发明实施例提供的一种计算机设备的结构示意图;
图4为本发明实施例提供的一种计算机可读存储介质的结构示意图;
图5为本发明实施例提供的图形界面驱动程序二次封装示意图;
图6为本发明实施例提供的为图形界面驱动程序接口增加装饰器示意图;
图7为本发明实施例提供的为图形界面驱动程序实例增加用于记录的事件过滤器处理入口示意图;
图8为本发明实施例提供的保存的图形界面驱动程序信息示意图;
图9为本发明实施例提供的为后端响应程序增加装饰器的示意图;
图10为本发明实施例提供的图形界面驱动程序对应的装饰器的处理函数示意图;
图11为本发明实施例提供的为图形界面驱动程序实例增加用于记录的事件过滤器处理过程示意图;
图12为本发明实施例提供的装饰器处理函数示意图;
图13为本发明实施例提供的为图形界面驱动程序的实例增加用于记录的事件过滤器处理入口示意图;
图14为本发明实施例提供的用于自动测试对图形界面自动点击的处理函数的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
本发明旨在解决现有的桌面段带有界面的应用程序的自动化测试过程中,因弹窗等界面需要人为关闭等特点与自动化相悖所,所以在传统的实现方式上采用跳过弹窗的方式进行应用程序测试,缺乏对弹窗应用程序的测试工作,或者是有人工手动的对弹窗进行单独测试。也即在传统的实现方式上无论是跳过还是人工手动对弹窗进行测试均不是自动化测试,要么采用跳过测试的方式忽略其安全性,要么采用手动测试的方式增加其工作量,延长测试时间。
如图1所示,为解决上述问题,本发明提出一种自动化测试方法,包括:
步骤S1、对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据;
步骤S2、建立所述目标程序与对应测试接口的映射关系,基于所述映射关系生成测试用例脚本;
步骤S3、基于所述测试用例脚本和所述关键数据对目标程序进行自动化测试。
在本发明的实施例中,本发明以Python语言的PyQT作为桌面应用程序的开发框架。在步骤S1中,目标程序是指基于PyQT的编写的与弹窗相关的程序,即该程序是处理弹窗业务相关的一个或多个方法函数,通过Python语言的装饰器对目标程序的一个或多个方法函数进行修饰处理,在目标程序的基础上增加额外的收集目标程序运行时的和弹窗内容相关的关键信息,例如,弹窗中显示的内容,弹窗中相应的按键的标识代码、在运行时被用户点击的结果,或者应该点击的结果、弹窗中显示的额外信息、配饰信息等。录制运行时指有人为运行对应的应用程序,当执行到弹窗时由测试人员点击对应弹窗内容,在此过程中,通过装饰器收集弹窗中显示的内容以及用户的操作。需要说明的是,本发明实施例只是以Python语言为例解释本发明的实施方式,基于装饰器的方式可以因不同的编程语言而灵活适配不同编程语言的处理机制,例如在JAVA语言中可以将装饰器换成注解以及利用反射机制获取目标程序运行时的运行信息并作为关键数据。
在步骤S2中,测试接口是指通过自动化测试执行时对应的方法或函数,通过执行对应的测试方法来对目标程序运行时进行操作,因此需要将目标程序与对应的测试接口进行关联,即建立映射关系,当目标程序在自动化测试中被执行时调用对应的测试接口对目标程序进行处理,同时将对应的测试接口封装成测试用例脚本,即将对应的测试接口以源代码(Python是一种非编译语言,通常是以源代码的方式执行,可动态修改)的方式写入到对应的测试源代码文件中。也即测试用例脚本是对目标程序进行自动化测试的源代码文件,Python中的.py后缀的文件。
在步骤S3中,在自动化测试中,当应用程序运行到弹窗相关的目标程序时,调用对应的测试用例脚本中与目标程序相关的测试接口,并按照关键数据记载的内容对弹窗及弹窗相关的目标程序进行操作。
在本发明的一些实施方式中,对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据包括:
对所述目标程序的图形界面驱动程序添加第一装饰器,并通过所述第一装饰器收集所述图像界面驱动程序在图形界面所显示的内容以及用户在所述图形界面中的操作,例如根据关键数据中记载的内容向弹窗中写入数据或者是点击弹窗中对应的按钮。
在本实施例中,目标程序包括显示图形界面的图形界面驱程序,即通过该程序可以在操作系统中显示对应的内容,用于弹窗的目标程序一般包括用于界面显示界面GUI的图形界面驱动程序和后端响应程序。在本实施例中,通过对图形界面驱动程序对应的方法或函数添加收集图形界面驱动程序的入参和返回值的装饰器,以获取该图形界面驱动程序渲染的GUI界面上显示的文字内容以及控件内容(按键或列表内容)。同时通过装饰器获取图形界面驱动程序所渲染的GUI图形界面在用户点击后的向后端传递的数据以及用户在GUI图形界面的操作对象。
在本发明的一些实施方式中,方法还包括:
将公共图形界面驱动程序进行私有化封装以生成所述目标程序的图形界面驱动程序,并在所述图形界面驱动程序添加事件过滤器。
在本实施例中本发明实施例中的图形界面驱动程序是基于PyQT框架进行开发,在应用本发明所使用的方法时,不可直接使用PyQT库中的弹窗接口类程序,需要对PyQT中的QMessageBox类进行二次封装,即根据业务需要将对应的PyQT的QMessageBox类的方法嵌入到自定义的弹窗方法中,再用装饰器对自定义的弹窗方法进行修饰。具体地,参考图5-6,图5示出的是本发明一实施例自定义实现的一弹窗处理类,图6示出的是对图5中的critical()方法增加对应的装饰器方法。
进一步,对自定义的弹窗方法中添加事件过滤器,具体地如图7所示,图7示出的是图5中的show_message_box()方法中添加事件处理函数global_msgbox_listener的方式,而show_message_box()是用于显示弹窗窗口的方法,当其被执行时,则调用对应的事件过滤器函数相继执行。
在本发明的一些实施方式中,方法还包括:
响应于所述图形界面驱动程序在测试环境运行,通过所述事件过滤器将所述图形界面驱动程序运行信息发送给所述测试用例脚本。
在本实施例中,在在动或测试时,当自定义的弹窗方法被触发时通过事件过滤器,将弹窗事件发送到对应的测试接口(测试用例脚本执行后启动的测试接口)。
在本发明的一些实施方式中,方法还包括:
响应于接收到事件过滤器发送的对应的图形界面驱动程序的运行信息,通过所述测试用例脚本获取所述图形界面对应的关键数据,并基于所述图形界面驱动程序当前显示的内容,查找匹配的关键数据,并基于匹配的关键数据中的记录的操作数据对所述图形界面进行操作。
在本实施例中,在录制运行阶段,通过本发明在图形界面驱动程序中添加的装饰器获取对应的图形界面驱动程序在GUI图形界面中显示的内容以及用户在基于GUI图形界面显示的内容对GUI图形界面中显示的内容的操作。并将获取到的图形界面显示内容和用户的对应内容保存为关键数据。保存的关键数据如图8所示,图8中第一组数字65536是为用户在弹窗界面中所点击的按键或相关容器对象代码,第二组字符串False表示不存在额外配置信息,第三组字符串None表示配饰信息为空,第四组字符串“open view configuretest”表示弹窗界面显示的内容,图示内容只是测试时的实例,进一步参考图10,图10示出了一个实施例中对对应的图形界面驱动程序收集信息的实例。
与之对应的在自动化测试阶段,测试接口将从保存的关键数据中查找对应的按键操作的对象代码或者其他容器类型的对象代码点击对应的按键。或者如果存在对应的输入内容,从关键数据中读取对应的输入内容输入到自动化测试过程的弹窗中。在本发明的一些实施例中,自动化测试过程中,自动测试流程关于弹窗方面的测试通常是以录制过程中的测试流程进行测试,因此图8中记录的内容将会是自动换测试中弹窗的出现顺序,测试接口按照顺序读取即可完成对对应的弹窗的操作。
在本发明的一些实施方式中,对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据包括:
对所述目标程序的后端响应程序添加第二装饰器,并通过所述第二装饰器收集所述后端响应程序数据信息。在本发明的一些实施方式中,方法还包括:
基于所述后端响应程序的数据信息中程序标识信息将为每一个后端响应程序建立对应的测试接口,并将所述程序标识和测试接口名称作为映射关系保存。
在本实施例中,进一步对目标程序的后端响应程序添加第二装饰器,具体的,如图9-10所示,通过对目标程序的后端响应程序添加第二装饰器,收集对应的后端响应程序运行时的入参、返回值、方法名称、类名等信息。并通过对应的映射关系找到对应的测试接口。通过本发明提出的一种自动化测试方法,解决了现有方法手动测试人工编写脚本效率低,易出现漏测的问题,解决了现有自动化测试方法中记录信息多,夹杂无效的事件,处理复杂,对事件依赖性强,无法自动处理弹框,测试运行场景与实际运行存在差距等问题。让自动化测试脚本生成过程变得简单高效,不易受事件和信号变更的影响,同时在运行脚本进行测试时无需对弹框做特殊处理,让桌面应用程序的测试更贴近真实运行情况,提高测试精准度。
实施例:
本发明提出了一种针对PyQt桌面应用程序的自动化记录和测试方法。其具体实施过程如下:
首先,封装PyQt自身的QMessageBox类(该类用于弹框提示)和接口。将常用的提醒、警告相关的接口定义为类静态接口,如附图5所示。封装的目的是为了使用@函数修饰符修饰这些类静态接口,在修饰函数中可以做一些必要的操作,如记录用户对弹框的操作以及其他与桌面应用程序有关的业务操作信息等。
其次,定位界面操作对应的后端响应程序(即后端响应程序),为后端响应程序增加@函数修饰符,编写修饰符处理函数。要达到自动记录用户操作步骤的目标,要求对界面的每一步操作在程序代码中找到具体的后端响应程序,用户的每一个具体操作,必然调用某个确定的后端响应程序。对后端响应程序增加@函数修饰符,如附图9所示(@global_recorder)。Python的@函数修饰符的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等。接着,增加修饰符处理函数,如附图12所示(record_slot_info),在处理函数内部记录当前后端响应程序名称、调用的对象信息、环境参数信息等。这样,测试人员或者其他用户的每个操作步骤都会通过修饰符处理函数,以后端响应程序信息的方式被自动记录下来。
再次,根据上述对@函数修饰符功能的描述,对封装后的弹框提醒、警告等静态类接口也增加@函数修饰符,如附图6所示(@global_msg_box_process.record_msg_info()),在修饰符处理函数如附图10所示record_msg_info中将信息保存,包括点击结果和弹框内容描述等,如附图8示例保存的是“点击结果|该弹窗中是否有额外配置信息|配饰信息|弹窗text”。在封装后的提醒、警告类接口调用的公共show_message_box接口中为当前弹框msgbox实例增加事件过滤器,捕获Show和Hide事件,如附图7和附图11所示。
从次,为界面的操作增加对应的API接口(测试接口),以及为后端响应程序和API接口建立映射关系。要达到将测试人员或其他用户的操作信息自动生成测试用例的目标,要求应用程序具有生成测试用例对应的必要API接口,调用某个API接口即可实现对应用程序界面的操作,比如按键点击、数据修改等。当前自动化测试应用非常广泛,在单元测试、集成测试以及压力测试中普遍采用自动化测试,而API接口是自动化测试的基础,从这个意义上讲,API接口是当前应用程序发布时的必备要素。要达到将测试人员或其他用户的操作信息自动生成测试用例的目标,还需要有后端响应程序和API接口的映射关系。用户的操作记录已经以后端响应程序的方式记录下来,只有具备后端响应程序和API接口的映射关系,才能将后端响应程序信息转译为具体的API接口。
然后,在show_message_box中为监听对象global_msgbox_listener安装msgbox事件过滤器如附图13所示(message_box.installEventFilter(global_msgbox_listener)),用于运行测试脚本进行测试时读取记录的弹框并自动点击用。在事件过滤器中,过滤显示时间,通过定时器超时后处理,读取记录的弹框点击信息,通过获取弹框实例触发操作,如附图14所示。
最后,生成测试用例文件。PyQt编程语言采用事件和响应后端响应程序绑定的处理方式,当应用程序关闭时会触发关闭事件,将生成测试用例文件的函数绑定到关闭事件,这样当测试人员或其他用户关闭应用程序时,程序将存储的后端响应程序信息转译为API接口,继而逐一书写生成完整的测试脚本文件,运行脚本可用于自动化测试。
需要说明的是上述实施例的样例代码基于pyqt4+python2写的,目前常用pyqt5+python3,细节有一定差异,但是原理一致。QMessageBox类本身的接口不易于用修饰符函数记录信息,所以对其做了二次封装,为了易于使用修饰符函数记录信息。
2.对于本领域技术人员来说,只要知道图形界面驱动程序的的操作对应代码的哪个后端响应程序,就知道在对应的函数上增加修饰符@。修饰符处理函数,它的作用就是为了记录当前操作夹带的各种信息,包括但不限于类信息、函数名、参数信息等,记录这些信息就是为了能生成测试脚本。一个测试脚本一般对应一个测试场景,包含了对一系列测试接口(API)的有序调用,每一个API对应界面一个或若干个操作。比如界面点击了某个按钮,API可能定义为click_button(****),界面操作和API的映射关系是要提前维护好的。在软件研发结束,研发会给测试发布这些API,告知各个API用于测试哪些功能,以便于测试人员据此使用API构造测试脚本。在修饰符函数处理,我们通过修饰符函数处理过程,记录了若干信息,在用户一系列操作结束后,就能根据每一步的操作,找到各自对应的API,然后通过程序自动生成对应的测试脚本。运行这个脚本就等于测试或者回放操作。
3.关于如何记录弹框的信息,也是利用修饰符。与2不同的是,考虑到便于记录和功能扩展等因素,对弹窗对象增加了一个事件过滤器,过滤显示事件showevent、隐藏事件hideevent及其他事件,过滤哪些事件以及如何处理都和业务相关,做的这些工作都为了记录环节更加精确,也便于业务逻辑上做其他处理。关于pyqt事件过滤器eventFilter,这是个非常通用的技术,pyqt本身就是消息(事件)驱动的,包含各类事件,它的技术点非常多,入门门槛相对于其他平台如java、python会高一些,各个技术点之间不是独立的是相互关联的,如果没有一定基础,一篇小的文档都不足以解释清楚它是什么。
4.增加后端响应程序对应的API接口,建立映射关系
这里说的就是为了能在记录结束后自动生成脚本,而需要的准备工作。结合2的描述,API在研发后就要提供给测试人员的。
对于映射,在实现层面可以这里理解:
在一个文件或者内存中,维护了响应函数和API的对应关系,格式因人而异,只要能分开谁对应谁就行了,例如:
Class1.function1=api_function1
Class2.function2=api_function2
维护映射的方式可以多种多样,记录文件也好,放在数据库也好,只要能从某个响应函数信息找到对应的api接口就行了。准备好这些后,我能在用户一系列操作后,对应修饰符函数也记录了一系列信息,如
Class1.function1(参数1,参数2.。。。);
Class2.function2(参数1,参数2.。。。);
弹框的信息可以与上述信息一起记录,也可以放在另外一个文件或者数据库中记录,方式可以任意设置,只要方便的读取就行了,格式形如图8,可以按行存储也可以以其他形式存储,根据自己选择的文件类型:
用户选择yes|标识弹框的信息,如标题内容等等;
用户选择cancel|标识弹框的信息,如标题内容等等;
这些信息在运行的时候存在内存中,在用户操作结束,比如关闭软件时触发将这些数据持久化写到硬盘上,存储的过程中,根据记录的各个响应函数的信息找到对应的API,并自动写成测试脚本(脚本写成什么样,可根据不同的项目逻辑进行灵活配置,只要能达到测试目的就行)。
5.对pyqt写的软件进行测试,方法很多,在本发明中采用rpyc远程连接,运行测试脚本是一个进程,原有软件运行是另一个进程,用rpyc连接获取软件的运行实例,这样软件内部所有的信息就可以拿到,执行对应的API函数就能对应到软件的具体操作。了解Rpyc的可查阅专门的介绍文档。
需要说明的是,为了能捕获软件运行过程中的弹框,以及自动点击弹框,在代码层级为自动化测试设置了测试模式,在这种模式下,代码层级定义一个弹框处理类,在其内部为弹框对象增加事件过滤器。当测试过程中出现弹框时,这个时候弹框处理对象就能捕获到弹框的showevent事件,这个时候根据弹框的标题也好内容也罢,去到之前的弹框记录中获取用户当时点击的哪个按钮,比如用户当时点击了yes,那么在代码层级拿到yes按钮的对象,点击它。这样就实现了在运行脚本过程中自动捕获弹框并能自动点击。
如图2所示,本发明的另一方面还提出一种自动化测试系统,包括:
数据收集模块1,所述数据收集模块1配置用于对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据;
脚本生成模块2,所述脚本生成模块2配置用于建立所述目标程序与对应测试接口的映射关系,基于所述映射关系生成测试用例脚本;
自动化测试模块3,所述自动化测试模块3配置用于基于所述测试用例脚本和所述关键数据对目标程序进行自动化测试。
如图3所示,本发明的又一方面还提出一种计算机设备,包括:
至少一个处理器21;以及
存储器22,所述存储器22存储有可在所述处理器21上运行的计算机指令23,所述指令23由所述处理器21执行时实现上述实施方式中任意一项所述方法的步骤。
如图4所示,本发明的再一方面还提出一种计算机可读存储介质401,所述计算机可读存储介质401存储有计算机程序402,所述计算机程序被处理器执行时实现上述实施方式中任意一项所述方法的步骤。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种自动化测试方法,其特征在于,包括:
对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据;
建立所述目标程序与对应测试接口的映射关系,基于所述映射关系生成测试用例脚本;
基于所述测试用例脚本和所述关键数据对目标程序进行自动化测试。
2.根据权利要求1所述的方法,其特征在于,所述对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据包括:
对所述目标程序的图形界面驱动程序添加第一装饰器,并通过所述第一装饰器收集所述图像界面驱动程序在图形界面所显示的内容以及用户在所述图形界面中的操作。
3.根据权利要求2所述的方法,其特征在于,还包括:
将公共图形界面驱动程序进行私有化封装以生成所述目标程序的图形界面驱动程序,并在所述图形界面驱动程序添加事件过滤器。
4.根据权利要求3所述的方法,其特征在于,还包括:
响应于所述图形界面驱动程序在测试环境运行,通过所述事件过滤器将所述图形界面驱动程序运行信息发送给所述测试用例脚本。
5.根据权利要求4所述的方法,其特征在于,还包括:
响应于接收到事件过滤器发送的对应的图形界面驱动程序的运行信息,通过所述测试用例脚本获取所述图形界面对应的关键数据,并基于所述图形界面驱动程序当前显示的内容,查找匹配的关键数据,并基于匹配的关键数据中的记录的操作数据对所述图形界面进行操作。
6.根据权利要求1所述的方法,其特征在于,所述对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据包括:
对所述目标程序的后端响应程序添加第二装饰器,并通过所述第二装饰器收集所述后端响应程序数据信息。
7.根据权利要求6所述的方法,其特征在于,还包括:
基于所述后端响应程序的数据信息中程序标识信息将为每一个后端响应程序建立对应的测试接口,并将所述程序标识和测试接口名称作为映射关系保存。
8.一种自动化测试系统,其特征在于,包括:
数据收集模块,所述数据收集模块配置用于对目标程序添加装饰器,并通过所述装饰器收集目标程序录制运行时的关键数据;
脚本生成模块,所述脚本生成模块配置用于建立所述目标程序与对应测试接口的映射关系,基于所述映射关系生成测试用例脚本;
自动化测试模块,所述自动化测试模块配置用于基于所述测试用例脚本和所述关键数据对目标程序进行自动化测试。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-7任意一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210938448.2A CN115237800A (zh) | 2022-08-05 | 2022-08-05 | 一种自动化测试方法、系统、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210938448.2A CN115237800A (zh) | 2022-08-05 | 2022-08-05 | 一种自动化测试方法、系统、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237800A true CN115237800A (zh) | 2022-10-25 |
Family
ID=83678616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210938448.2A Pending CN115237800A (zh) | 2022-08-05 | 2022-08-05 | 一种自动化测试方法、系统、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237800A (zh) |
-
2022
- 2022-08-05 CN CN202210938448.2A patent/CN115237800A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106844217B (zh) | 对应用的控件进行埋点的方法及装置、可读存储介质 | |
CN101916225B (zh) | 图形用户界面软件功能覆盖测试方法 | |
US7814463B2 (en) | User interface debugger for software applications | |
US20020091968A1 (en) | Object-oriented data driven software GUI automated test harness | |
Fazzini et al. | Barista: A technique for recording, encoding, and running platform independent android tests | |
US8352907B2 (en) | Software application recreation | |
US7058927B2 (en) | Computer software run-time analysis systems and methods | |
US5758062A (en) | Method and apparatus for regression testing of application logic | |
US7712074B2 (en) | Automating interactions with software user interfaces | |
US9229738B2 (en) | Software development tool for providing user context information to improve message quality at development time | |
CN107102947B (zh) | Atm交易流程测试装置及方法 | |
US9176840B2 (en) | Tool for analyzing and resolving errors in a process server | |
EP1179777A2 (en) | Generation of runtime execution traces of applications and error detection | |
CN101930399A (zh) | 一种对软件测试进行记录的方法 | |
US10275266B1 (en) | Language acceptance testing | |
US10296444B1 (en) | Methods and systems for testing mobile applications for android mobile devices | |
CN102541731B (zh) | 平台不可知诊断数据收集与显示 | |
US7627857B2 (en) | System and method for visualizing exception generation | |
CN110162730B (zh) | 信息处理方法、装置、计算机设备及存储介质 | |
Marchetto et al. | Reajax: a reverse engineering tool for ajax web applications | |
US10509719B2 (en) | Automatic regression identification | |
US11436133B2 (en) | Comparable user interface object identifications | |
CN115982005A (zh) | 基于人工智能的自动化测试方法和装置 | |
CN106713011A (zh) | 一种获取测试数据的方法与系统 | |
CN113127280A (zh) | 一种api接口自动化录入方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |