一种软件单元测试自动化检测方法及系统
技术领域
本发明涉及软件单元测试领域,具体涉及一种软件单元测试自动化检测方法及系统。
背景技术
21世纪以来,由于通信产业的快速发展,市场竞争日益激烈,各大运营商会有越来越多的功能需求开发,开发人员需要完成各个功能需求的开发,需要保证开发的功能需求达到预期,同时还要保证开发的功能不影响原有的功能需求,因此当软件开发完成后,均需要对软件进行单元测试。
单元测试(模块测试)通常是开发者编写的一段代码,用于检验被测软件中代码的一个较小且明确的功能是否正确,通常而言,单元测试是用于判断在某些特定条件(或场景)下某个特定功能的行为。单元测试中的单元一般指函数,软件在运行过程中,其函数的指定输入应该得到预期的输出结果,同时对于模块来说,当指定了输入条件后,也应该得到预期的输出结果,但是对于测试来说,需要编写大量的测试用例函数以及测试结果检查函数,该部分工作量较大,导致测试效率较低。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种软件单元测试自动化检测方法,采用自动执行方式,有效降低工作量,避免采用人工编码时可能出现的错误。
为达到以上目的,本发明采取的技术方案是,包括:
S1:解析待测模块的IPS头文件,生成对应于待测模块的输入提取代码和输出检查代码,将生成的代码编译成动态链接库;
S2:当进行单元测试时,使用所述动态链接库从IPS日志文件中提取出对应待测模块的输入信息;
S3:将提取的输入信息输入待测模块中,经单元测试后,使用所述动态链接库对待测模块的输出结果信息进行检查。
在上述方案的基础上,所述IPS日志文件用于记录待测模块的IPS交互信息,且不同的待测模块对应不同的输入信息和输出结果信息。
在上述方案的基础上,步骤S2中,所述生成对应于待测模块的输入提取代码和输出检查代码,具体步骤为:每个待测模块对应生成一个输入提取代码和一个输出检查代码。
在上述方案的基础上,步骤S2中,进行单元测试之前,还包括:加载编译的动态链接库,然后进行单元测试。
在上述方案的基础上,所述输入信息为对应待测模块的输入IPS信息,为待测模块测试的输入参数,所述输出结果信息为将输入IPS信息输入待测模块后,待测模块对应输出的输出结果。
本发明还提供一种软件单元测试自动化检测系统,包括:
编译模块,其用于:解析待测模块的IPS头文件,生成对应于待测模块的输入提取代码和输出检查代码,将生成的代码编译成动态链接库;
提取模块,其用于:当进行单元测试时,使用所述动态链接库从IPS日志文件中提取出对应待测模块的输入信息;
检查模块,其用于:将提取的输入信息输入待测模块中,经单元测试后,使用所述动态链接库对待测模块的输出结果信息进行检查。
在上述方案的基础上,所述IPS日志文件用于记录待测模块的IPS交互信息,且不同的待测模块对应不同的输入信息和输出结果信息。
在上述方案的基础上,所述编译模块生成对应于待测模块的输入提取代码和输出检查代码,具体步骤为:每个待测模块对应生成一个输入提取代码和一个输出检查代码。
在上述方案的基础上,进行单元测试之前,还包括:加载编译的动态链接库,然后进行单元测试。
在上述方案的基础上,所述输入信息为对应待测模块的输入IPS信息,为待测模块测试的输入参数,所述输出结果信息为将输入IPS信息输入待测模块后,待测模块对应输出的输出结果。
与现有技术相比,本发明的优点在于:通过解析待测模块的IPS日志文件,从而获知待测模块的输入信息和输出结果信息,从而生成对应的用于提取输入信息的输入提取代码,以及对输出结果信息进行检查的输出检查代码,采用程序的自动执行方式,有效降低工作量,避免采用人工编码时可能出现的错误。
附图说明
图1为本发明实施例中一种软件单元测试自动化检测方法的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
参见图1所示,本发明提供一种软件单元测试自动化检测方法,在软件模块的单元测试中,实现对软件模块输入信息的自动提取,以及对软件模块输出结果信息的自动检查。本发明实施例基于NBASE系统框架,NBASE系统框架使用IPS消息作为软件模块间通信的消息,IPS(Inter Process Signal)消息为进程间或者模块间的消息通信。在NBASE系统框架下,对软件模块输入特定的IPS消息会输出预期的IPS消息,通过对输出的预期的IPS消息进行检查,实现对软件模块的单元测试。本发明实施例中的待测模块为软件模块。本发明实施例的软件单元测试自动化检测方法具体包括以下步骤:
S1:解解析待测模块的IPS头文件,生成对应于待测模块的输入提取代码和输出检查代码,将生成的代码编译成动态链接库。具体的可以通过编写可执行程序来对IPS日志文件进行解析,NBASE系统可以保存已测试功能的待测模块的IPS日志文件,IPS日志文件用于记录待测模块的IPS交互信息,因此根据IPS日志文件可以得到不同的待测模块对应的输入信息是什么,IPS头文件位于IPS日志文件中。
可执行程序解析IPS日志文件,得知对应于待测模块的输入信息,即得知待测模块具体的输入IPS消息和输出IPS消息,不同的待测模块对应不同的输入信息和输出结果信息,即不同的软件模块对应不同的输入信息和输出结果信息,输入提取代码用于对待测模块的输入IPS消息进行提取,输出检查代码对待测模块的输出IPS消息进行检查。不同待测模块的输入IPS消息不同,IPS消息中包含一特定的结构体,据此可以对待测模块所属的IPS消息进行判断。输入信息为对应待测模块的输入IPS信息,为待测模块测试的输入参数,所述输出结果信息为将输入IPS信息输入软件模块后,待测模块对应输出的输出结果。
具体的,生成对应于待测模块的输入提取代码和输出检查代码均有多个,且每个待测模块对应一个输入提取代码和一个输出检查代码。
S2:当进行单元测试时,使用所述动态链接库从IPS日志文件中提取出对应待测模块的输入信息,即通过输入提取代码提取对应当前待测模块的输入IPS消息。进行单元测试之前,还包括:加载编译的动态链接库,然后进行单元测试。
S3:将提取的输入信息输入软件模块中,经单元测试后,使用所述动态链接库对待测模块的输出结果信息进行检查。本发明的软件单元测试自动化检测方法在具体的实施过程中,可以兼容之前的单元测试方式,在原有的单元测试方式上修改IPS消息输入方式即可实现本发明的软件单元测试自动化检测方法。
本发明实施例的软件单元测试自动化检测方法,通过解析待测模块的IPS日志文件,从而获知待测模块的输入信息和输出结果信息,从而生成对应的用于提取输入信息的输入提取代码,以及对输出结果信息进行检查的输出检查代码,采用程序的自动执行方式,有效降低工作量,避免采用人工编码时可能出现的错误。
本发明还提供一种软件单元测试自动化检测系统,包括编译模块、提取模块和检查模块。
编译模块用于解析待测模块的IPS头文件,生成对应于待测模块的输入提取代码和输出检查代码,将生成的代码编译成动态链接库;提取模块用于当进行单元测试时,使用所述动态链接库从IPS日志文件中提取出对应待测模块的输入信息;检查模块用于将提取的输入信息输入软件模块中,经单元测试后,使用所述动态链接库对待测模块的输出结果信息进行检查。
IPS日志文件用于记录待测模块的IPS交互信息,且不同的待测模块对应不同的输入信息和输出结果信息。编译模块生成对应于待测模块的输入提取代码和输出检查代码,具体步骤为:每个待测模块对应生成一个输入提取代码和一个输出检查代码。进行单元测试之前,还包括:加载编译的动态链接库,然后进行单元测试。输入信息为对应待测模块的输入IPS信息,为待测模块测试的输入参数,所述输出结果信息为将输入IPS信息输入软件模块后,待测模块对应输出的输出结果。
本发明实施例的软件单元测试自动化检测系统,通过编写可执行程序来解析待测模块的IPS日志文件,从而获知待测模块的输入信息和输出结果信息,从而生成对应的用于提取输入信息的输入提取代码,以及对输出结果信息进行检查的输出检查代码,采用程序的自动执行方式,有效降低工作量,避免采用人工编码时可能出现的错误。
以下结合以软件中的RLDF模块为例对本发明的软件单元测试自动化检测方法进行具体说明,此时RLDF模块即为待测模块。
1、RLDF模块输入的IPS消息为IPS_ATG_HM_REGISTER_SM为例,其对应的结构体为ATG_HM_REGISTER_SM,该结构体包含以下字段:
2、编写的可执行程序对RLDF模块的IPS头文件进行解析,获知RLDF模块输入的IPS消息的结构,生成对应的输入提取代码和输出检查代码,然后将生成的代码编译成动态链接库。
3、当开始单元测试时,自动提取原有测试中待测模块的IPS日志文件中的数据,得到待测模块的输入IPS消息,经单元测试后,使用动态链接库对待测模块的输出结果信息进行检查。对输出结果信息进行检查的代码为:
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。