UI自动测试方法和装置与流程

文档序号:25213163发布日期:2021-05-28 14:09阅读:60来源:国知局
UI自动测试方法和装置与流程

本公开涉及测试技术领域,特别是涉及一种ui自动测试方法和装置。



背景技术:

ui(userinterface,用户界面)自动测试是一种对应用程序的ui控件进行自动化测试的技术,通过执行自动化测试用例,检测实际测试结果是否与预期测试结果一致,以此判断ui控件功能是否正常。

在实现本公开技术方案过程中,发明人发现自动化测试用例多基于录制回放工具生成,具体地,在应用程序功能部署并实现完成后由测试人员使用工具对应用程序功能进行录制,以生成自动化测试用例。本方式使得ui自动测试工作严重滞后于开发,另外,基于录制方式生成的自动化测试用例在代码维护方便存在成本耗费高的问题。



技术实现要素:

本公开的一个方面提供了一种ui自动测试方法,包括:接收测试请求,所述测试请求指示待测试的用户界面ui控件;解析预设的用例描述文件,确定用于对所述ui控件进行测试的目标用例模板,其中,所述用例描述文件包括基于自然语言描述的至少一个用例模板;基于预设的目标程序语言,将所述目标用例模板中的至少一个测试步骤翻译为程序原语,得到与所述目标用例模板对应的测试程序;对所述测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令;执行所述测试命令,以进行针对所述ui控件的测试操作,得到测试结果。

可选地,所述基于预设的目标程序语言,将所述目标用例模板中的至少一个测试步骤翻译为程序原语,得到与所述目标用例模板对应的测试程序,包括:根据所述至少一个测试步骤的逻辑顺序,基于所述预设程序语言,将各所述测试步骤描述的针对所述ui控件的用户操作翻译为程序原语,形成所述测试程序。

可选地,所述用例描述文件还包括基于自然语言描述的页面元素定义参数,所述定义参数至少包括识别参数、获取路径参数和操作类型参数;所述方法还包括:解析所述用例描述文件,基于所述定义参数确定与所述ui控件关联的目标页面元素;基于预设的目标程序语言,将针对所述目标页面元素的各所述定义参数翻译为程序原语,形成针对所述目标页面元素的定义程序;执行所述定义程序,以实现基于所述目标页面元素构建测试页面。

可选地,所述执行所述测试命令,以进行针对所述ui控件的测试操作,得到测试结果,包括:在所述测试页面中执行所述测试命令,以实现通过模拟用户操作进行针对所述ui控件的测试操作,得到测试结果。

可选地,所述用例描述文件还包括基于自然语言描述的测试数据获取参数,所述获取参数至少包括识别参数和获取路径参数;所述方法还包括:解析所述用例描述文件,基于所述获取参数确定用于对所述ui控件进行测试的目标测试数据;基于预设的目标程序语言,将针对所述目标测试数据的各所述获取参数翻译为程序原语,形成针对所述目标测试数据的获取程序;执行所述获取程序,以获取用于对所述ui控件进行测试的目标测试数据。

可选地,所述目标测试数据包括用于对所述ui控件进行测试的测试实体参数;所述对所述测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令,包括:利用所述目标测试数据中的测试实体参数,对所述测试程序中的程序原语的测试形式参数进行置换,得到所述测试命令。

可选地,所述用例描述文件还包括基于自然语言描述的断言定义参数;所述方法还包括:基于预设的目标程序语言,将所述断言定义参数翻译为断言程序原语;执行所述断言程序原语,判断所述测试结果是否与预期测试结果一致;若是,确定针对所述ui控件的测试结果正常。

本公开的另一方面提供了一种ui自动测试装置,包括:接收模块,用于接收测试请求,所述测试请求指示待测试的用户界面ui控件;第一处理模块,用于解析预设的用例描述文件,确定用于对所述ui控件进行测试的目标用例模板,其中,所述用例描述文件包括基于自然语言描述的至少一个用例模板;第二处理模块,用于基于预设的目标程序语言,将所述目标用例模板中的至少一个测试步骤翻译为程序原语,得到与所述目标用例模板对应的测试程序;第三处理模块,用于对所述测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令;第四处理模块,用于执行所述测试命令,以进行针对所述ui控件的测试操作,得到测试结果。

可选地,所述第二处理模块包括:第一处理子模块,用于根据所述至少一个测试步骤的逻辑顺序,基于所述预设程序语言,将各所述测试步骤描述的针对所述ui控件的用户操作翻译为程序原语,形成所述测试程序。

可选地,所述用例描述文件还包括基于自然语言描述的页面元素定义参数,所述定义参数至少包括识别参数、获取路径参数和操作类型参数;所述装置还包括:第五处理模块,用于解析所述用例描述文件,基于所述定义参数确定与所述ui控件关联的目标页面元素;基于预设的目标程序语言,将针对所述目标页面元素的各所述定义参数翻译为程序原语,形成针对所述目标页面元素的定义程序;执行所述定义程序,以实现基于所述目标页面元素构建测试页面。

可选地,所述第四处理模块包括:第二处理子模块,用于在所述测试页面中执行所述测试命令,以实现通过模拟用户操作进行针对所述ui控件的测试操作,得到测试结果。

可选地,所述用例描述文件还包括基于自然语言描述的测试数据获取参数,所述获取参数至少包括识别参数和获取路径参数;所述装置还包括:第六处理模块,用于解析所述用例描述文件,基于所述获取参数确定用于对所述ui控件进行测试的目标测试数据;基于预设的目标程序语言,将针对所述目标测试数据的各所述获取参数翻译为程序原语,形成针对所述目标测试数据的获取程序;执行所述获取程序,以获取用于对所述ui控件进行测试的目标测试数据。

可选地,所述目标测试数据包括用于对所述ui控件进行测试的测试实体参数;所述第三处理模块包括:第三处理子模块,用于利用所述目标测试数据中的测试实体参数,对所述测试程序中的程序原语的测试形式参数进行置换,得到所述测试命令。

可选地,所述用例描述文件还包括基于自然语言描述的断言定义参数;所述装置还包括:第七处理模块,用于基于预设的目标程序语言,将所述断言定义参数翻译为断言程序原语;执行所述断言程序原语,判断所述测试结果是否与预期测试结果一致;若是,确定针对所述ui控件的测试结果正常。

本公开的另一方面提供了一种电子设备,包括一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本公开实施例的方法。

本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现本公开实施例的方法。

本公开的另一方面提供了一种计算机程序产品,包括计算机可读指令,其中,所述计算机可读指令被执行时用于执行本公开实施例的ui自动测试方法。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中,

图1示意性示出了根据本公开实施例的ui自动测试方法和装置的系统架构;

图2示意性示出了根据本公开实施例的一种ui自动测试方法的流程图;

图3示意性示出了根据本公开实施例的另一ui自动测试方法的流程图;

图4示意性示出了根据本公开实施例的又一ui自动测试方法的流程图;

图5示意性示出了根据本公开实施例的再一ui自动测试方法的流程图;

图6示意性示出了根据本公开实施例的ui自动测试系统的示意图;

图7示意性示出了根据本公开实施例的一种ui自动测试装置的框图;

图8示意性示出了根据本公开实施例的电子设备的框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性地,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了特征、操作、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、操作、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程ui自动测试装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。

本公开的实施例提供了一种ui自动测试方法以及能够应用该方法的测试装置。该方法具体可以包括如下操作,首先,接收测试请求,测试请求指示待测试的用户界面ui控件,然后,解析预设的用例描述文件,确定用于对ui控件进行测试的目标用例模板,其中,用例描述文件包括基于自然语言描述的至少一个用例模板,接下来,基于预设的目标程序语言,将目标用例模板中的至少一个测试步骤翻译为程序原语,得到与目标用例模板对应的测试程序,以及对测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令,最后,执行测试命令,以进行针对ui控件的测试操作,得到测试结果。

图1示意性示出了根据本公开实施例的ui自动测试方法和装置的系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。

如图1所示,该系统架构100包括智能终端(图中示出了多个,如智能终端101、102、103)和测试计算机(如测试计算机104),测试计算机与应用端之间通信连接。首先,测试计算机104接收测试请求,测试请求指示智能终端(如智能终端101、102、103)中待测试的ui控件,然后,测试计算机104解析预设的用例描述文件,确定用于对ui控件进行测试的目标用例模板,其中,用例描述文件包括基于自然语言描述的至少一个用例模板,接下来,测试计算机104基于预设的目标程序语言,将目标用例模板中的至少一个测试步骤翻译为程序原语,得到与目标用例模板对应的测试程序,以及对测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令,最后,测试计算机104执行测试命令,以进行针对智能终端(如智能终端101、102、103)中ui控件的测试操作,得到测试结果。

需要说明的是,本公开实施例的ui自动测试方法和装置可用于金融领域,也可用于除金融领域之外的任意领域。以下将结合附图和具体实施例详细阐述本公开。

图2示意性示出了根据本公开实施例的一种ui自动测试方法的流程图,如图2所示,方法200可以包括操作s210~s250。

在操作s210,接收测试请求,测试请求指示待测试的用户界面ui控件。

在本实施例中,具体地,测试计算机接收测试请求,测试请求指示智能终端中待测试的ui控件。ui控件可以是智能终端ui界面上的任意控件,智能终端例如可以包括智能手机、平板电脑、智能电视、智能穿戴设备、智能机器人等电子设备。测试请求中描述待测试的ui控件参数,ui控件参数例如可以包括控件名称、控件标识id、控件位置参数、控件功能描述等内容。针对ui控件的自动化测试可以包括正常请求测试和异常请求测试。

接下来,在操作s220,解析预设的用例描述文件,确定用于对ui控件进行测试的目标用例模板,其中,用例描述文件包括基于自然语言描述的至少一个用例模板。

在本实施例中,具体地,测试计算机通过解析预设的用例描述文件,确定用于对ui控件进行测试的目标用例模板。用例描述文件中包括基于自然语言描述的至少一个用例模板,用例模板中包括例如测试类型、测试范围、测试步骤、预期测试结果等基本测试信息。

预设的用例描述文件可以是excel文件,xls格式的用例描述文件中集成基于自然语言描述的多个可共享用例模板。用例描述文件中包括多个单元格,各个单元格中独立记录有用于自动化测试的用例模板。不同用例模板之间可以是非耦合关系,基于不同用例模板生成的自动化测试用例在被执行过程中不互相调用,测试用例与测试结果之间具有一一对应关系。通过用例模板表格管理用于ui自动测试的可共享用例模板,以及通过自然语言方式描述可共享用例模板,该种方式有利于降低ui自动测试的专业性要求,有利于控制自动化测试用例的开发成本。

根据测试请求中的ui控件参数,通过解析用例描述文件,确定满足ui控件参数的用例模板。可选地,结合测试请求中描述的自动化测试动作,在满足ui控件参数的用例模板中,进一步筛选满足自动化测试动作要求的用例模板,以作为用于对ui控件进行测试的目标用例模板。

接下来,在操作s230,基于预设的目标程序语言,将目标用例模板中的至少一个测试步骤翻译为程序原语,得到与目标用例模板对应的测试程序。

在本实施例中,具体地,由于用例描述文件中的各用例模板为基于自然语言方式描述,该种语言格式的用例模板无法被计算机所执行,因此,可以基于预设的目标程序语言,根据目标用例模板中至少一个测试步骤的逻辑顺序,将各测试步骤描述的针对ui控件的用户操作翻译为程序原语,形成测试程序。程序原语是由若干指令组成的程序段,其可用于控制计算机进程实现特定功能。

针对ui控件的自动化测试,可通过驱动测试计算机模拟用户操作实现,因此,自动化测试步骤中描述针对ui控件的用户操作。在利用目标程序语言,对基于自然语言方式描述的目标用例模板进行翻译时时,根据目标程序语言的语法规则和预设语句类型,对各测试步骤描述的针对ui控件的用户操作翻译为程序原语,形成与目标用例模板对应的测试程序。其中,预设语句类型例如可以包括对象操作类型、直接函数调用类型、工具类静态函数调用类型等。

