logo好方法网

测试用例生成方法、装置、电子设备及可读存储介质


技术摘要:
本申请提供了一种测试用例生成方法、装置、电子设备及可读存储介质,所述方法包括:获取变量集合中的第n个变量;根据第n个变量的取值获得预设接口函数的输入值,第n个变量的取值与预设接口函数具有依赖关系;依赖关系为第n个变量的取值与预设接口函数之间的函数调用流  全部
背景技术:
目前,软件产品测试成本占整个开发成本30%~40%,而测试用例设计占整个测 试周期的30%左右,在实际测试过程中,这部分工作都是由测试人员手工完成,人力成本较 高。 为了降低人力成本,现有技术中通常使用测试用例生成工具,来辅助测试工作。但 是,现有的测试用例生成工具在构建测试用例过程中,其运算量依然很大,降低了测试用例 生成的效率。
技术实现要素:
有鉴于此,本申请实施例的目的在于提供一种测试用例生成方法、装置、电子设备 及可读存储介质,能够在分析变量取值过程中,通过获取函数的输入值与输出值之间的关 系,确定出变量依赖的函数的输入值,最终得到对应的测试用例,提高了测试用例生成的效 率。 第一方面,本申请实施例提供了一种测试用例生成方法,所述方法包括:获取变量 集合中的第n个变量,其中,n为大于0的整数;根据所述第n个变量的取值获得预设接口函数 的输入值,所述第n个变量的取值与所述预设接口函数具有依赖关系;所述依赖关系为所述 第n个变量的取值与所述预设接口函数之间的函数调用流程中输入值与输出值的对应关 系;将所述预设接口函数的输入值作为第n个变量的取值对应的第一测试用例;基于所述n 的取值,重复根据第n个变量的取值获得所述预设接口函数的输入值的步骤,得到第一测试 用例集,其中,所述第一测试用例集包括所述变量集合中每一个变量对应的第一测试用例。 在本发明较佳的实施例中,所述函数调用流程包括中间函数,所述中间函数由所 述预设接口函数调用,所述依赖关系包括第一中间依赖关系及第二中间依赖关系,所述根 据所述第n个变量获得预设接口函数的输入值的步骤,包括:根据所述第n个变量的取值获 得所述中间函数的输入值,所述第n个变量与所述中间函数具有第一中间依赖关系;所述第 一中间依赖关系包括所述中间函数的输入值与所述中间函数的输出值的对应关系;依据所 述中间函数的输入值获得所述预设接口函数的输入值,所述中间函数的输入值与所述预设 接口函数具有第二中间依赖关系,所述第二中间依赖关系包括所述预设接口函数的输入值 与所述预设接口函数的输出值的对应关系。 在本发明较佳的实施例中,一种可以实施的获取变量集合方式为:解析源代码中 函数调用流程得到所述变量集合,具体步骤包括:解析源代码中函数调用流程得到控制图, 其中,所述控制图中的节点包括判定条件;遍历所述控制图中每一个节点,获取所述每一个 节点的判定条件中的变量;将多个所述变量组成所述变量集合,其中,解析源代码中函数调 5 CN 111611152 A 说 明 书 2/15 页 用流程得到控制图的步骤的具体子步骤包括:对所述源代码进行语法分析,得到抽象语法 树;依据所述抽象语法树中函数之间的调用关系生成函数调用流程;依次提取函数调用流 中每个函数中的判定条件及对应的分支语句;以所述判定条件为节点、以对应的分支语句 为边生成所述控制图。 在本发明较佳的实施例中,生成第一测试用例后,为了达到提高测试用例执行的 效率,需要对每一个变量对应的第一测试用例进行执行,以覆盖对应的源代码,执行第一测 试用例的具体步骤为:执行与所述第n个变量对应的第一测试用例,以覆盖对应的源代码。 在本发明较佳的实施例中,由于源代码中每个函数的使用频率不同,为了提高测 试用例生成效率,可以只对使用频率高的函数依据该函数的输入值和输出值之间的关系确 定该函数的输入值,在这种场景下,第一测试用例集只能覆盖部分场景,为了使测试用例能 覆盖到更全面的场景,本发明还提供了一种可以实施的方式以生成第二测试用例集,和第 一测试用例集互为补充,作为一种可以实施的生成第二测试用例集的方式,其步骤包括:依 据所述预设接口函数的入参的取值范围,对所述预设接口函数的入参的取值进行正交组 合,得到第二测试用例集,其中,所述第二测试用例集中每一个测试用例对应每一个正交组 合的入参的取值。 在本发明较佳的实施例中,可以将第一测试用例集和第二测试用例集综合起来得 到场景覆盖较全面的测试用例合集,其步骤为:依据所述第一测试用例集及所述第二测试 用例集生成测试用例合集。 在本发明较佳的实施例中,由于第一测试用例集和第二测试用例集中的用例可能 会重复覆盖相同的分支,因此为了避免相同的测试用例重复执行,影响测试用例执行的效 率,本发明还提供一种对第一测试用例集和第二测试用例集中重复的测试用例进行去重得 到测试用例合集的方法,该方法具体包括步骤:将所述第一测试用例集及所述第二测试用 例集合并成初始合集;对所述初始合集中覆盖相同代码路径的测试用例进行去重,得到测 试用例合集,作为一种对第一测试用例集和第二测试用例集中重复的测试用例进行去重的 实施方式,其具体子步骤可以是:依次从所述初始合集取出并执行当前测试用例,标记出所 述当前测试用例覆盖的当前代码路径;当所述当前代码路径为初始合集中已经执行的测试 用例的覆盖的代码路径的子集时,将所述当前测试用例从所述初始合集中移除。 第二方面,本申请实施例提供了一种测试用例生成装置,所述装置包括:初始模 块,用于获取变量集合中的第n个变量,其中,n为大于0的整数;分析模块,用于根据所述第n 个变量的取值获得预设接口函数的输入值,所述第n个变量的取值与所述预设接口函数具 有依赖关系;所述依赖关系为所述第n个变量的取值与所述预设接口函数之间的函数调用 流程中输入值与输出值的对应关系;第一用例生成模块,用于将所述预设接口函数的输入 值作为第n个变量的取值对应的第一测试用例;第一用例集生成模块,用于基于所述n的取 值,重复根据第n个变量的取值获得所述预设接口函数的输入值的步骤,得到第一测试用例 集,其中,所述第一测试用例集包括所述变量集合中每一个变量对应的第一测试用例。 在本发明较佳的实施例中,函数调用流程包括中间函数,所述中间函数由所述预 设接口函数调用,所述依赖关系包括第一中间依赖关系及第二中间依赖关系,所述分析模 块具体用于:根据所述第n个变量的取值获得所述中间函数的输入值,所述第n个变量与所 述中间函数具有第一中间依赖关系;所述第一中间依赖关系包括所述中间函数的输入值与 6 CN 111611152 A 说 明 书 3/15 页 所述中间函数的输出值的对应关系;依据所述中间函数的输入值获得所述预设接口函数的 输入值,所述中间函数的输入值与所述预设接口函数具有第二中间依赖关系,所述第二中 间依赖关系包括所述预设接口函数的输入值与所述预设接口函数的输出值的对应关系。 在本发明较佳的实施例中,所述测试用例生成装置还包括变量集合生成模块,变 量集合生成模块用于解析源代码中函数调用流程得到所述变量集合。 在本发明较佳的实施例中,变量集合生成模块包括:解析单元,用于解析源代码中 函数调用流程得到控制图,其中,所述控制图中的节点包括判定条件;遍历单元,用于遍历 所述控制图中每一个节点,获取所述每一个节点的判定条件中的变量;组成单元,用于将多 个所述变量组成所述变量集合。 在本发明较佳的实施例中,解析单元具体用于:对所述源代码进行语法分析,得到 抽象语法树;依据所述抽象语法树中函数之间的调用关系生成函数调用流程;依次提取函 数调用流中每个函数中的判定条件及对应的分支语句;以所述判定条件为节点、以对应的 分支语句为边生成所述控制图。 在本发明较佳的实施例中,所述测试用例生成装置还包括:执行模块,用于执行与 所述第n个变量对应的第一测试用例,以覆盖对应的源代码。 在本发明较佳的实施例中,所述测试用例生成装置还包括:第二用例集生成模块, 用于依据所述预设接口函数的入参的取值范围,对所述预设接口函数的入参的取值进行正 交组合,得到第二测试用例集,其中,所述第二测试用例集中每一个测试用例对应每一个正 交组合的入参的取值。 在本发明较佳的实施例中,所述测试用例生成装置还包括:测试用例合集生成模 块,用于依据所述第一测试用例集及所述第二测试用例集生成测试用例合集。 在本发明较佳的实施例中,所述测试用例合集生成模块包括:合并单元,用于将所 述第一测试用例集及所述第二测试用例集合并成初始合集;去重单元,用于对所述初始合 集中覆盖相同代码路径的测试用例进行去重,得到测试用例合集。 在本发明较佳的实施例中,所述去重单元具体用于:依次从所述初始合集取出并 执行当前测试用例,标记出所述当前测试用例覆盖的当前代码路径;当所述当前代码路径 为初始合集中已经执行的测试用例的覆盖的代码路径的子集时,将所述当前测试用例从所 述初始合集中移除。 第三方面,本申请实施例还提供了一种电子设备,包括:处理器和存储器,所述存 储器存储有所述处理器可执行的机器可读指令,所述处理器与所述存储器之间通过总线通 信,所述机器可读指令被所述处理器执行时执行上述第一方面的实施例中的步骤。 第四方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储 介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面的实施例中的 步骤。 采用上述方案,在分析变量取值过程中,通过获取函数的输入值与输出值之间的 关系,确定变量依赖的函数的输入值,最终得到对应预设接口函数的输入值,将对应预设接 口函数的输入值作为对应的测试用例,由于确定变量依赖的函数的输入值可以通过函数的 输入值与输出值之间的关系直接推导得到,无需进行复杂的算法运算,因而大大地提高了 测试用例生成的效率。 7 CN 111611152 A 说 明 书 4/15 页 附图说明 为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附 图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对 范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这 些附图获得其他相关的附图。 图1示出了本申请实施例所提供的一种测试用例生成方法的流程图; 图2为图1示出的步骤S201的子步骤流程图; 图3示出了本申请实施例所提供的控制图的示例图; 图4为图1示出的步骤S203的子步骤流程图; 图5示出了本申请实施例所提供的另一种测试用例生成方法的流程图; 图6为图5示出的步骤S402的子步骤流程图; 图7示出了本申请实施例所提供的一种测试用例生成装置的结构示意图; 图8为图7示出的变量集合生成模块的结构示意图; 图9为图7示出的测试用例合集生成模块的结构示意图; 图10示出了本申请实施例所提供的一种电子设备的结构示意图。
分享到:
收藏