一种自动生成单元测试用例的方法及装置制造方法及图纸

技术编号:9596692 阅读:110 留言:0更新日期:2014-01-23 02:12
本发明专利技术提供了一种自动生成单元测试用例的方法及装置,其中自动生成单元测试用例的方法包括:A.对待测代码进行语法分析,生成所述待测代码的抽象语法树;B.根据所述抽象语法树确定所述待测代码的特征信息,并根据所述特征信息确定一组或多组测试数据;C.利用预置的测试模板中的标签对所述一组或多组测试数据进行解析,以生成一个或多个单元测试用例。通过上述方式,本发明专利技术能够极大地提高测试效率。

【技术实现步骤摘要】
【专利摘要】本专利技术提供了一种自动生成单元测试用例的方法及装置,其中自动生成单元测试用例的方法包括:A.对待测代码进行语法分析,生成所述待测代码的抽象语法树;B.根据所述抽象语法树确定所述待测代码的特征信息,并根据所述特征信息确定一组或多组测试数据;C.利用预置的测试模板中的标签对所述一组或多组测试数据进行解析,以生成一个或多个单元测试用例。通过上述方式,本专利技术能够极大地提高测试效率。【专利说明】一种自动生成单元测试用例的方法及装置【
】本专利技术涉及测试技术,特别涉及一种自动生成单元测试用例的方法及装置。【
技术介绍
】单元测试在保证软件质量方面发挥着重要的作用,是软件工程中不可或缺的一步。根据统计数据表明,开发单元测试用例的时间占软件开发项目时间的30%左右,可见,提高开发单元测试用例的效率,对于加快测试进度,进而节约项目开发时间的意义非常重大。在现有技术中,开发单元测试用例主要以人工的方式进行,如通过测试人员对待测代码进行人工分析,根据分析情况手工编写测试用例。这主要存在几个问题:首先,需要比较专业的测试人员,并且需要测试人员对待测代码比较熟悉;其次,由于测试用例主要通过人工编写,所以测试用例的质量较低;最后,人工编写测试用例,时间长,效率低。【
技术实现思路
】本专利技术所要解决的技术问题是提供一种自动生成单元测试用例的方法及装置,以提高单元测试用例的开发速度,从而缩短软件测试花费的时间,提高软件测试的效率。本专利技术为解决技术问题而采用的技术方案是提供一种自动生成单元测试用例的方法,包括:A.对待测代码进行语法分析,生成所述待测代码的抽象语法树;B.根据所述抽象语法树确定所述待测代码的特征信息,并根据所述特征信息确定一组或多组测试数据;C.利用预置的测试模板中的标签对所述一组或多组测试数据进行解析,以生成一个或多个单元测试用例。根据本专利技术之一优选实施例,所述特征信息包括:所述待测代码中的类名、方法名、方法返回值、方法中的判定条件及方法抛出异常类型。根据本专利技术之一优选实施例,根据所述特征信息确定一组或多组测试数据的步骤具体包括:根据方法中的判断条件确定该方法的一组或多组正常参数取值,并将该方法的各组正常参数取值分别与该方法所属类名、该方法名及该方法返回值组合,得到正常用例的测试数据;根据方法抛出异常类型确定该方法的一组或多组异常参数取值,并将该方法的各组异常参数取值分别与该方法所属类名、该方法名及该方法抛出异常类型组合,得到异常用例的测试数据。根据本专利技术之一优选实施例,所述标签包括:逻辑标签及普通标签,其中所述逻辑标签用于判断各组测试数据属于正常用例还是异常用例,并对各组正常用例的测试数据和各组异常用例的测试数据进行迭代,以生成与测试数据组数一致数量的单元测试用例,所述普通标签用于在每次迭代中, 对各组测试数据中的分量进行提取。根据本专利技术之一优选实施例,所述逻辑标签进一步还用于判断各组正常用例的测试数据中的方法返回值分量是否为空,如果是,所述步骤C在生成该组测试数据对应的单元测试用例中给出提示信息。本专利技术还提供了一种自动生成单元测试用例的装置,包括:分析单元,用于对待测代码进行语法分析,生成所述待测代码的抽象语法树;数据准备单元,用于根据所述抽象语法树确定所述待测代码的特征信息,并根据所述特征信息确定一组或多组测试数据;用例生成单元,用于利用预置的测试模板中的标签对所述一组或多组测试数据进行解析,以生成一个或多个测试用例。根据本专利技术之一优选实施例,所述特征信息包括:所述待测代码中的类名、方法名、方法返回值、方法中的判定条件及方法抛出异常类型。根据本专利技术之一优选实施例,所述数据准备单元根据所述特征信息确定一组或多组测试数据的方式具体包括:根据方法中的判断条件确定该方法的一组或多组正常参数取值,并将该方法的各组正常参数取值分别与该方法所属类名、该方法名及该方法返回值组合,得到正常用例的测试数据;根据方法抛出异常类型确定该方法的一组或多组异常参数取值,并将该方法的各组异常参数取值分别与该方法所属类名、该方法名及该方法抛出异常类型组合,得到异常用例的测试数据。根据本专利技术之一优选实施例,所述标签包括:逻辑标签及普通标签,其中所述逻辑标签用于判断各组测试数据属于正常用例还是异常用例,并对各组正常用例的测试数据和各组异常用例的测试数据进行迭代,以生成与测试数据组数一致数量的单元测试用例,所述普通标签用于在每次迭代中,对各组测试数据中的分量进行提取。根据本专利技术之一优选实施例,所述逻辑标签进一步还用于判断各组正常用例的测试数据中的方法返回值分量是否为空,如果是,所述用例生成单元在生成该组测试数据对应的单元测试用例中给出提示信息。由以上技术方案可以看出,通过对待测代码进行分析,得到待测代码的特征信息,根据特征信息提取出测试数 据,并采用模板技术,利用预置的测试模板对测试数据进行解析,可以自动生成单元测试用例,与现有技术的人工开发单元测试用例的方式相比,本专利技术极大地提高了单元测试用例的开发速度,从而提高了测试效率。【【专利附图】【附图说明】】图1为本专利技术中自动生成单元测试用例的方法的实施例的流程示意图;图2为本专利技术中自动生成单元测试用例的装置的实施例的结构示意框图。【【具体实施方式】】为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本专利技术进行详细描述。请参考图1,图1为本专利技术中自动生成单元测试用例的方法的实施例的流程示意图。如图1所示,该方法包括:步骤SlOl:对待测代码进行语法分析,生成待测代码的抽象语法树。步骤S102:根据抽象语法树确定待测代码的特征信息,并根据特征信息确定一组或多组测试数据。本专利技术中的多组,指的是两组或两组以上。步骤S103:利用预置的测试模板中的标签对上述一组或多组测试数据进行解析,以生成一个或多个单元测试用例。本专利技术中的多个,指的是两个或两个以上。下面对上述步骤进行详细说明。步骤SlOl中,对待测代码进行语法分析,可以通过现有的语法分析工具进行,以Java语言为例,如Javacc这样的语法分析工具,就可以用来对待测代码进行语法分析,并输出待测代码的抽象语法树。抽象语法树包含所有从待测代码得到的相关信息,能够完整体现待测代码的语法结构。步骤S102中,确定待测代码的特征信息,其中特征信息包括:待测代码中的类名、方法名、方法返回类型、方法中的判定条件及方法抛出异常类型。以下面的代码片段为例:【权利要求】1.一种自动生成单元测试用例的方法,包括: A.对待测代码进行语法分析,生成所述待测代码的抽象语法树; B.根据所述抽象语法树确定所述待测代码的特征信息,并根据所述特征信息确定一组或多组测试数据; C.利用预置的测试模板中的标签对所述一组或多组测试数据进行解析,以生成一个或多个单元测试用例。2.根据权利要求1所述的方法,其特征在于,所述特征信息包括:所述待测代码中的类名、方法名、方法返回值、方法中的判定条件及方法抛出异常类型。3.根据权利要求2所述的方法,其特征在于,根据所述特征信息确定一组或多组测试数据的步骤具体包括: 根据方法中的判断条件确定该方法的一组或多组正常参数取值,并将该方法的各组正常参数取值分别与该方法所属类名、该方法名及该方法返回值组合,得本文档来自技高网...
一种自动生成单元测试用例的方法及装置

【技术保护点】
一种自动生成单元测试用例的方法,包括:A.对待测代码进行语法分析,生成所述待测代码的抽象语法树;B.根据所述抽象语法树确定所述待测代码的特征信息,并根据所述特征信息确定一组或多组测试数据;C.利用预置的测试模板中的标签对所述一组或多组测试数据进行解析,以生成一个或多个单元测试用例。

【技术特征摘要】

【专利技术属性】
技术研发人员:张俊俊
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1