接下来,在操作s240,对测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令。

在本实施例中,具体地,由于用例模板与测试数据是分离的,另外由于测试程序是基于针对目标用例模板的翻译处理形成的,因此,测试程序的程序原语中不包含测试实体参数,而仅包含测试形式参数。测试形式参数是用于定义函数名和函数体的虚拟变量,其不存在实际变量。测试实体参数为用于自动化测试的实际参数,其具有确定的值。示例性地,在对ui界面的用户登录控件进行测试时,利用模拟输入工具,模拟用户输入登录名“xiaoming”,“xiaoming”即为用于ui自动测试的测试实体参数。

根据用于自动化测试的测试实体参数,对测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令。测试实体参数可基于针对ui控件的测试数据得到,测试数据的来源例如可以是预先构建的测试数据库,也可以是具有接入权限的用户数据库,或者还可以利用数据采集工具(例如爬虫工具)从网络中获取。

测试数据中可以包含正确请求参数(示例性地,当进行针对用户登录控件的自动化测试时,测试数据中可以包含用于模拟用户登录的正确用户名及密码),正确请求参数用于测试ui控件在请求正常的情况下,能否返回正确响应结果。此外,测试数据中还可以包含错误请求参数(示例性地,当进行针对用户登录控件的自动化测试时,测试数据中还可以包含用于模拟用户登录的错误用户名或密码),错误请求参数用于测试ui控件在请求异常的情况下,能否进行异常请求报错。正确请求参数和错误请求参数均可用作对ui控件进行自动化测试的测试实体参数,通过对ui控件进行正常逻辑测试和出错逻辑测试,可用于验证ui控件功能实现的完整性,以及验证对各种异常情况的容错处理的合理性。

接下来,在操作s250,执行测试命令,以进行针对ui控件的测试操作,得到测试结果。

在本实施例中,具体地,利用开源的自动化运行框架,基于自动化方式执行测试命令,以进行针对ui控件的测试操作,得到测试结果。可选地,通过执行测试命令,在针对ui控件的测试页面中,模拟用户操作输入请求参数(即测试实体参数),然后通过在测试页面中触发交互请求选项,实现将请求参数发送至系统服务器。其中,触发交互请求选项的动作具体可以是点击动作、选择动作或者其他触控动作。系统服务器在接收到请求参数后进行逻辑处理,得到实际响应结果,实际响应结果构成针对ui控件的实际测试结果。

将实际测试结果与预设的预期测试结果进行一致性比对,当实际测试结果与预期测试结果一致时,判断针对ui控件的自动化测试通过;当实际测试结果与预期测试结果不一致时,判断针对ui控件的自动化测试失败。

通过本公开实施例,接收测试请求,测试请求指示待测试的用户界面ui控件;解析预设的用例描述文件,确定用于对ui控件进行测试的目标用例模板,其中,用例描述文件包括基于自然语言描述的至少一个用例模板;基于预设的目标程序语言,将目标用例模板中的至少一个测试步骤翻译为程序原语,得到与目标用例模板对应的测试程序;对测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令;执行测试命令,以进行针对ui控件的测试操作,得到测试结果。当需要进行针对ui控件的自动化测试时,通过解析用例描述文件,实现在基于自然语言描述的至少一个用例模板中,确定用于对ui控件进行测试的目标用例模板,以及基于预设目标程序语言,对目标用例模板中的至少一个测试步骤进行翻译,形成可用于驱动模拟用户操作的测试命令。本方案不仅有利于降低测试用例的维护成本,有利于实现一种门槛低、易维护、无编码化的ui自动测试方法,还有利于改善ui自动测试工作滞后性严重的问题,有利于大幅提升ui自动测试效率。

图3示意性示出了根据本公开实施例的另一ui自动测试方法的流程图,如图3所示,除操作s210~s240以外,方法300还包括操作s310~s340。

