掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及计算机技术领域,尤其涉及一种程序测试方法及装置。

背景技术

在软件开发过程中,对软件程序代码的测试,是必不可少的开发环节。在传统的开发过程中,开发人员通常在编写程序代码的同时,也要编写对应的测试代码。即程序代码和测试代码将结合在一起,并协同运行,从而针对程序代码完成测试过程。

显然上述的测试方式中,编写测试代码需要消耗开发人员大量的人力和时间。特别是在利用C/C++语言编写程序代码时,相应的测试代码也必须利用C/C++语言,而无法使用其他程序语言提供的更为便利的开发工具,使得开发效率相对低下。

发明内容

本发明提供一种程序测试方法及装置,以至少解决现有技术中存在的以上技术问题。

第一方面,本发明提供一种程序测试方法,包括:

确定待测程序,和所述待测程序的测试类型;

根据所述待测程序的测试类型,从测试程序库中确定相应的测试程序;

利用所述测试程序对所述待测程序进行测试,以确定相应的测试结果。

优选的,所述确定所述待测程序的测试类型包括:

确定所述待测程序的分类编号,根据所述分类编号确定所述测试类型。

优选的,所述根据所述待测程序的测试类型,从测试程序库中确定相应的测试程序包括:

根据所述待测程序的分类编号,从所述测试程序库中确定相应的测试函数;

根据测试策略,将所述测试函数封装为所述测试程序。

优选的,所述测试程序库中包括多个所述测试函数,所述测试函数基于预设的开发工具制作。

优选的,还包括:

预先设定所述测试策略;

或者,根据所述待测程序确定所述测试策略。

优选的,所述利用所述测试程序对所述待测程序进行测试包括:

从所述测试程序库中调取所述测试程序,

基于所述测试程序运行所述待测程序以进行测试。

优选的,所述方法的执行主体为,所述待测程序所在的执行节点;所述待测程序由所述执行节点的第一进程处理;

则所述测试程序库位于所述执行节点上,所述测试程序库由所述执行节点的第二进程处理;

或者,所述测试程序库位于所述执行节点以外的客户端设备上;

所述第一进程与所述第二进行通过远程过程调用进行通信;

所述执行节点与所述客户端设备通过远程过程调用进行通信。

第二方面,本发明提供一种程序测试装置,包括:

待测程序确定模块,用于确定待测程序,和所述待测程序的测试类型;

测试程序确定模块,用于根据所述待测程序的测试类型,从测试程序库中确定相应的测试程序;

测试模块,用于利用所述测试程序对所述待测程序进行测试,以确定相应的测试结果。

第三方面,本发明提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行本发明所述的程序测试方法。

第四方面,本发明提供一种电子设备,包括:

处理器;

用于存储所述处理器可执行指令的存储器;

所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本发明所述的程序测试方法。

与现有技术相比,本发明提供的一种程序测试方法及装置,通过从独立的测试程序库中确定相应的测试程序,实现了对于待测程序的测试,减少了测试过程中的人力消耗,提高了开发效率。

附图说明

图1为本发明一实施例提供的一种程序测试方法的流程示意图;

图2为本发明一实施例提供的一种程序测试装置的结构示意图。

具体实施方式

为使本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在传统的开发过程中,开发人员通常在编写程序代码的同时,也要编写对应的测试代码。即程序代码和测试代码将结合在一起,并协同运行,从而针对程序代码完成测试过程。显然上述的测试方式中,编写测试代码需要消耗开发人员大量的人力和时间。特别是在利用C/C++语言编写程序代码时,相应的测试代码也必须利用C/C++语言,而无法使用其他程序语言提供的更为便利的开发工具,使得开发效率相对低下。

因此,本发明实施例将提供一种程序测试方法,以至少解决现有技术中存在的以上技术问题。如图1所示,本实施例中方法包括以下步骤:

步骤101、确定待测程序,和待测程序的测试类型。

本实施例中,待测程序是经过开发人员编写,并且需要进行测试的特定程序。待测程序以特定的程序语言编写而成,例如在一些情况下可通过C/C++语言写成。在一些场景当中,待测程序位于服务器系统特定的执行节点上。本实施例中方法的执行主体即为待测程序所在的该执行节点。待测程序的测试过程,可以由执行节点的第一进程处理。

根据待测程序实际表达的功能的不同,对应的测试也必然各不相同。所以本实施例中还将进一步的确定待测程序的类型,从而明确后续需要怼待测程序进行那些具体的测试。确定待测程序的测试类型包括:确定待测程序的分类编号,根据分类编号确定测试类型。分类编号,即是体现待测程序的功能的编号,或者体现待测程序的测试内容的编号。例如,分类编号具体可包括:测试实例ID号、测试函数ID号等,用以表明该待测程序需要使用具体哪个测试实例和测试函数。

