本发明涉及计算机技术领域,尤其涉及一种生成测试用例结构的方法、装置、设备及可读存储介质。
背景技术
现有技术中,需要通过手动方式逐个创建测试用例(junittestcase),并进行测试逻辑的相关编码。但是,通过手动方式创建测试用例会存在以下问题:在创建测试用例的过程中存在大量的重复劳动,导致开发资源的浪费,并且不便于核实,容易遗漏测试用例以及测试用例中测试方法的创建,从而导致测试用例编写不完整。
技术实现要素:
本发明实施例的主要目的在于提出一种生成测试用例结构的方法、装置、设备及可读存储介质,能够自动生成测试用例结构,减少人工重复劳动,提高工作效率。
为实现上述目的,本发明实施例提供了一种生成测试用例结构的方法,所述方法包括:
获取待测试项目中所有的类,并按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类;
按照预设搜索规则,分别从每个待测试类中确定出待测试方法;
根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
可选的,所述预设过滤规则包含了所有不需要编写测试用例的类的名称。
可选的,在所述根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构之后,所述方法还包括:
创建测试集,并将所述待测试项目中的各个测试用例结构添加到所述测试集中。
可选的,在所述根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构之后,所述方法还包括:
针对每一个待测试类,判断所述待测试类是否已存在测试用例,若是,则将所述测试用例中的各个测试方法的业务逻辑代码添加到所述待测试类的测试用例结构中。
可选的,所述将所述测试用例中的各个测试方法的业务逻辑代码添加到所述待测试类的测试用例结构中,包括:
针对所述测试用例中的每个测试方法,判断所述测试用例中的测试方法是否存在于所述测试用例结构中;
若是,则将所述测试用例中的测试方法的业务逻辑代码添加到所述测试用例结构中对应的测试方法中;
若否,则将所述测试用例中的测试方法采用注释的方式添加到所述测试用例结构中。
此外,为实现上述目的,本发明实施例还提出一种生成测试用例结构的装置,所述装置包括:
获取模块,用于获取待测试项目中所有的类,并按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类;
确定模块,用于按照预设搜索规则,分别从每个待测试类中确定出待测试方法;
生成模块,用于根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
可选的,所述装置还包括:
添加模块,用于在所述根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构之后,针对每一个待测试类,判断所述待测试类是否已存在测试用例,若是,则将所述测试用例中的各个测试方法的业务逻辑代码添加到所述待测试类的测试用例结构中。
可选的,所述添加模块,具体用于:
针对所述测试用例中的每个测试方法,判断所述测试用例中的测试方法是否存在于所述测试用例结构中;
若是,则将所述测试用例中的测试方法的业务逻辑代码添加到所述测试用例结构中对应的测试方法中;
若否,则将所述测试用例中的测试方法采用注释的方式添加到所述测试用例结构中。
此外,为实现上述目的,本发明实施例还提出一种生成测试用例结构的设备,所述设备包括:处理器、存储器及通信总线;
所述通信总线用于实现所述处理器和所述存储器之间的连接通信;
所述处理器用于执行所述存储器中存储的生成测试用例结构的程序,以实现上述介绍的生成测试用例结构的方法的步骤。
此外,为实现上述目的,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质存储有生成测试用例结构的程序;
当所述生成测试用例结构的程序被至少一个处理器执行时,导致所述至少一个处理器执行上述介绍的生成测试用例结构的方法的步骤。
本发明实施例提出的生成测试用例结构的方法、装置、设备及可读存储介质,从待测试项目中过滤出需要编写测试用例的待测试类,并从过滤出的待测试类中搜索出需要测试的待测试方法;根据待测试类中的待测试方法,自动生成与待测试类对应的测试用例结构,从而减少人工重复劳动,提高工作效率。
附图说明
图1是本发明第一实施例的生成测试用例结构的方法的流程图;
图2是本发明第二实施例的生成测试用例结构的方法的流程图;
图3是本发明第三实施例中的生成测试用例的方法的流程图;
图4是本发明第四实施例的生成测试用例结构的装置的组成结构示意图;
图5是本发明第五实施例的生成测试用例的装置的组成结构示意图;
图6是本发明第六实施例的生成测试用例结构的设备的组成结构示意图。
具体实施方式
为更进一步阐述本发明实施例为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明实施例进行详细说明如后。
本发明第一实施例,提出了一种生成测试用例结构的方法,如图1所示,所述方法具体包括以下步骤:
步骤s101:获取待测试项目中所有的类,并按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类。
具体的,所述预设过滤规则包含了所有不需要编写测试用例的类的名称,例如:vo类和entry类;所述预设过滤规则按照类的名称对不需要编写测试用例的类进行过滤。
步骤s102:按照预设搜索规则,分别从每个待测试类中确定出待测试方法。
具体的,所述预设搜索规则包含了所有不需要测试的方法的名称;通过所述预设搜索规则,从每个待测试类中筛选出需要测试的待测试方法。
步骤s103:根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
需要说明的是,本发明实施例仅构建出包含测试方法的测试用例结构,而测试用例结构中的各个测试方法的业务逻辑代码需要人工编写,以形成最终的测试用例。一个测试用例除了包含与每个待测试方法相对应的测试方法外,还包括一个初始化方法。在一个测试用例中,初始化方法可以被多个测试方法复用。
进一步的,在步骤s103之后,所述方法还包括:
创建测试集,并将所述待测试项目中的各个测试用例结构添加到所述测试集中。
在现有技术中,需要通过人工手动方式创建测试集(junittestsuite),并人工手动的将各个测试用例加入测试集中,以进行相关的测试。但是,在将大量的测试用例引入测试集的过程中存在大量的重复劳动,而且添加测试用例容易出现遗漏,从而导致运行测试集的过程中测试用例运行不完整。
测试集为待测试项目中所有测试用例的目录,起到整体测试的作用。需要说明的是,不管待测试项目中是否有待测试类,都可以有与待测试项目对应的测试集,当待测试项目中没有待测试类时,测试集的目录为空。基于所述测试集对所述待测试项目进行自动测试。
通过本发明实施例,可以自动确定出待测试项目中需要编写测试用例的待测试类,以及自动确定出每个待测试类中需要测试的待测试方法,并自动形成与每个待测试类对应的测试用例结构。此外,本发明实施例还可以自动创建测试集,并将生成的测试用例结构统一的添加到测试集中,避免遗漏。
本发明第二实施例,提出了一种生成测试用例结构的方法,如图2所示,所述方法具体包括以下步骤:
步骤s201:获取待测试项目中所有的类,并按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类。
具体的,所述预设过滤规则包含了所有不需要编写测试用例的类的名称,例如:vo类和entry类;所述预设过滤规则按照类的名称对不需要编写测试用例的类进行过滤。
步骤s202:按照预设搜索规则,分别从每个待测试类中确定出待测试方法。
具体的,所述预设搜索规则包含了所有不需要测试的方法的名称;通过所述预设搜索规则,从每个待测试类中筛选出需要测试的待测试方法。
步骤s203:根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
需要说明的是,本发明实施例仅构建出包含测试方法的测试用例结构,而测试用例结构中的各个测试方法的业务逻辑代码需要人工编写,以形成最终的测试用例。一个测试用例除了包含与每个待测试方法相对应的测试方法外,还包括一个初始化方法。在一个测试用例中,初始化方法可以被多个测试方法复用。
步骤s204:针对每一个待测试类,判断所述待测试类是否已存在测试用例,若是,则将所述测试用例中的各个测试方法的业务逻辑代码添加到所述待测试类的测试用例结构中。
具体的,所述将所述测试用例中的各个测试方法的业务逻辑代码添加到所述待测试类的测试用例结构中,包括:
针对所述测试用例中的每个测试方法,判断所述测试用例中的测试方法是否存在于所述测试用例结构中;
若是,则将所述测试用例中的测试方法的业务逻辑代码添加到所述测试用例结构中对应的测试方法中;
若否,则将所述测试用例中的测试方法采用注释的方式添加到所述测试用例结构中。
在生成测试用例结构后,用例编写人员会基于测试用例结构编写测试业务代码以完善测试用例,与此同时开发人员会继续开发所述待测试项目,并不定期的为所述待测试项目生成测试用例结构。在为所述待测试项目生成新的测试用例结构时,需要保留之前生成的测试用例中的业务逻辑代码,将原有测试用例中的内容填充进新生成的测试用例结构中,以便新生成的测试用例结构不会影响已编写的测试用例。
本发明第三实施例,提出了一种生成测试用例的方法,如图3所示,所述方法具体包括以下步骤:
步骤s301:按照预设扫描规则获取待测试项目中所有的类。
具体的,通过类加载器或文件扫描方式对待测试项目进行扫描,以从待测试项目中获取所有的类。
步骤s302:按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类。
具体的,所述预设过滤规则包含了所有不需要编写测试用例的类的名称,例如:vo类和entry类;所述预设过滤规则按照类的名称对不需要编写测试用例的类进行过滤。
步骤s303:获取所述待测试项目中的一个待测试类。
步骤s304:判断所述待测试类是否为接口类型;若是,则执行步骤s303,以获取所述待测试项目中的另一个待测试类;若否,则执行步骤s305。
步骤s305:判断所述待测试类是否为注解类型;若是,则执行步骤s303,以获取所述待测试项目中的另一个待测试类;若否,则执行步骤s306。
需要说明的是,接口类型的类和注解类型的类均不需要创建测试用例。
步骤s306:按照预设搜索规则,从所述待测试类中确定出需要测试的待测试方法。
具体的,所述预设搜索规则包含了所有不需要测试的方法的名称;通过所述预设搜索规则,从每个待测试类中筛选出需要测试的待测试方法。
步骤s307:判断在所述待测试类中是否存在待测试方法,若是,则执行步骤s308;若否,则执行步骤s303,以获取所述待测试项目中的另一个待测试类。
步骤s308:判断是否已存在所述待测试类的测试用例,若是,则执行步骤s309,若否,则执行步骤s310。
步骤s309:基于已存在的测试用例,生成所述待测试类的新的测试用例。
开发人员会持续性的开发所述待测试项目,并不定期的为所述待测试项目生成测试用例。在为所述待测试项目生成新的测试用例时,需要保留之前生成的测试用例中的业务逻辑代码,将原有测试用例中的内容填充进新生成的测试用例中,以便新生成的测试用例不会影响已编写的测试用例。
具体的,步骤s309,包括:
步骤a1:根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
步骤a2:获取所述已存在的测试用例中的各个测试方法的业务逻辑代码。
步骤a3:在所述已存在的测试用例中的测试方法存在于所述测试用例结构中的情况下,将所述已存在的测试用例中的测试方法的业务逻辑代码添加到所述测试用例结构中的对应的测试方法中。
步骤a4:在所述已存在的测试用例中的测试方法不存在于所述测试用例结构中的情况下,采用注释的方式将所述已存在的测试用例中的测试方法添加到所述测试用例结构中。
步骤s310:基于所述待测试类中的待测试方法,生成所述待测试类的测试用例。
具体的,步骤s310,包括:
步骤b1:根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
步骤b2:用例编程人员为所述待测试用例结构中的每个测试方法编写业务逻辑代码。
本发明实施例通过扫描、反射获取待测试项目中需要编写测试用例的待测试类和待测试类中的待测试方法,并以一定的结构将待测试类和待测试方法的测试用例组织在一起。在本发明实施例中,每个待测试类有对应的测试用例,测试用例的名称约定为在待测试类的名称后加上test;每个待测试方法有对应的测试方法,测试方法的名称约定为在test后面加上首字母大写后的待测试方法的名称;此外,在测试用例中还包括初始化方法,初始化方法的名称约定为init。
本发明第四实施例,提出了一种生成测试用例结构的装置,如图4所示,所述装置具体包括以下组成部分:
获取模块401,用于获取待测试项目中所有的类,并按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类。
具体的,所述预设过滤规则包含了所有不需要编写测试用例的类的名称,例如:vo类和entry类;所述预设过滤规则按照类的名称对不需要编写测试用例的类进行过滤。
确定模块402,用于按照预设搜索规则,分别从每个待测试类中确定出待测试方法。
具体的,所述预设搜索规则包含了所有不需要测试的方法的名称;通过所述预设搜索规则,从每个待测试类中筛选出需要测试的待测试方法。
生成模块403,用于根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
需要说明的是,本发明实施例仅构建出包含测试方法的测试用例结构,而测试用例结构中的各个测试方法的业务逻辑代码需要人工编写,以形成最终的测试用例。一个测试用例除了包含与每个待测试方法相对应的测试方法外,还包括一个初始化方法。在一个测试用例中,初始化方法可以被多个测试方法复用。
具体的,所述装置还包括:
创建模块,用于在所述根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构之后,创建测试集,并将所述待测试项目中的各个测试用例结构添加到所述测试集中。
测试集为待测试项目中所有测试用例的目录,起到整体测试的作用。需要说明的是,不管待测试项目中是否有待测试类,都可以有与待测试项目对应的测试集,当待测试项目中没有待测试类时,测试集的目录为空。
进一步的,所述装置还包括:
添加模块,用于在所述根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构之后,针对每一个待测试类,判断所述待测试类是否已存在测试用例,若是,则将所述测试用例中的各个测试方法的业务逻辑代码添加到所述待测试类的测试用例结构中。
更进一步的,所述添加模块,具体用于:
针对所述测试用例中的每个测试方法,判断所述测试用例中的测试方法是否存在于所述测试用例结构中;
若是,则将所述测试用例中的测试方法的业务逻辑代码添加到所述测试用例结构中对应的测试方法中;
若否,则将所述测试用例中的测试方法采用注释的方式添加到所述测试用例结构中。
在生成测试用例结构后,用例编写人员会基于测试用例结构编写测试业务代码以完善测试用例,与此同时开发人员会继续开发所述待测试项目,并不定期的为所述待测试项目生成测试用例结构。在为所述待测试项目生成新的测试用例结构时,需要保留之前生成的测试用例中的业务逻辑代码,将原有测试用例中的内容填充进新生成的测试用例结构中,以便新生成的测试用例结构不会影响已编写的测试用例。
本发明第五实施例,提出了一种生成测试用例的装置,如图5所示,所述装置具体包括以下组成部分:
扫描器501,用于按照预设扫描规则获取待测试项目中所有的类;
具体的,扫描器501通过类加载器或文件扫描方式对待测试项目进行扫描,以从待测试项目中获取所有的类。
过滤器502,用于按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类;
过滤器502对不需要编写测试用例的类进行过滤;例如,vo类和entry类不需要编写测试用例。
搜集器503,用于按照预设搜索规则,分别从每个待测试类中确定出需要测试的待测试方法。
生成器504:按照预设生成规则生成与待测试类对应的测试用例,其中,测试用例包括:初始化方法和与待测试方法对应的测试方法;并按照预设命名规则对测试用例和测试方法命名。
具体的,测试用例的名称约定为在待测试类的名称后加上test;测试方法的名称约定为在test后面加上首字母大写后的待测试方法的名称;初始化方法的名称约定为init。
生成器504将需要进行测试用例创建的待测试类按照测试用例模板生成测试用例,并根据待测试方法生成断言。
进一步的,通过测试用例进行测试,并利用断言返回的值检测出缺少业务逻辑代码的测试方法和出现问题的待测试方法。断言的默认值为false,即代表测试失败。造成默认值为false的原因包括:1)测试用例中的测试方法缺少业务逻辑代码;2)待测试方法本身存在问题。随着对测试用例的不断完善,当断言返回的默认值不为false时,所有的待测试类才可能经过充分的测试。
本发明实施例可以利用断言返回的值,统计出待测试项目中缺少业务逻辑代码的测试用例,并以此为指标,便于促进开发人员完善测试用例。还可以利用断言返回的值,统计出测试用例覆盖的情况,便于了解待测试项目的测试用例的完善程度。
本发明第六实施例,提出了一种生成测试用例结构的设备,如图6所示,所述设备包括:处理器601、存储器602及通信总线;
所述通信总线用于实现处理器601和存储器602之间的连接通信;
处理器601用于执行存储器602中存储的生成测试用例结构的程序,以实现以下步骤:
获取待测试项目中所有的类,并按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类;
按照预设搜索规则,分别从每个待测试类中确定出待测试方法;
根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
本发明第七实施例,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有生成测试用例结构的程序;
当所述生成测试用例结构的程序被至少一个处理器执行时,导致所述至少一个处理器执行以下步骤操作:
获取待测试项目中所有的类,并按照预设过滤规则,从获取到的所有类中确定出需要编写测试用例的待测试类;
按照预设搜索规则,分别从每个待测试类中确定出待测试方法;
根据从每个待测试类中确定出的待测试方法,相应的生成每个待测试类的测试用例结构;其中,测试用例结构包括:为待测试类中的每个待测试方法生成的对应的测试方法。
本发明实施例中介绍的生成测试用例结构的方法、装置、设备及可读存储介质,从待测试项目中过滤出需要编写测试用例的待测试类,并从过滤出的待测试类中搜索出需要测试的待测试方法;根据待测试类中的待测试方法,自动生成与待测试类对应的测试用例结构,从而减少人工重复劳动,提高工作效率,增强对测试用例完成情况的考核。
通过具体实施方式的说明,应当可对本发明实施例为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明实施例加以限制。