在操作s310,解析用例描述文件,基于定义参数确定与ui控件关联的目标页面元素,其中,用例描述文件包括基于自然语言描述的页面元素定义参数,定义参数至少包括识别参数、获取路径参数和操作类型参数。

接下来,在操作s320,基于预设的目标程序语言,将针对目标页面元素的各定义参数翻译为程序原语,形成针对目标页面元素的定义程序。

接下来,在操作s330,执行定义程序,以实现基于目标页面元素构建测试页面。

接下来,在操作s340,在测试页面中执行测试命令,以实现通过模拟用户操作进行针对ui控件的测试操作,得到测试结果。

在本实施例中,具体地,用例描述文件包括基于自然语言描述的页面元素定义参数,定义参数至少包括识别参数、获取路径参数和操作类型参数。识别参数例如可以包括元素名称(例如,元素名称=username)、元素识别id(例如,元素识别id=“usernameid”)等。操作类型参数指示可对页面元素进行的操作类型,操作类型参数例如可以包括点击操作(关键字为click)、输入操作(关键字为set)。用例描述文件中通过自然语言方式定义页面元素的识别参数,定义用于获取页面元素的路径信息,以及定义可对页面元素进行的操作类型。实际应用中,与页面元素关联的定义参数可在应用程序开发过程中根据实际情况修改。

解析用例描述文件,根据针对页面元素的各定义参数,确定与ui控件关联的目标页面元素。示例性地,待测试的ui控件为手机银行app的用户登录控件,根据针对页面元素的识别参数和操作类型参数,确定与ui控件关联的目标页面元素包括按钮组件(关键字为button)、输入框组件(关键字为webedit)等。基于目标程序语言,将针对目标页面元素的各定义参数翻译为程序原语,形成针对目标页面元素的定义程序。通过执行定义程序,实现根据翻译后的各定义参数,获取目标页面元素,以及基于目标页面元素,构建目标程序语言类的测试页面,例如构建java类测试页面。在构建的测试页面中执行测试命令,实现通过模拟用户操作,进行针对ui控件的测试操作,得到测试结果。

图4示意性示出了根据本公开实施例的又一ui自动测试方法的流程图,如图4所示,除操作s210~s230、s250以外,方法400还包括操作s410~s440。

在操作s410,解析用例描述文件,基于获取参数确定用于对ui控件进行测试的目标测试数据,其中,用例描述文件包括基于自然语言描述的测试数据获取参数,获取参数至少包括识别参数和获取路径参数。

接下来,在操作s420,基于预设的目标程序语言,将针对目标测试数据的各获取参数翻译为程序原语,形成针对目标测试数据的获取程序。

接下来,在操作s430,执行获取程序,以获取用于对ui控件进行测试的目标测试数据。

以及,在操作s440,利用目标测试数据中的测试实体参数,对测试程序中的程序原语的测试形式参数进行置换,得到测试命令。

在本实施例中,具体地,测试数据为自动化测试过程所需利用的数据,测试数据例如可以包括交互请求参数,交互请求参数可以包括正确请求参数和错误请求参数。用例描述文件包括基于自然语言描述的测试数据获取参数,获取参数至少包括识别参数和获取路径参数。识别参数例如可以包括测试数据名称(例如,测试数据名称=testfile.xls),获取路径参数指示用于获取测试数据的路径参数(例如,路径参数=d:\programfiles\test)。

解析用例描述文件,根据与测试数据关联的获取参数,确定用于ui控件进行测试的目标测试数据。基于目标程序语言,将与目标测试数据关联的获取参数翻译为程序原语,形成针对目标测试数据的获取程序。以自动化方式执行获取程序,实现根据翻译后的各获取参数,获取目标测试数据。目标测试数据中包含用于对ui控件进行测试的测试实体参数,利用测试实体参数置换测试程序中程序原语的测试形式参数,得到测试命令。

图5示意性示出了根据本公开实施例的再一ui自动测试方法的流程图,如图5所示,除操作s210~s250以外,方法500还包括操作s510~s520。

在操作s510,基于预设的目标程序语言,将用例描述文件中基于自然语言描述的断言定义参数翻译为断言程序原语。

接下来,在操作s520,执行断言程序原语,判断测试结果是否与预期测试结果一致,以及若是,确定针对ui控件的测试结果正常。

在本实施例中,具体地,用例描述文件包括基于自然语言描述的断言定义参数,断言定义参数用于验证测试执行结果。断言定义参数指示基于何种场景或测试页面中出现何种字符,确定得到正确响应结果或异常请求报错。示例性地,断言定义参数指示当测试页面中出现“xxx用户欢迎您”或“登录成功”字符时,确定模拟用户登录成功。

在用例描述文件中,断言定义参数与对应用例模板呈现关联性记载状态。解析用例描述文件,对用例描述文件中基于自然语言描述的断言定义参数进行翻译处理,得到断言程序原语。执行断言程序原语,实现自动验证测试执行结果,测试执行结果即构成ui自动测试的实际测试结果。

图6示意性示出了根据本公开实施例的ui自动测试系统的示意图,如图6所示,测试系统600包括用例描述文件解析模块、程序语言处理模块、用例代码生成模块、测试执行模块和日志模块。

用例描述文件解析模块:用于解析用例描述文件,用例描述文件包括基于自然语言描述的至少一个用例模板,包括基于自然语言描述的针对页面元素的定义参数、针对测试数据的获取参数、与各用例模板关联的断言定义参数和预期测试结果。

通过解析用例描述文件,实现在基于自然语言描述的至少一个用例模板中,确定用于对ui控件进行测试的目标用例模板。另外,通过解析用例描述文件,实现确定与待测试的ui控件关联的目标页面元素,确定用于对ui控件进行测试的目标测试数据,以及确定与目标用例模板关联的断言定义参数及预期测试结果。

程序语言处理模块:用于基于预设的目标程序语言,对自然语言方式描述的用例信息进行翻译。具体地,用于基于目标程序语言,将目标用例模板中的至少一个测试步骤翻译为程序原语,将针对目标页面元素的各定义参数翻译为程序原语,将针对目标测试数据的各获取参数翻译为程序原语,以及将断言定义参数翻译为断言程序原语。

用例代码生成模块:用于基于翻译处理得到的程序原语,生成可被测试计算机执行的用例代码。具体地,用于生成目标用例模板对应的测试程序,以及用于对测试程序中的程序原语进行扩展,形成用于驱动模拟用户操作的测试命令。此外,还用于生成针对目标页面元素的定义程序,和生成针对目标测试数据的获取程序。

测试执行模块:用于执行测试命令,进行针对ui控件的自动测试操作。

日志模块:用于对用例文件的生成进度进行日志记录及异常处理,方便测试人员对ui自动测试过程的用例生成情况进行结果分析。

图7示意性示出了根据本公开实施例的一种ui自动测试装置的框图。

如图7所示,装置700包括接收模块701、第一处理模块702、第二处理模块703、第三处理模块704和第四处理模块705。

具体地,接收模块701,用于接收测试请求,测试请求指示待测试的用户界面ui控件;第一处理模块702,用于解析预设的用例描述文件,确定用于对ui控件进行测试的目标用例模板,其中,用例描述文件包括基于自然语言描述的至少一个用例模板;第二处理模块703,用于基于预设的目标程序语言,将目标用例模板中的至少一个测试步骤翻译为程序原语,得到与目标用例模板对应的测试程序;第三处理模块704,用于对测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令;第四处理模块705,用于执行测试命令,以进行针对ui控件的测试操作,得到测试结果。

通过本公开实施例,接收测试请求,测试请求指示待测试的用户界面ui控件;解析预设的用例描述文件,确定用于对ui控件进行测试的目标用例模板,其中,用例描述文件包括基于自然语言描述的至少一个用例模板;基于预设的目标程序语言,将目标用例模板中的至少一个测试步骤翻译为程序原语,得到与目标用例模板对应的测试程序;对测试程序中的程序原语进行扩展,形成可用于驱动模拟用户操作的测试命令;执行测试命令,以进行针对ui控件的测试操作,得到测试结果。当需要进行针对ui控件的自动化测试时,通过解析用例描述文件,实现在基于自然语言描述的至少一个用例模板中,确定用于对ui控件进行测试的目标用例模板,以及基于预设目标程序语言,对目标用例模板中的至少一个测试步骤进行翻译,形成可用于驱动模拟用户操作的测试命令。本方案不仅有利于降低测试用例的维护成本,有利于实现一种门槛低、易维护、无编码化的ui自动测试方法,还有利于改善ui自动测试工作滞后性严重的问题,有利于大幅提升ui自动测试效率。

