CN115509923A - 单元测试案例生成方法、装置以及计算机存储介质 - Google Patents
单元测试案例生成方法、装置以及计算机存储介质 Download PDFInfo
- Publication number
- CN115509923A CN115509923A CN202211207269.8A CN202211207269A CN115509923A CN 115509923 A CN115509923 A CN 115509923A CN 202211207269 A CN202211207269 A CN 202211207269A CN 115509923 A CN115509923 A CN 115509923A
- Authority
- CN
- China
- Prior art keywords
- file
- tested
- information
- test
- unit test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种单元测试案例生成方法、单元测试案例生成装置以及计算机存储介质,该单元测试案例生成方法包括:获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态;对待测试文件的源码进行解析,得到源码的文件相关信息;基于测试信息及文件相关信息生成待测试文件的单元测试案例。通过上述方式,本申请能够通过解析待测试文件的源码并基于解析内容自动生成单元测试案例,减少了用户的操作步骤,提高了测试的工作效率。
Description
技术领域
本申请涉及软件测试领域,特别是涉及一种单元测试案例生成方法、单元测试案例生成装置以及计算机存储介质。
背景技术
随着互联网行业的不断发展,在软件开发过程中软件的规模越来越大且结构复杂,此时软件的质量也随之变得重要起来。为了验证软件能否满足用户的需求,需要对软件进行测试。软件测试的策略有很多种,其中包括单元测试,单元测试是针对软件中最小单元进行的测试。
在一应用场景中,用户在对软件进行单元测试时,需要人工写入测试案例代码对每个被测代码进行测试,由于被测代码的不同,测试案例代码需要根据被测代码进行人为修改,导致测试过程非常繁琐。现有的单元测试案例生成工具,不能针对不同的被测代码批量生成单元测试案例,自动化率较低。
发明内容
本申请主要解决的技术问题是如何提高自动化生成单元测试案例的效率,对此,本申请提供一种单元测试案例生成方法、单元测试案例生成装置以及计算机存储介质。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种单元测试案例生成方法,该方法包括:获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态;对待测试文件的源码进行解析,得到源码的文件相关信息;基于测试信息及文件相关信息生成待测试文件的单元测试案例。
其中,获取待测试文件及待测试文件的测试信息,包括:调用可视化插件,生成配置窗口;基于用户的第一选择指令,在配置窗口选择待测试文件的测试信息。
其中,对待测试文件的源码进行解析,得到源码的文件相关信息,包括:对待测试文件的源码进行解析,识别出源码中的方法信息、引入信息、声明信息、调用信息作为文件相关信息。
其中,方法信息包括:若干方法、若干方法中使用的参数及其类型以及方法中的若干接口。
其中,基于测试信息及文件相关信息生成待测试文件的单元测试案例,包括:基于文件相关信息,生成与待测试文件对应的若干测试语句;将若干测试语句写入测试信息中生成路径下的对应文件中;基于对应文件生成待测试文件的单元测试案例。
其中,将若干测试语句写入测试信息中生成路径下的对应文件中,包括:将若干测试语句中的测试方法声明语句和执行语句写入测试信息中生成路径下的java文件中;将若干测试语句使用的模拟数据以及断言信息写入测试信息中生成路径下的xml文件中;基于java文件和xml文件,生成对应文件。
其中,在对待测试文件的源码进行解析,得到源码的文件相关信息之后还包括:基于源码配置待测试文件的模拟对象,模拟对象用于对待测试文件中暂未实现的功能进行模拟。
其中,在基于测试信息及文件相关信息生成待测试文件的单元测试案例之前,还包括:生成待测试文件的初始化配置信息,其中,初始化配置信息用于存储测试前和测试后的提示信息以及加载待测试文件对应的配置文件。
解决上述技术问题,本申请采用的另一个技术方案是:提供一种单元测试案例生成装置,该单元测试案例生成装置包括处理器和存储器,存储器与处理器耦接,存储器存储有程序数据,处理器用于执行程序数据以实现如上述的单元测试案例生成方法。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质存储有程序数据,程序数据在被执行时,用于实现上述的单元测试案例生成方法。
本申请的有益效果是:区别于现有技术的情况,本申请提供的单元测试案例生成方法应用于单元测试案例生成装置,单元测试案例生成装置获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态;对待测试文件的源码进行解析,得到源码的文件相关信息;基于测试信息及文件相关信息生成待测试文件的单元测试案例。通过上述方式,与常规的单元测试案例生成方法相比,本申请采用的通过解析待测试文件的源码并基于解析内容生成单元测试案例的方法,可以通过对源码的解析生成完整的单元测试案例,用户无需过多地对测试案例代码进行填充,只用修改符合业务逻辑的参数,减少了用户的操作流程,缩短了测试时间,提高了用户工作效率。本单元测试案例生成方法基于源码生成单元测试案例,可以针对不同待测试文件批量生成对应的单元测试案例,能够帮助用户边开发边测试,快速地找到开发代码中出现的问题。且单元测试案例生成方法中自动化生成提高了用户体验,让用户对于单元测试案例生成的配置更加方便,还能避免出现利用工具生成单元测试案例时源码可能被侵入的安全隐患。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的单元测试案例生成方法一实施例的流程示意图;
图2是本申请提供的单元测试案例生成装置执行单元测试案例生成方法的流程示意图;
图3是本申请提供的单元测试案例生成方法生成的测试文件示意图;
图4是本申请提供的单元测试案例生成装置第一实施例的结构示意图;
图5是本申请提供的单元测试案例生成装置第二实施例的结构示意图;
图6是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参阅图1和图2,图1是本申请提供的单元测试案例生成方法一实施例的流程示意图;图2是本申请提供的单元测试案例生成装置执行单元测试案例生成方法的流程示意图。
单元测试是将整个软件分解为各个单元,随后对单元即软件代码中对模块、类、函数实现的功能执行检测,看看是否满足想要的预期,是否达到功能要求。在面向对象的程序中,单元测试中的单元主要是对代码中的类进行测试。类是对现实生活中一类具有共同特征的事物的抽象。类的内部封装了属性和方法,用于操作自身的成员。类是对某种对象的定义,具有行为,它描述一个对象能够做什么以及做的方法,它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、属性、方法和事件。
如图1和图2所示,本申请实施例的单元测试案例生成方法包括:
步骤11:获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态。
具体地,用户通过右键点击待测试文件,弹出操作菜单,在操作菜单中选择使用单元测试案例装置,单元测试案例生成装置基于用户选择的待测试文件进行单元测试案例的生成。
具体地,单元测试案例生成装置调用可视化插件,在显示界面生成一个配置窗口以供用户对单元测试案例进行可视化界面配置。单元测试案例生成装置基于用户的第一选择指令,在配置窗口选择待测试文件的测试信息。其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态。单元测试案例生成装置通过可视化插件生成的配置窗口能够让用户灵活设置元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态,操作简单,便于用户的使用。
可选地,用户可以通过在文件列表中选择的方式选择单元测试案例的生成路径,也可以通过直接输入路径的方式决定单元测试案例的生成路径。用户还可以在信息框中输入单元测试案例生成的超时结束进程时间。超时结束进程时间用于当单元测试案例生成装置进程出错没有正常运行时,在经过超时时间后能够结束当前生成进程并重新开始下一生成进程,避免出现进程堵塞的问题。
用户可以通过勾选的方式在配置窗口中的测试案例生成模式列表框中选择测试案例的生成模式,包括PowerMockRunner和SpringRunner两种测试框架。PowerMockRunner测试框架可以模拟静态方法,删除静态初始化程序,允许模拟而不依赖于注入,PowerMock还包含一些实用程序,可让用户更轻松地访问对象的内部状态,SpringRunner测试框架需要连接数据库,进行网络请求。用户还能选择待测试文件与数据库的关联状态,通过与数据库相连能够获取数据库中的数据,并将数据代入单元测试案例中进行对待测试文件的测试。
步骤12:对待测试文件的源码进行解析,得到源码的文件相关信息。
可选地,单元测试案例生成装置还会根据待测试文件计算出需要生成的单元测试案例中类的个数,根据装置处理器的使用率,启动一定数量的线程开始对待测试文件进行单元测试案例的生成进程。
具体地,单元测试案例生成装置对待测试文件的源码进行解析,识别出源码中的方法信息、引入信息、声明信息、调用信息作为文件相关信息,其中的方法信息包括若干方法、若干方法中使用的参数及其类型以及方法中的若干接口。
方法包括了若干语句,这些语句是用于解决一类问题的步骤的有序集合,因此方法的作用为解决一特定问题,方法中的参数可以分为形式参数和实际参数,形式参数为代表一个函数或过程命名,实际参数为在方法中调用函数或过程时使用的实际值。接口为一系列方法的声明,是一些方法特征的集合。
引入信息包含了源码中引用其他别的类的信息。声明信息包含对源码中类的声明和方法的声明,用于表示类和方法的存在。调用信息包含源码中对别的方法进行调用的信息。单元测试案例生成装置从源码中获取相应的字段得到以上的所有信息作为待测试文件的文件相关信息,用于后面对应测试语句的生成,无需用户过多地填写单元测试案例的内容,只用修改符合业务逻辑的参数,减少了用户的操作过程,提高了工作效率。
步骤13:基于测试信息及文件相关信息生成待测试文件的单元测试案例。
具体地,单元测试案例生成装置基于文件相关信息,生成与待测试文件对应的若干测试语句。参阅图3,图3为本申请提供的单元测试案例生成方法生成的测试文件示意图。
单元测试案例生成装置将若干测试语句中的测试方法声明语句和执行语句写入测试信息中生成路径下的java文件中;将若干测试语句使用的模拟数据以及断言信息写入测试信息中生成路径下的xml文件中;基于java文件和xml文件,生成对应文件;基于对应文件生成待测试文件的单元测试案例。
测试方法声明语句和执行语句用于进行具体的测试流程,模拟数据是实际测试时使用的数据,断言信息为了表示与验证软件开发者预期的结果,当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。单元测试案例生成装置生成的java文件与xml文件合在一起构成了待测试文件的整个单元测试案例。
具体地,单元测试案例生成装置在基于配置信息对待测试文件的源码进行解析之后,还会基于源码配置待测试文件的模拟对象,模拟对象用于对待测试文件中暂未实现的功能进行模拟,该功能不是该测试需要测试的主要内容,但是与待测试文件需要实现的功能相关。使用模拟对象可以不用使用接口调用别的类或方法,而是通过实现该类或方法达成的效果的方法来构建模拟对象,减少了单元测试案例生成装置的配置时间,提高了工作效率。
继续参阅图3,单元测试案例生成装置在基于测试信息及文件相关信息生成待测试文件的单元测试案例之前,还会生成待测试文件的初始化配置信息。其中,初始化配置信息用于存储测试前和测试后的提示信息以及加载待测试文件对应的配置文件。例如,在运行测试文件之前,可以向用户显示该测试用于测试什么功能的提示信息。配置文件为生成的单元测试案例的配置参数与初始设置以及用户写入的对于单元测试案例的注释内容。
区别于现有技术的情况,本申请提供的单元测试案例生成方法应用于单元测试案例生成装置,单元测试案例生成装置获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态;对待测试文件的源码进行解析,得到源码的文件相关信息;基于测试信息及文件相关信息生成待测试文件的单元测试案例。通过上述方式,与常规的单元测试案例生成方法相比,本申请采用的通过解析待测试文件的源码并基于解析内容生成单元测试案例的方法,可以通过对源码的解析生成完整的单元测试案例,用户无需过多地对测试案例代码进行填充,只用修改符合业务逻辑的参数,减少了用户的操作流程,缩短了测试时间,提高了用户工作效率。本单元测试案例生成方法基于源码生成单元测试案例,可以针对不同待测试文件批量生成对应的单元测试案例,能够帮助用户边开发边测试,快速地找到开发代码中出现的问题。且单元测试案例生成方法中自动化生成提高了用户体验,让用户对于单元测试案例生成的配置更加方便,还能避免出现利用工具生成单元测试案例时源码可能被侵入的安全隐患。
上述实施例的方法,可以利用一单元测试案例生成装置来实现,下面结合图4进行描述,图4是本申请提供的单元测试案例生成装置第一实施例的结构示意图。
如图4所示,本申请实施例的单元测试案例生成装置40包括获取模块41、解析模块42、案例生成模块43。
其中,获取模块41,获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态。
解析模块42,用于对待测试文件的源码进行解析,得到源码的文件相关信息。
案例生成模块43,用于基于测试信息及文件相关信息生成待测试文件的单元测试案例。
上述实施例的方法,可以利用一单元测试案例生成装置来实现,下面结合图5,图5是本申请提供的单元测试案例生成装置第二实施例的结构示意图,该单元测试案例生成装置50包括存储器51和处理器52,存储器51用于存储程序数据,处理器52用于执行程序数据以实现如下的方法:
获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态;对待测试文件的源码进行解析,得到源码的文件相关信息;基于测试信息及文件相关信息生成待测试文件的单元测试案例。
参阅图6,图6是本申请提供的计算机可读存储介质一实施例的结构示意图,该计算机可读存储介质60存储有程序数据61,程序数据61在被处理器执行时,用于实现如下的方法:
获取待测试文件及待测试文件的测试信息,其中,测试信息包括单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态;对待测试文件的源码进行解析,得到源码的文件相关信息;基于测试信息及文件相关信息生成待测试文件的单元测试案例。
本申请的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种单元测试案例生成方法,其特征在于,所述生成方法包括:
获取待测试文件及所述待测试文件的测试信息,其中,所述测试信息包括所述单元测试案例的生成路径、超时结束进程时间、案例生成模式以及关联状态;
对所述待测试文件的源码进行解析,得到所述源码的文件相关信息;
基于所述测试信息及所述文件相关信息生成所述待测试文件的单元测试案例。
2.根据权利要求1所述的生成方法,其特征在于,
所述获取待测试文件及所述待测试文件的测试信息,包括:
调用可视化插件,生成配置窗口;
基于用户的第一选择指令,在所述配置窗口选择所述待测试文件的测试信息。
3.根据权利要求1所述的生成方法,其特征在于,
所述对所述待测试文件的源码进行解析,得到所述源码的文件相关信息,包括:
对所述待测试文件的源码进行解析,识别出所述源码中的方法信息、引入信息、声明信息、调用信息作为所述文件相关信息。
4.根据权利要求3所述的生成方法,其特征在于,
所述方法信息包括:
若干方法、所述若干方法中使用的参数及其类型以及所述方法中的若干接口。
5.根据权利要求3所述的生成方法,其特征在于,
所述基于所述测试信息及所述文件相关信息生成所述待测试文件的单元测试案例,包括:
基于所述文件相关信息,生成与所述待测试文件对应的若干测试语句;
将所述若干测试语句写入所述测试信息中生成路径下的对应文件中;
基于所述对应文件生成所述待测试文件的单元测试案例。
6.根据权利要求5所述的生成方法,其特征在于,
所述将所述若干测试语句写入所述测试信息中生成路径下的对应文件中,包括:
将所述若干测试语句中的测试方法声明语句和执行语句写入所述测试信息中生成路径下的java文件中;
将所述若干测试语句使用的模拟数据以及断言信息写入所述测试信息中生成路径下的xml文件中;
基于所述java文件和所述xml文件,生成所述对应文件。
7.根据权利要求1所述的生成方法,其特征在于,
在所述对所述待测试文件的源码进行解析,得到所述源码的文件相关信息之后还包括:
基于所述源码配置所述待测试文件的模拟对象,所述模拟对象用于对所述待测试文件中暂未实现的功能进行模拟。
8.根据权利要求1所述的生成方法,其特征在于,
在所述基于测试信息及所述文件相关信息生成所述待测试文件的单元测试案例之前,还包括:
生成所述待测试文件的初始化配置信息,其中,所述初始化配置信息用于存储测试前和测试后的提示信息以及加载所述待测试文件对应的配置文件。
9.一种单元测试案例生成装置,其特征在于,所述单元测试案例生成装置包括存储器以及与所述存储器耦接的处理器;
其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如权利要求1至8任一项所述的单元测试案例生成方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质用于存储程序数据,所述程序数据在被计算机执行时,用以实现如权利要求1至8任一项所述的单元测试案例生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211207269.8A CN115509923A (zh) | 2022-09-29 | 2022-09-29 | 单元测试案例生成方法、装置以及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211207269.8A CN115509923A (zh) | 2022-09-29 | 2022-09-29 | 单元测试案例生成方法、装置以及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115509923A true CN115509923A (zh) | 2022-12-23 |
Family
ID=84507914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211207269.8A Pending CN115509923A (zh) | 2022-09-29 | 2022-09-29 | 单元测试案例生成方法、装置以及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115509923A (zh) |
-
2022
- 2022-09-29 CN CN202211207269.8A patent/CN115509923A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642721B2 (en) | Generation of automated testing scripts by converting manual test cases | |
Memon | Automatically repairing event sequence-based GUI test suites for regression testing | |
US8429614B2 (en) | Method and apparatus of effective functional test data generation for web service testing | |
US8924937B1 (en) | Method and system for generating verification information and tests for software | |
CN102667730B (zh) | 设计时调试 | |
US6061643A (en) | Method for defining durable data for regression testing | |
CN110008113B (zh) | 一种测试方法、装置、电子设备 | |
US9465718B2 (en) | Filter generation for load testing managed environments | |
CN110716870B (zh) | 服务的自动化测试方法及装置 | |
US7895575B2 (en) | Apparatus and method for generating test driver | |
CN110196809B (zh) | 接口测试方法及装置 | |
CN111158656B (zh) | 基于因果树法的测试代码生成方法及装置 | |
US8661414B2 (en) | Method and system for testing an order management system | |
CN112181852A (zh) | 一种接口自动化测试方法、装置、计算机设备及存储介质 | |
CN111797020A (zh) | 基于动态字节码的mock数据方法及装置 | |
Torunski et al. | Code style analytics for the automatic setting of formatting rules in ides: A solution to the tabs vs. spaces debate | |
CN111679977A (zh) | 一种基于Jest的React项目单元测试方法、设备及存储介质 | |
US10169217B2 (en) | System and method for test generation from software specification models that contain nonlinear arithmetic constraints over real number ranges | |
CN109240923B (zh) | 接口测试脚本的生成方法及计算机可读存储介质 | |
CN114297961A (zh) | 一种芯片测试用例处理方法及相关装置 | |
CN111143228B (zh) | 基于决策表法的测试代码生成方法及装置 | |
CN115509923A (zh) | 单元测试案例生成方法、装置以及计算机存储介质 | |
CN114064469A (zh) | 接口自动化测试方法及存储介质 | |
CN113220586A (zh) | 一种自动化的接口压力测试执行方法、装置和*** | |
CN113094267A (zh) | 一种测试结果收集方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |