本公开涉及计算机领域,具体地,涉及一种测试用例生成方法和装置。
背景技术:
目前,随着计算机技术的不断发展,计算机软件的应用越来越广泛。在对计算机软件进行测试时,用户通常会手动输入所需的数据,设计制作测试用例。测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。通常制作测试用例耗时较长,使得软件的测试效率较低。
技术实现要素:
本公开的目的是提供一种简单易行的测试用例生成方法和装置。
为了实现上述目的,本公开提供一种测试用例生成方法。所述方法包括:从源代码文件中提取类中所包含的方法的方法信息;根据所述方法信息生成所述类的测试用例。
可选地,所述从源代码文件中提取类中所包含的方法的方法信息的步骤包括:检测在编辑所述源代码文件过程中的保存操作;当检测到当前保存操作时,从源代码文件中提取上一次保存操作之后更新的、类中所包含的方法的方法信息。
可选地,所述根据所述方法信息生成所述类的测试用例的步骤包括:根据所述方法信息生成结构化文件;根据所述结构化文件生成所述类的测试用例。
可选地,所述方法信息包括参数类型,所述根据所述方法信息生成所述类的测试用例的步骤包括:根据所述参数类型生成参数值;根据所述参数值生成所述类的测试用例。
可选地,所述方法信息包括返回类型,所述根据所述方法信息生成所述类的测试用例的步骤包括:根据所述返回类型生成返回值的断言值;根据所述返回值的断言值生成所述类的测试用例。
本公开还提供一种测试用例生成装置。所述装置包括:提取模块,用于从源代码文件中提取类中所包含的方法的方法信息;生成模块,用于根据所述方法信息生成所述类的测试用例。
通过上述技术方案,从源代码文件中提取出方法信息,并自动地将方法信息生成的数据写入测试用例中,生成测试用例。这样,用自动生成的方法代替了传统手动输入的方法生成测试用例,从而提高了测试用例的生成效率,提高了测试效率,节省了用户的工作量,提升了用户体验。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是一示例性实施例提供的测试用例生成方法的流程图;
图2是另一示例性实施例提供的测试用例生成方法的流程图;
图3是又一示例性实施例提供的测试用例生成方法的流程图;
图4是又一示例性实施例提供的测试用例生成方法的流程图;
图5是又一示例性实施例提供的测试用例生成方法的流程图;以及
图6是一示例性实施例提供的测试用例生成装置的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是一示例性实施例提供的测试用例生成方法的流程图。如图1所示,所述方法包括以下步骤。
在步骤S11中,从源代码文件中提取类中所包含的方法的方法信息。
其中,类中可以包括多个方法。方法信息是指表示该方法的特征的数据,可以用于生成测试用例所需的数据。例如方法信息可以包括以下中的一者或多者:方法签名、参数名称、参数类型、以及返回类型。
在步骤S12中,根据所述方法信息生成所述类的测试用例。
如上所示,根据方法信息可以生成测试用例所需的数据(例如,测试用例的方法名称、参数值、返回值的断言值等)。可以依据预定的算法,根据方法信息生成这些数据,并将这些数据自动输入预定的程序中,生成测试用例。例如,可以将源代码文件中提取的方法的方法签名直接作为测试用例中的方法名称。
通过上述技术方案,从源代码文件中提取出方法信息,并自动地将方法信息生成的数据写入测试用例中,生成测试用例。这样,用自动生成的方法代替了传统手动输入的方法生成测试用例,从而提高了测试用例的生成效率,提高了测试效率,节省了用户的工作量,提升了用户体验。
具体地,可以在源代码的编辑全部完成之后,一次性地,从源代码文件中提取出方法信息,存储在内存或指定的文件中。也可以在用户编辑源代码的同时,对方法信息进行提取。图2是另一示例性实施例提供的测试用例生成方法的流程图。如图2所示,在图1的基础上,所述从源代码文件中提取类中所包含的方法的方法信息的步骤(步骤S11)可以包括以下步骤。
在步骤S111中,检测在编辑所述源代码文件时的保存操作。
其中,在编辑源代码时,用户可能会手动地对所编辑的文档进行保存。例如,通过键盘中的“Ctrl+S”快捷键进行保存,通过鼠标右键选择“保存”按键进行保存,或者,通过文档中设定的自动保存功能进行保存。这些都属于在编辑源代码文件时的保存操作。
在步骤S112中,当检测到当前保存操作时,从源代码文件中提取上一次保存操作之后更新的、类中所包含的方法的方法信息。
当检测到保存操作时,有可能编辑的源代码文件已经有更新。该实施例中,选择在该时机对源代码文件中的方法信息进行一次提取。并且,每次只提取上一次保存操作至当前保存操作期间更新的方法信息。具体地,可以将上一次保存操作后的源代码文件进行临时存储。在检测到当前保存操作时,将当前源代码文件和上一次保存操作后的源代码文件进行比对,将所更新的方法信息进行提取。
该实施例中,方法信息在编辑源代码文件的同时能够在后台被自动提取,不需要用户再额外进行提取的动作,节省了用户的工作量,提高了工作效率,对方法信息也进行了很好的数据备份。
方法信息被提取出来后,可以存储在一些文件中。该文件能够存储方法信息的数据,并且其数据能够依据一定的程序被从中提取出。图3是又一示例性实施例提供的测试用例生成方法的流程图。如图3所示,在图1的基础上,根据方法信息生成所述类的测试用例的步骤(步骤S12)可以包括以下步骤。
在步骤S121中,根据方法信息生成结构化文件(例如XML文件)。
在步骤S122中,根据结构化文件生成所述类的测试用例。
该实施例中,将方法信息存储在结构化文件当中,以利于方法信息的准确定位与存储,从而利于生成测试用例时,数据的准确提取。这样,就增大了方法信息的存储效率,也增大了测试用例的生成效果。
以下是一示例性实施例提供的结构化文件中存储的方法信息。
上述数据为两个方法的方法信息。其中,对于每个方法(method),存储有该方法的方法签名(method name)、返回类型(returnType)、参数名称(parameter name)、参数类型(type)。
在方法信息包括参数类型时,可以由系统根据参数类型自动生成测试用例所需的参数值。图4是又一示例性实施例提供的测试用例生成方法的流程图。如图4所示,在图1的基础上,根据方法信息生成所述类的测试用例的步骤(步骤S12)可以包括以下步骤。
在步骤S123中,根据所述参数类型生成参数值。
相关技术中,在手动输入参数值生成测试用例时,用户可以根据参数类型自己确定参数值来输入,当数据量较大时,只能挑选其中的少量参数进行手动输入,因此,效率很低。在该实施例中,系统可以根据参数类型自动生成用于测试用例的参数值。并且,可以以枚举、随机数等方式生成。例如,系统根据参数类型自动生成参数的序列值{0,1,2,…,10000}。
在步骤S124中,根据所述参数值生成所述类的测试用例。
也就是,将生成的参数值输入预定程序生成测试用例。由于系统可以自动生成参数值,因此,当参数取值范围较大或数据量较大时,能够大幅提升测试用例生成的效率,有效提升测试覆盖率,降低手动构造参数值的工作量,从而提高了软件测试的效率。
在方法信息包括返回类型时,可以由系统根据返回类型自动生成测试用例所需的返回值的断言值。图5是又一示例性实施例提供的测试用例生成方法的流程图。如图5所示,在图1的基础上,根据方法信息生成所述类的测试用例的步骤(步骤S12)可以包括以下步骤。
在步骤S125中,根据所述返回类型生成返回值的断言值。
根据断言值可以测试软件运行的结果是否正确。相关技术中,在手动输入返回值的断言值生成测试用例时,用户可以根据返回类型自己确定返回值的断言值来输入,因此,效率很低。在该实施例中,系统可以根据返回类型自动生成用于测试用例的返回值的断言值。例如,系统根据返回类型自动生成断言值为true(或false),又如,生成断言值的表达式为返回值列表长度大于1。
在步骤S126中,根据返回值的断言值生成所述类的测试用例。
也就是,将生成的返回值的断言值输入预定程序生成测试用例。由于系统可以自动生成返回值的断言值,因此,能够提升测试用例生成的效率,降低手动构造参数值的工作量,从而提高了软件测试的效率。
另外,可以为生成的测试用例制作交互界面,自动显示出方法信息,方便用户查询,并且能够通过手动的方式更改数据。
图6是一示例性实施例提供的测试用例生成装置的框图。如图6所示,所述测试用例生成装置10可以包括提取模块11和生成模块12。
提取模块11用于从源代码文件中提取类中所包含的方法的方法信息。
生成模块12用于根据所述方法信息生成所述类的测试用例。
可选地,提取模块11可以包括检测子模块111和提取子模块112。
检测子模块111用于检测在编辑所述源代码文件过程中的保存操作。
提取子模块112用于当检测到当前保存操作时,从源代码文件中提取上一次保存操作之后更新的、类中所包含的方法的方法信息。
可选地,所述生成模块12可以包括文件生成子模块121和第一用例生成子模块122。
文件生成子模块121用于根据所述方法信息生成结构化文件。
第一用例生成子模块122用于根据所述结构化文件生成所述类的测试用例。
可选地,所述方法信息包括以下中的一者或多者:方法签名、参数名称、参数类型、以及返回类型。
可选地,所述方法信息包括参数类型,所述生成模块12可以包括参数值生成子模块123和第二用例生成子模块124。
参数值生成子模块123用于根据所述参数类型生成参数值。
第二用例生成子模块124用于根据所述参数值生成所述类的测试用例。
可选地,所述方法信息包括返回类型,所述生成模块12可以包括断言值生成子模块125和第三用例生成子模块126。
断言值生成子模块125用于根据所述返回类型生成返回值的断言值。
第三用例生成子模块126用于根据所述返回值的断言值生成所述类的测试用例。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述技术方案,从源代码文件中提取出方法信息,并自动地将方法信息生成的数据写入测试用例中,生成测试用例。这样,用自动生成的方法代替了传统手动输入的方法生成测试用例,从而提高了测试用例的生成效率,提高了测试效率,节省了用户的工作量,提升了用户体验。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。