一种测试用例生成方法、设备及存储介质技术

技术编号:28722138 阅读:56 留言:0更新日期:2021-06-06 04:18
本申请实施例提供一种测试用例生成方法、设备及存储介质。所述方法包括:收集待测程序在执行至少一个样本任务时的代码运行路径和任务执行数据;根据所述至少一个样本任务对应的代码运行路径,将所述至少一个样本任务划分为至少一个任务组,不同任务组对应不同类代码运行路径;基于所述至少一个任务组中样本任务对应的任务执行数据,生成可覆盖所述至少一类代码运行路径的测试用例。本申请实施例中,可有效提高测试用例的生成效率、代码覆盖率和/或应用场景覆盖率。或应用场景覆盖率。或应用场景覆盖率。

【技术实现步骤摘要】
一种测试用例生成方法、设备及存储介质


[0001]本申请涉及软件工程
,尤其涉及一种测试用例生成方法、设备及存储介质。

技术介绍

[0002]软件工程中的测试用例是一组条件或变量,测试者根据它来确定应用软件或软件系统是否正确工作。
[0003]目前,测试用例通常由编程人员进行编写,这需要耗费大量的时间和精力,效率比较低;而且,受编程人员的经验的影响,人工编写的测试用例的代码覆盖率可能无法满足测试要求。

技术实现思路

