自动生成模拟单元测试数据的方法、装置、设备及介质与流程

文档序号:31997856发布日期:2022-11-02 09:16阅读:33来源:国知局
自动生成模拟单元测试数据的方法、装置、设备及介质与流程

1.本发明涉及单元测试技术领域,尤其是一种自动生成模拟单元测试数据的方法、装置、设备及介质。


背景技术:

2.单元测试,是指对软件产品的局部且特定的功能进行测试,主要是通过编写一小段代码来检验该功能是否正确。不同于其他类别的测试,单元测试更多的是对代码里面的某个模块、某个函数或者某个类进行验证,是直接对产品代码内部逻辑进行的测试。
3.在软件测试学界,有一个大家公认的软件测试模型,即分层测试模型,也就是俗称的测试金字塔。单元测试位于金字塔的最底层,因此代码执行的效率最高、运行的速度也最快,单元测试是整个模型中最有价值的测试方法。
4.单元测试依赖模拟数据场景下,需要自己编写模拟数据,编写模拟数据需要花费很长时间。单元测试依赖数据库场景,数据库数据变动时,导致现有单元测试无法通过。代码内部调用修改无法感知,造成单元测试遗漏。


技术实现要素:

5.针对现有技术中的缺陷,本发明提供了一种自动生成模拟单元测试数据的方法、装置、设备及介质,解决了单元测试依赖模拟数据场景下需要花费很长时间自己编写模拟数据的问题。
6.第一方面
7.本发明提供了一种自动生成模拟单元测试数据的方法,包括:
8.判断是否存在本地单元测试数据,若否,则调用数据库服务进行测试;调用通过后,基于调用结果创建本地单元测试数据。
9.优选地,若存在本地单元测试数据,则基于所述本地单元测试数据自动模拟外部接口服务直接返回本地接口调用结果。
10.优选地,所述本地单元测试数据包括每个外部接口的调用顺序及结果。
11.优选地,还包括:判断调用是否通过,若否,判定测试失败。
12.第二方面
13.本发明提供了一种自动生成模拟单元测试数据的装置,包括:
14.第一判断模块,用于判断是否存在本地单元测试数据,若否,产生数据库服务调用指令;
15.调用模块,用于根据所述数据库服务调用指令调用数据库服务进行测试;
16.测试数据创建模块,用于在调用通过后,基于调用结果创建本地单元测试数据。
17.优选地,所述第一判断模块还用于当存在本地单元测试数据时,产生本地单元测试数据调用指令;
18.所述调用模块还用于根据所述本地单元测试数据调用指令并基于所述本地单元
测试数据自动模拟外部接口服务直接返回本地接口调用结果。
19.优选地,所述本地单元测试数据包括每个外部接口的调用顺序及结果。
20.优选地,还包括第二判断模块,用于判断调用是否通过,若否,判定测试失败。
21.第三方面
22.本发明提供了一种自动生成模拟单元测试数据的设备,包括存储器和处理器;所述存储器用于存储可执行程序代码;
23.所述处理器用于读取所述存储器中存储的可执行程序代码,以执行权利要求第一方面所述的自动生成模拟单元测试数据的方法。
24.第四方面
25.本发明提供了一种存储介质,所述存储介质存储有权利要求9中所述的可执行程序代码。
26.本发明的有益效果为:
27.(1)解决了单元测试依赖模拟数据场景下需要花费很长时间自己编写模拟数据的问题;
28.(2)本发明的本地单元测试数据是基于调用数据库产生的,代码质量较高;
29.(3)后续的单元测试中都采用本地单元测试数据,保证单元测试中每次执行的结果都一致,不受外部影响,提高了稳定性。
附图说明
30.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
31.图1为本发明实施例自动生成模拟单元测试数据的方法的流程示意图;
32.图2为示例的流程示意图;
33.图3为本发明实施例自动生成模拟单元测试数据的设备的架构图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
36.还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
37.还应当进一步理解,本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
38.如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0039]
需要注意的是,除非另有说明,本技术使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
[0040]
实施例一:
[0041]
如图1所示,本发明实施例提供了一种自动生成模拟单元测试数据的方法,包括:
[0042]
判断是否存在本地单元测试数据,若否,则调用数据库服务进行测试;调用通过后,基于调用结果创建本地单元测试数据。
[0043]
其中,模拟单元测试数据是根据场景创建的符合流程的非真实数据。开发人员在编写完代码进行单元测试的时候,保存测试过程中与调用结果相关的数据,作为本地单元测试数据,解决了单元测试依赖模拟数据场景下需要花费很长时间自己编写模拟数据的问题。且本发明实施例的本地单元测试数据是基于调用数据库产生的,代码质量较高。
[0044]
若存在本地单元测试数据,则基于本地单元测试数据自动模拟外部接口服务直接返回本地接口调用结果。
[0045]
此处的本地单元测试数据可为前述创建的本地单元测试数据,后续的单元测试中都采用本地单元测试数据,保证单元测试中每次执行的结果都一致,不受外部影响,提高了稳定性。
[0046]
本发明实施例中,本地单元测试数据包括每个外部接口的调用顺序及结果。开发人员在编写完代码进行单元测试时,根据功能测试过程中保存每个外部接口的调用顺序及结果到本地,得到本地单元测试数据。
[0047]
本发明实施例中,还包括:判断调用是否通过,若否,判定测试失败。
[0048]
为了更清楚地描述本发明实施例一种自动生成模拟单元测试数据的方法的工作方式及技术效果,列举以下示例,如图2所示:
[0049]
启动功能测试,首先判断存储器中是否存有本地单元测试数据,如无,则调用数据库服务进行测试,进行测试接口内部调用。接着,判断调用是否通过,若通过,判断是否为调用的本地服务(即判断测试的数据是调用数据库服务的数据,还是已经存在的本地单元测试数据),若否(即测试的数据是调用数据库服务的数据),则在功能测试过程中保存每个外部接口的调用顺序及结果到本地,创建本地单元测试数据,测试结束。
[0050]
若存储器中存有本地单元测试数据,则基于本地单元测试数据自动模拟外部接口服务直接返回本地接口调用结果,测试接口内部调用,接着,判断调用是否通过,若通过,判断是否为调用的本地服务(即判断测试的数据是调用数据库服务的数据还是已经存在的本地单元测试数据),若是(即测试的数据是已经存在的本地单元测试数据),则测试结束。
[0051]
其中,若调用未通过,则测试结束。
[0052]
实施例二:
[0053]
基于与实施例一相同的发明构思,本发明实施例提供了一种自动生成模拟单元测试数据的装置,包括:
[0054]
第一判断模块,用于判断是否存在本地单元测试数据,若否,产生数据库服务调用
指令;
[0055]
调用模块,用于根据数据库服务调用指令调用数据库服务进行测试;
[0056]
测试数据创建模块,用于在调用通过后,基于调用结果创建本地单元测试数据。
[0057]
其中,模拟单元测试数据是根据场景创建的符合流程的非真实数据。开发人员在编写完代码进行单元测试的时候,保存测试过程中与调用结果相关的数据,作为本地单元测试数据,解决了单元测试依赖模拟数据场景下需要花费很长时间自己编写模拟数据的问题。且本发明实施例的本地单元测试数据是基于调用数据库产生的,代码质量较高。
[0058]
第一判断模块还用于当存在本地单元测试数据时,产生本地单元测试数据调用指令;
[0059]
调用模块还用于根据本地单元测试数据调用指令并基于本地单元测试数据自动模拟外部接口服务直接返回本地接口调用结果。
[0060]
此处的本地单元测试数据可为前述创建的本地单元测试数据,后续的单元测试中都采用本地单元测试数据,保证单元测试中每次执行的结果都一致,不受外部影响,提高了稳定性。
[0061]
本地单元测试数据包括每个外部接口的调用顺序及结果。开发人员在编写完代码进行单元测试时候,根据功能测试过程中保存每个外部接口的调用顺序及结果到本地,得到本地单元测试数据。
[0062]
还包括第二判断模块,用于判断调用是否通过,若否,判定测试失败。
[0063]
实施例三:
[0064]
本发明实施例还提供了一种自动生成模拟单元测试数据的设备,图3为本发明实施例自动生成模拟单元测试数据的设备的硬件架构图,包括输入设备、输入接口、中央处理器、存储器、输出接口和输出设备。其中,输入接口、中央处理器、存储器及输出接口通过总线相互连接,输入设备和输出设备分别通过输入接口和输出接口与总线连接,进而与设备的其他组件连接。具体地,输入设备接收来自外部的输入信息,并通过输入接口将输入信息传送到中央处理器。中央处理器基于存储器存储的计算机可执行程序代码对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器中,然后通过输出接口将输出信息传送到输出设备,输出设备将输出信息输出到设备的外部供用户使用。
[0065]
实施例四:
[0066]
本发明实施例提供了一种存储介质,存储有以上的可执行程序代码。该可执行程序代码被处理器执行时实现上述自动生成模拟单元测试数据的方法。本实施例中,存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。其中,可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质(如dvd)、或者半导体介质(如固态硬盘ssd)等。进一步地,计算机可读存储介质还可以既包括系统的内部存储单元也包括外部存储设备。计算机可读存储介质用于存储计算机程序以及系统所需的其他程序和数据。计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
[0067]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这
些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0068]
本发明实施例提供的自动生成模拟单元测试数据的方法、装置、设备及介质,单元测试启动后现在判断本都是否存在自动生成的通过的测试数据,存在通过的数据工具自动模拟外部接口服务直接返回本地接口调用结果。不存在测试数据直接正常调用数据库服务进行单元测试,正常调用服务成功并且单元测试通过,工具记录单元测试过程中调用外部服务的顺序,并把调用接口的结果存储在本地。本发明实施例解决了单元测试依赖模拟数据场景下需要花费很长时间自己编写模拟数据的问题;且本发明实施例的本地单元测试数据是基于调用数据库产生的,代码质量较高;后续的单元测试中都采用本地单元测试数据,保证单元测试中每次执行的结果都一致,不受外部影响,提高了稳定性。
[0069]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1