作为一种可行的实施例,第二处理模块包括:第一处理子模块,用于根据至少一个测试步骤的逻辑顺序,基于预设程序语言,将各测试步骤描述的针对ui控件的用户操作翻译为程序原语,形成测试程序。

作为一种可行的实施例,用例描述文件还包括基于自然语言描述的页面元素定义参数,定义参数至少包括识别参数、获取路径参数和操作类型参数;该装置还包括:第五处理模块,用于解析用例描述文件,基于定义参数确定与ui控件关联的目标页面元素;基于预设的目标程序语言,将针对目标页面元素的各定义参数翻译为程序原语,形成针对目标页面元素的定义程序;执行定义程序,以实现基于目标页面元素构建测试页面。

作为一种可行的实施例,第四处理模块包括:第二处理子模块,用于在测试页面中执行测试命令,以实现通过模拟用户操作进行针对ui控件的测试操作,得到测试结果。

作为一种可行的实施例,用例描述文件还包括基于自然语言描述的测试数据获取参数,获取参数至少包括识别参数和获取路径参数;该装置还包括:第六处理模块,用于解析用例描述文件,基于获取参数确定用于对ui控件进行测试的目标测试数据;基于预设的目标程序语言,将针对目标测试数据的各获取参数翻译为程序原语,形成针对目标测试数据的获取程序;执行获取程序,以获取用于对ui控件进行测试的目标测试数据。

作为一种可行的实施例,目标测试数据包括用于对ui控件进行测试的测试实体参数;第三处理模块包括:第三处理子模块,用于利用目标测试数据中的测试实体参数,对测试程序中的程序原语的测试形式参数进行置换,得到测试命令。

作为一种可行的实施例,用例描述文件还包括基于自然语言描述的断言定义参数;该装置还包括:第七处理模块,用于基于预设的目标程序语言,将断言定义参数翻译为断言程序原语;执行断言程序原语,判断测试结果是否与预期测试结果一致;若是,确定针对ui控件的测试结果正常。

需要说明的是,在本公开实施例中,装置部分的实施方式与方法部分的实施方式相同或类似,在此不再赘述。

根据本公开的实施例的模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者根据本公开实施例的模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,接收模块701、第一处理模块702、第二处理模块703、第三处理模块704和第四处理模块705中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,接收模块701、第一处理模块702、第二处理模块703、第三处理模块704和第四处理模块705中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。接收模块701、第一处理模块702、第二处理模块703、第三处理模块704和第四处理模块705中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图8示意性示出了根据本公开实施例的电子设备的框图。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图8所示,电子设备800包括处理器810、计算机可读存储介质820。该电子设备800可以执行根据本公开实施例的方法。

具体地,处理器810例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器810还可以包括用于缓存用途的板载存储器。处理器810可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理模块或者是多个处理模块。

计算机可读存储介质820,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;等等。

计算机可读存储介质820可以包括计算机程序821,该计算机程序821可以包括代码/计算机可执行指令,其在由处理器810执行时使得处理器810执行根据本公开实施例的方法或其任何变形。

计算机程序821可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序821中的代码可以包括一个或多个程序模块,例如包括模块821a、模块821b、......。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器810执行时,使得处理器810可以执行根据本公开实施例的方法或其任何变形。

根据本公开的实施例,接收模块701、第一处理模块702、第二处理模块703、第三处理模块704和第四处理模块705中的至少一个可以实现为参考图8描述的计算机程序模块,其在被处理器810执行时,可以实现上面描述的相应操作。

本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1