单元测试方法及装置转让专利

申请号 : CN201510862173.9

文献号 : CN106815136B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 储雨知

申请人 : 北京国双科技有限公司

摘要 :

本申请公开了一种单元测试方法及装置。该方法包括:通过启动mongodb程序创建结构化查询语言服务器SQL server实例;启动SQL server实例装载mongodb服务器;在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据;以及在执行单元测试结束之后,关闭SQL server实例。通过本申请,解决了相关技术中单元测试方法中可移植性较差的问题。

权利要求 :

1.一种单元测试方法,其特征在于,包括:

通过启动mongodb程序创建结构化查询语言服务器SQL server实例;

启动所述SQL server实例装载mongodb服务器;

在所述mongodb服务器中创建预设数据库,并在所述mongodb服务器上执行单元测试,其中,所述预设数据库用于存储执行单元测试过程中的数据;以及在执行所述单元测试结束之后,关闭所述SQL server实例。

2.根据权利要求1所述的方法,其特征在于,

在通过启动mongodb程序创建结构化查询语言服务器SQL server实例之后,在启动所述SQL server实例装载mongodb服务器之前,所述方法还包括:获取预设进程号,其中,所述预设进程号为所述SQL server实例运行时装载所述mongodb服务器的进程号,启动所述SQL server实例装载mongodb服务器包括:在所述SQL server实例运行至所述预设进程号时装载所述mongodb服务器;获取数据库路径,其中,所述数据库路径为存储所述预设数据库的路径,在所述mongodb服务器中创建预设数据库包括:在所述mongodb服务器中创建所述预设数据库,并在所述数据库路径上存储所述预设数据库。

3.根据权利要求1或2所述的方法,其特征在于,

在所述mongodb服务器中创建预设数据库之后,在所述mongodb服务器上执行单元测试之前,所述方法还包括:通过调用第一预设代码删除所述预设数据库中所有数据。

4.根据权利要求1所述的方法,其特征在于,在所述mongodb服务器上执行单元测试包括:获取待测试数据;

将所述待测试数据添加至所述预设数据库;

读取所述预设数据库中存储的待测试数据,得到目标数据;以及将所述待测试数据与所述目标数据进行比较,验证所述目标数据。

5.根据权利要求1所述的方法,其特征在于,在执行所述单元测试结束之后,关闭所述SQL server实例包括:通过调用第二预设代码关闭所述SQL server实例。

6.一种单元测试装置,其特征在于,包括:

第一创建单元,用于通过启动mongodb程序创建结构化查询语言服务器SQLserver实例;

装载单元,用于启动所述SQL server实例装载mongodb服务器;

第二创建单元,用于在所述mongodb服务器中创建预设数据库,并在所述mongodb服务器上执行单元测试,其中,所述预设数据库用于存储执行单元测试过程中的数据;以及关闭单元,用于在执行所述单元测试结束之后,关闭所述SQL server实例。

7.根据权利要求6所述的装置,其特征在于,

所述装置还包括:获取单元,用于获取预设进程号,其中,所述预设进程号为所述SQL server实例运行时装载所述mongodb服务器的进程号,所述装载单元还用于在所述SQL server实例运行至所述预设进程号时装载所述mongodb服务器;获取数据库路径,其中,所述数据库路径为存储所述预设数据库的路径,第二创建单元还用于在所述mongodb服务器中创建所述预设数据库,并在所述数据库路径上存储所述预设数据库。

8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:调用单元,用于调用第一预设代码删除所述预设数据库中所有数据。

9.根据权利要求6所述的装置,其特征在于,所述第二创建单元包括:获取模块,用于获取待测试数据;

添加模块,用于将所述待测试数据添加至所述预设数据库;

读取模块,用于读取所述预设数据库中存储的待测试数据,得到目标数据;以及验证模块,用于将所述待测试数据与所述目标数据进行比较,验证所述目标数据。

10.根据权利要求6所述的装置,其特征在于,关闭单元还用于通过调用第二预设代码关闭所述SQL server实例。