例如,本实施例中待测程序具体可以是一套关于文件操作功能的执行程序,其具体可以包括文件创建、文件修改和文件删除等功能。则在相应的测试中,需要充分的执行上述功能,以便于确定上述功能是否符合要求。根据对应的分类编号,可以确定要对该待测程序进行测试,需要使用哪些具体的测试实例和测试函数。

步骤102、根据待测程序的测试类型,从测试程序库中确定相应的测试程序。

测试程序库中可以包括大量具体的测试函数等内容,不同的测试函数经过排列组合实现不同的“测试方案”,也就是所谓的测试用例。测试函数可以基于预设的开发工具制作,例如在python语言当中,便存在诸多高效的开发工具,或者已成熟的测试函数,无需重新编译即可组合得到测试用例。为开发工作节约了大量的时间。在现有技术中,基于C/C++语言写成的待测程序,必须利用C/C++语言的测试程序进行测试,而无法使用python语言的开发工具。在本实施例中则解决了上述的问题。

在本实施例中,从测试程序库中确定相应的测试程序具体可以是:根据待测程序的分类编号,从测试程序库中确定相应的测试函数。根据测试策略,将测试函数封装为测试程序。测试策略可以是,预先设定测试策略;或者,根据待测程序确定测试策略。

以本实施例中对于文件操作功能的测试为例,则在测试过程中需要使用测试函数执行文件创建、文件修改和文件删除的操作。所以可首先根据分类编号从测试程序库中确定相应的测试函数。而在一个完整的测试过程中,可以对上述测试函数进行排列组合使用,或者还可重复使用,由此模拟现实中用户操作的场景,即形成测试用例。或者说形成还可进一步的结合初始化、通信连接、函数接口对接、测试结果生成机制等基础操作,共同形成测试程序。也就是封装为测试程序。而测试函数的排列组合,及其与基础操作的结合方式,即反映在测试策略中。该测试策略可以由开发人员针对待测程序人为设定而成。也可预先设定多种不同的测试策略,在根据待测程序的特点进行选择。当然还可以通过其他任何方式确定测试策略,本实施例中对此不做限定。

步骤103、利用测试程序对待测程序进行测试,以确定相应的测试结果。

测试程序库可以位于上述执行节点上,由执行节点的第二进程处理;即测试程序库和待测程序的测试可以在同一主体上执行,但分别运行在不同的进程上。在这种情况下,第一进程与第二进行可以通过远程过程调用(即Remote Procedure Cal,简称RPC)进行通信,从而实现第一进行对于测试程序的调用。

或者,测试程序库也可以位于执行节点以外的其他客户端设备上。即测试程序库和待测程序的测试可以在不同主体上执行。在这种情况下,执行节点与客户端设备同样可以通过RPC进行通信,从而实现对于测试程序的调用。

确定了测试程序之后,执行节点从测试程序库中调取测试程序,即可基于测试程序运行待测程序以进行测试。并得到相应的测试结果。至此,本实施例中完成了对于待测程序的测试。

需要说明的是,本实施例中方法不在将待测程序与测试程序结合在一起。测试程序库中的测试函数可以位于执行节点以外的客户端设备上,或者位于执行节点的其他进程上,与待测程序分割开来。通过测试函数封装形成测试程序,实现测试过程。在这种情况下,测试程序相对独立,不需要与待测程序采用同样的程序语言编写,因此可以使用其他程序语言当中诸多高效的开发工具,或者已成熟的测试函数,为开发工作节约了大量的时间。

通过以上技术方案可知,本实施例存在的有益效果是:通过从独立的测试程序库中确定相应的测试程序,实现了对于待测程序的测试,减少了测试过程中的人力消耗,提高了开发效率。

如图2所示,为本发明所述程序测试装置的一个具体实施例。本实施例装置,即用于执行图1所述方法的实体装置。其技术方案本质上与上述实施例一致,上述实施例中的相应描述同样适用于本实施例中。本实施例中装置包括:

待测程序确定模块201,用于确定待测程序,和待测程序的测试类型。

测试程序确定模块202,用于根据待测程序的测试类型,从测试程序库中确定相应的测试程序。

测试模块203,用于利用测试程序对待测程序进行测试,以确定相应的测试结果。

除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。

本发明中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“如但不限于”,且可与其互换使用。

还需要指出的是,在本发明的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

相关技术
  • 一种程序测试方法、程序测试装置、电子设备及存储介质
  • 车机小程序测试方法、装置、设备、存储介质及程序产品
技术分类

06120113148724