[0004]本申请的多个方面提供一种测试用例生成方法、设备及存储介质,用以提高测试用例的生成效率、代码覆盖率和/或应用场景覆盖率。
[0005]本申请实施例提供一种测试用例的生成方法,包括:
[0006]收集待测程序在执行至少一个样本任务时的代码运行路径和任务执行数据;
[0007]根据所述至少一个样本任务对应的代码运行路径,将所述至少一个样本任务划分为至少一个任务组,不同任务组对应不同类代码运行路径;
[0008]基于所述至少一个任务组中样本任务对应的任务执行数据,生成本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种测试用例的生成方法,其特征在于,包括:收集待测程序在执行至少一个样本任务时的代码运行路径和任务执行数据;根据所述至少一个样本任务对应的代码运行路径,将所述至少一个样本任务划分为至少一个任务组,不同任务组对应不同类代码运行路径;基于所述至少一个任务组中样本任务对应的任务执行数据,生成可覆盖所述至少一类代码运行路径的测试用例。2.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个任务组中样本任务对应的任务执行数据,生成可覆盖所述至少一类代码运行路径的测试用例,包括:分别从所述至少一个任务组中选择至少一个目标样本任务;根据从所述至少一个任务组分别选择出的目标样本任务各自对应的任务执行数据生成测试用例。3.根据权利要求1所述的方法,其特征在于,所述待测程序中预置有若干探针;所述收集待测程序在执行至少一个样本任务时的代码运行路径,包括:针对第一样本任务,收集所述待测程序在执行所述第一样本任务的过程中所运行的目标探针;根据所述目标探针,确定所述至少一个样本任务各自对应的代码运行路径;所述第一样本任务为所述至少一个样本任务中的任意一个。4.根据权利要求3所述的方法,其特征在于,在使用所述若干探针之前,还包括:确定所述待测程序中包含的特定节点,所述特定节点为存在逻辑判断的代码运行位置;在所述待测程序的特定节点上插入探针。5.根据权利要求4所述的方法,其特征在于,所述确定所述待测程序中包含的特定节点,包括:将所述待测程序的源代码编译为字节码;运行所述字节码,以构建所述待测程序对应的逻辑树,所述逻辑树中包含若干树节点;从所述逻辑树中查找存在逻辑判断的树节点,作为所述特定节点。6.根据权利要求5所述的方法,其特征在于,若所述待测程序为JAVA程序,所述运行所述字节码,以构建所述待测程序对应的逻辑树,包括:基于JAVA虚拟机运行所述字节码;从JAVA虚拟机中获取已经加载的类CLASS;利用汇编ASM框架,对所述已经加载的类CLASS对应的CLASS字节流进行分析,以构建ASM树,作为所述待测程序对应的逻辑树。7.根据权利要求4所述的方法,其特征在于,所述特定节点包括分支节点、跳转节点或函数调用节点中的一种或多种。8.根据权利要求4所述的方法,其特征在于,所述根据所述目标探针,确定所述至少一个样本任务各自对应的代码运行路径,包括:针对所述第一样本任务,获取所述第一样本任务的任务线程对应的探针运行数据,所述探针运行数据中包含所运行到的探针及探针顺序;确定所述运行到的探针所在的特定节点,并根据所述探针顺序确定所述特定节点的顺
序;根据所述特定节点及其顺序,确定所述第一样本任务对应的代码运行路径。9.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个样本任务对应的代码运行路径,将所述至少一个样本任务划分为至少一个任务组,包括:根据所述至少一个样本任务对应的代码运行路径,对所述若干样本任务进行聚类,以确定至少一个任务组。10.根据权利要求9所述的方法,其特征在于,所述根据所述至少一个样本任务对应的代码运行路径,对所述若干样本任务进行聚类,以确定至少一个任务组,包括:按照相同的特征描述格式,分别构建所述若干样本任务各自对应的代码运行路径的特征描述信息;对所述特征描述信息进行聚类,以获得至少一类特征描述信息;将对应同一类特征描述信息的样本任务,组成一个任务组。11.根据权利要求10所述的方法,其特征在于,所述特征描述信息采用JSON字符串。12.根据权利要求11所述的方法,其特征在于,所述JSON字符串包括类名、函数名或代码执行行号中的一项或多项内容。13.根据权利要求10所述的方法,其特征在于,所述对所述特征描述信息进行聚类,以获得至少一类特征描述信息,包括:分别计算所述若干样本任务各自对应的特征描述信息的摘要值,将摘要值一致的特征描述信息归为同一类特征描述信息。14.根据权利要求1所述的方法,其特征在于,所述任务执行数据包括输入参数和/或任务执行结果。15.一种程序测试方法,其特征在于,包括:确定待测程序的同类程序产生的任务,或是收集待测程序产生的历史任务,作为样本任务;获取至少一个样本任务各自对应的代码运行路径和任务执行数据;根据所述至少一个样本任务对应的代码运行路径,将所述至少一个样本任务划分为至少一个任务组,不同任务组对应不同类代码运行路径;基于所述至少一个任务组中样本任务对应的任务执行数据,生成可覆盖所述至少一类代码运行路径的测试用例;根据生成的所述测试用例测试所述待测程序。16.一种确定代码运行路径的方法,其特征在于,包括:确定待测程序的同类程序产生的任务,或是收集所述待测程序产生的历史任务,作为样本任务;收集待测程序在执行各样本任务的过程中分别运行的目标探针,所述程序中预置有若干探针;根据各样本任务各自对应的目标探针,确定所述待测程序中包含的代码运行路径。17.根据权利要求16所述的方法,其特征在于,在使用所述若干探针之前,还包括:确定所述待测程序中包含的特定节点,所述特定节点为存在逻辑判断的代码运行位置;
在所述待测程序的特定节点上插入探针。18.根据权利要求17所述的方法,其特征在于,所述确定所述待测程序中包含的特定节点,包括:将所述待测程序的源代码编译为字节码;运行所述字节码,以构建所述待测程序对应的逻辑树,所述逻辑树中包含若干树节点;从所述逻辑树中查找存在逻辑判断的树节点,作为所述特定节点。19.根据权利要求18所述的方法,其特征在于,若所述待测程序为JAVA待测程序,所述运行所述字节码,以构建所述待测程序对应的逻辑树,包括:基于JAVA虚拟机运行所述字节码;从JAVA虚拟机中获取已经加载的类CLASS;利用汇编ASM框架,对所述已经加载的类CLASS对应的CLASS字节流进行分析,以构建ASM树,作为所述待测程序对应的逻辑树。20.根据权利要求17所述的方法,其特征在于,所述特定节点包括分支节点、跳转节点或函数调用节点中的一种或多种。21.根据权利要求17所述的方法,其特征在于,所述根据各样本任务各自对应的目标探针,确定所述待测程序中包含的代码运行路径,包括:根据各样本任务各自对应的目标探针,分别确定各样本任务各自对应的代码运行路径;根据各样本任务各自对应的代码运行路径,确定所述待测程序中包含的代码运行路径。22.根据权利要求21所述的方法,其特征在于,所述根据各样本任务各自对应的代码运行路径,确定所述待测程序中包含的代码运行路径,包括...

【专利技术属性】
技术研发人员:吴金杰李庆阳张天乐
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1