说明书 :

单元测试方法及装置

技术领域

[0001] 本申请涉及系统测试领域,具体而言,涉及一种单元测试方法及装置。

背景技术

[0002] 目前,mongodb是一套非常流行的非关系型数据库,许多系统都会使用它作为后端。在系统开发结束后,为了验证系统的性能,则需要对系统进行单元测试。在对系统进行单元测试时,需要在系统中存在相关的数据库并保证该数据库中未存储有任何数据,对外部也必须存在一个mongodb程序创建的某一具体的实例。由于相关技术中在进行单元测试时,依赖于某一具体的实例,从而导致单元测试的可移植性较差。
[0003] 针对相关技术中单元测试方法中可移植性较差的问题,目前尚未提出有效的解决方案。

发明内容

[0004] 本申请的主要目的在于提供一种单元测试方法及装置,以解决相关技术中单元测试方法中可移植性较差的问题。
[0005] 为了实现上述目的,根据本申请的一个方面,提供了一种单元测试方法。该方法包括:通过启动mongodb程序创建结构化查询语言服务器SQL server实例;启动SQL server实例装载mongodb服务器;在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据;以及在执行单元测试结束之后,关闭SQL server实例。
[0006] 进一步地,在通过启动mongodb程序创建结构化查询语言服务器SQL server实例之后,在启动SQL server实例装载mongodb服务器之前,该方法还包括:获取预设进程号,其中,预设进程号为SQL server实例运行时装载mongodb服务器的进程号,启动SQL server实例装载mongodb服务器包括:在SQL server实例运行至预设进程号时装载mongodb服务器;获取数据库路径,其中,数据库路径为存储预设数据库的路径,在mongodb服务器中创建预设数据库包括:在mongodb服务器中创建预设数据库,并在数据库路径上存储预设数据库。
[0007] 进一步地,在mongodb服务器中创建预设数据库之后,在mongodb服务器上执行单元测试之前,该方法还包括:通过调用第一预设代码删除预设数据库中所有数据。
[0008] 进一步地,在mongodb服务器上执行单元测试包括:获取待测试数据;将待测试数据添加至预设数据库;读取预设数据库中存储的待测试数据,得到目标数据;以及将待测试数据与目标数据进行比较,验证目标数据。
[0009] 进一步地,在执行单元测试结束之后,关闭SQL server实例包括:通过调用第二预设代码关闭SQL server实例。
[0010] 为了实现上述目的,根据本申请的另一方面,提供了一种单元测试装置。该装置包括:第一创建单元,用于通过启动mongodb程序创建结构化查询语言服务器SQL server实例;装载单元,用于启动SQL server实例装载mongodb服务器;第二创建单元,用于在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据;以及关闭单元,用于在执行单元测试结束之后,关闭SQL server实例。
[0011] 进一步地,该装置还包括:获取单元,用于获取预设进程号,其中,预设进程号为SQL server实例运行时装载mongodb服务器的进程号,装载单元还用于在SQL server实例运行至预设进程号时装载mongodb服务器;获取数据库路径,其中,数据库路径为存储预设数据库的路径,第二创建单元还用于在mongodb服务器中创建预设数据库,并在数据库路径上存储预设数据库。
[0012] 进一步地,该装置还包括:调用单元,用于调用第一预设代码删除预设数据库中所有数据。
[0013] 进一步地,第二创建单元包括:获取模块,用于获取待测试数据;添加模块,用于将待测试数据添加至预设数据库;读取模块,用于读取预设数据库中存储的待测试数据,得到目标数据;以及验证模块,用于将待测试数据与目标数据进行比较,验证目标数据。
[0014] 进一步地,关闭单元还用于通过调用第二预设代码关闭SQL server实例。
[0015] 通过本申请,采用以下步骤:启动mongodb程序创建SQL server实例;启动SQL server实例装载mongodb服务器;在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据;以及在执行单元测试结束之后,关闭SQL server实例,解决了相关技术中单元测试方法中可移植性较差的问题,通过调用mongod程序创建SQL server实例,在单元测试结束时关闭SQL server实例,使得在单元测试的生命周期中存在一个临时的SQL server实例,避免了依赖于某一具体的实例,从而达到了提升单元测试的可移植性的效果。

附图说明

[0016] 构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0017] 图1是根据本申请实施例的单元测试方法的流程图;以及
[0018] 图2是根据本申请实施例的单元测试装置的示意图。

具体实施方式

[0019] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0020] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0021] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0022] 为了便于描述,以下对本申请实施例涉及的部分术语进行说明:
[0023] Mongo DB是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想,在Mongo DB中每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。
[0024] 所谓“SQL Server实例”,亦可简称为“Server实例”,实际上就是SQL服务器引擎,每个SQL Server数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。在一台计算机上,可以安装多个SQL Server,每个SQL Server就可以理解为是一个实例。实例又分为“默认实例”和“命名实例”,如果在一台计算机上安装第一个SQL Server,命名设置保持默认的话,那这个实例就是默认实例。一台计算机上最多只有一个默认实例,也可以没有默认实例,默认实例名与计算机名相同。
[0025] 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。执行单元测试,就是为了证明这段代码的行为和期望表现的一致。
[0026] 根据本申请的实施例,提供了一种单元测试方法。
[0027] 图1是根据本申请实施例的单元测试方法的流程图。如图1所示,该方法包括以下步骤:
[0028] 步骤S101,通过启动mongodb程序创建结构化查询语言服务器SQL server实例。
[0029] 在单元测试初始化阶段,调用程序中的应用程序编程接口(即一些预先定义的函数),启动mongodb程序以创建一个SQL server实例。
[0030] 步骤S102,启动SQL server实例装载mongodb服务器。
[0031] 调用程序中的Start方法启动SQL server实例装载mongodb服务器。可选地,在本申请实施例提供的单元测试方法中,在通过启动mongodb程序创建结构化查询语言服务器SQL server实例之后,在启动SQL server实例装载mongodb服务器之前,该方法还包括:获取预设进程号,其中,预设进程号为SQL server实例运行时装载mongodb服务器的进程号,启动SQL server实例装载mongodb服务器包括:在SQL server实例运行至预设进程号时装载mongodb服务器;获取数据库路径,其中,数据库路径为存储预设数据库的路径。
[0032] 例如,上述的预设进程号为10000,即表示在SQL server实例运行至第一万个进程时装载mongodb服务器。上述的数据库路径是用户预先指定存储预设数据库的路径,为后续创建预设数据库做好准备工作。
[0033] 步骤S103,在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据。
[0034] 在mongodb服务器中创建预设数据库,并将预设数据库存储在用户指定的数据库路径中。在预设数据库存储执行单元测试过程中的数据。
[0035] 可选地,在本申请实施例提供的单元测试方法中,在mongodb服务器中创建预设数据库之后,在mongodb服务器上执行单元测试之前,该方法还包括:通过调用第一预设代码删除预设数据库中所有数据。
[0036] 通过将预设数据库中的数据清除,在执行单元测试时,为单元测试提供了一个空的数据库,保证了单元测试过程中数据交互的正确性。
[0037] 可选地,在本申请实施例提供的单元测试方法中,在mongodb服务器上执行单元测试包括:获取待测试数据;将待测试数据添加至预设数据库;读取预设数据库中存储的待测试数据,得到目标数据;以及将待测试数据与目标数据进行比较,验证目标数据。
[0038] 通过在预设数据库中插入数据,读取预设数据库中的数据,在对读取到的数据进行验证等方式进行单元测试。需要说明的是,还可以在mongodb服务器上执行增删改查等多项操作进行单元测试以测试系统的性能。
[0039] 步骤S104,在执行单元测试结束之后,关闭SQL server实例。
[0040] 可选地,在本申请实施例提供的单元测试方法中,在执行单元测试结束之后,关闭SQL server实例包括:通过调用第二预设代码关闭SQL server实例。
[0041] 通过调用第二预设代码关闭SQL server实例,使得在单元测试的生命周期中存在一个临时的SQL server实例,避免了依赖于某一具体的实例,从而达到了提升单元测试的可移植性的效果。
[0042] 本申请实施例提供的单元测试方法,通过启动mongodb程序创建结构化查询语言服务器SQL server实例;启动SQL server实例装载mongodb服务器;在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据;以及在执行单元测试结束之后,关闭SQL server实例,解决了相关技术中单元测试方法中可移植性较差的问题,通过调用mongod程序创建SQL server实例,在单元测试结束时关闭SQL server实例,使得在单元测试的生命周期中存在一个临时的SQL server实例,避免了依赖于某一具体的实例,从而达到了提升单元测试的可移植性的效果。
[0043] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0044] 本申请实施例还提供了一种单元测试装置,需要说明的是,本申请实施例的单元测试装置可以用于执行本申请实施例所提供的用于单元测试方法。以下对本申请实施例提供的单元测试装置进行介绍。
[0045] 图2是根据本申请实施例的单元测试装置的示意图。如图2所示,该装置包括:第一创建单元10、装载单元20、第二创建单元30和关闭单元40。
[0046] 第一创建单元10,用于通过启动mongodb程序创建结构化查询语言服务器SQL server实例。
[0047] 装载单元20,用于启动SQL server实例装载mongodb服务器。
[0048] 第二创建单元30,用于在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据。
[0049] 关闭单元40,用于在执行单元测试结束之后,关闭SQL server实例。
[0050] 本申请实施例提供的单元测试装置,通过第一创建单元10启动mongodb程序创建SQL server实例;装载单元20启动SQL server实例装载mongodb服务器;第二创建单元30在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据;以及关闭单元40在执行单元测试结束之后,关闭SQL server实例,解决了相关技术中单元测试方法中可移植性较差的问题,通过第一创建单元10调用mongod程序创建SQL server实例,关闭单元40在单元测试结束时关闭SQL server实例,使得在单元测试的生命周期中存在一个临时的SQL server实例,避免了依赖于某一具体的实例,从而达到了提升单元测试的可移植性的效果。
[0051] 可选地,在本申请实施例提供的单元测试装置中,该装置还包括:获取单元,用于获取预设进程号,其中,预设进程号为SQL server实例运行时装载mongodb服务器的进程号,装载单元还用于在SQL server实例运行至预设进程号时装载mongodb服务器;获取数据库路径,其中,数据库路径为存储预设数据库的路径,第二创建单元还用于在mongodb服务器中创建预设数据库,并在数据库路径上存储预设数据库。
[0052] 可选地,在本申请实施例提供的单元测试装置中,该装置还包括:调用单元,用于调用第一预设代码删除预设数据库中所有数据。
[0053] 可选地,在本申请实施例提供的单元测试装置中,第二创建单元30包括:获取模块,用于获取待测试数据;添加模块,用于将待测试数据添加至预设数据库;读取模块,用于读取预设数据库中存储的待测试数据,得到目标数据;以及验证模块,用于将待测试数据与目标数据进行比较,验证目标数据。
[0054] 可选地,在本申请实施例提供的单元测试装置中,关闭单元40还用于通过调用第二预设代码关闭SQL server实例。
[0055] 所述单元测试装置包括处理器和存储器,上述第一创建单元、装载单元、第二创建单元和关闭单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元实现相应功能。上述预设进程号、预设数据库、第一预设代码、第二预设代码都可以存储在存储器中。
[0056] 处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数进行单元测试。
[0057] 存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
[0058] 本申请还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:通过启动mongodb程序创建结构化查询语言服务器SQL server实例;启动SQL server实例装载mongodb服务器;在mongodb服务器中创建预设数据库,并在mongodb服务器上执行单元测试,其中,预设数据库用于存储执行单元测试过程中的数据;以及在执行单元测试结束之后,关闭SQL server实例。
[0059] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0060] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0061] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0062] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0063] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0064] 显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
[0065] 以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。