首页> 中国专利> 测试用例生成方法及测试用例生成装置

测试用例生成方法及测试用例生成装置

摘要

本发明提供一种测试用例生成方法及测试用例生成装置。根据软件规范生成囊括了该软件规范上能够输出的值的测试用例。接收软件规范,根据该软件规范生成包含针对该软件的测试输入值、以及将所述测试输入值作为输入来执行所述软件时期望作为输出值而获得的期望输出值的测试用例,确认所述软件规范上能够输出的值是否包含在所述期望输出值中,当所述确认的结果是判断为软件规范上能够输出的值不包含在所述期望输出值中时,生成由所述软件规范上能够输出的值和与其对应的测试输入值构成的测试用例,并添加到所述生成的测试用例中。

著录项

  • 公开/公告号CN104063312A

    专利类型发明专利

  • 公开/公告日2014-09-24

    原文格式PDF

  • 申请/专利权人 株式会社日立制作所;

    申请/专利号CN201410050393.7

  • 申请日2014-02-13

  • 分类号G06F11/36(20060101);G06F9/44(20060101);

  • 代理机构11243 北京银龙知识产权代理有限公司;

  • 代理人许静;郭凤麟

  • 地址 日本东京都

  • 入库时间 2023-12-17 01:29:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-15

    授权

    授权

  • 2014-10-22

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20140213

    实质审查的生效

  • 2014-09-24

    公开

    公开

说明书

技术领域

本发明涉及一种辅助软件开发的技术,特别地,涉及根据规范制作测试用 例的技术。

背景技术

有时根据软件执行前的条件和该执行后的结果的对应关系定义软件的规 范。由于是将这样的规范定义为从外部看到的软件的功能,因此有时也将规范 称为外部规范或者功能规范。作为外部规范的表现方法,已知能够使用被称为 决定表(decision table)的表格形式来表现其条件和结果的对应关系的技术,频 繁使用在软件开发工程中。

另外,作为对开发的软件是否按照外部规范规定的那样运行进行确认的方 法,现有一种公知的软件测试方法。软件测试有时以测试用例为单位来实施。 这里所说的测试用例,是指由作为对该软件的输入值(输入数据)的测试输入值 (测试输入数据)、以及将该测试输入值作为输入并执行了软件时期望作为输出 值获得的期望输出值(期望输出数据)组成的数据。实际中,赋予测试输入值并 执行了软件时,获得了符合期望输出值的输出值时,可以说该测试用例通过了 测试。

从更严密地确认与规范的对应的观点出发,最好对尽可能多的测试用例实 施测试。例如,对于规范中允许的、可取的所有输入执行测试用例而且合格时, 即已经确认了该软件对于所有的值都按照规范中的规定进行运行。

但是,例如当输入被表现为多个因子的组合时,作为输入而可取的值的范 围的大小因为成为各因子可取的值(将其称为标准值)的数量的积,因此变得非 常大。这种情况下,对于所有测试用例执行测试,由于在现实的时间内无法结 束,因此是困难的。

这样的情况下,作为一种提取实际上可实施的个数的测试用例的方法,非 专利文献1中有一种公知的、称为配对法则(Pairwise法(也称为all-pair法)) 的方法。这是当输入被表现为多个因子的组合时,根据着眼于错误大多是由于 n个(n为相对较少的数量)因子的组合造成的、称为n因子囊括的想法,大幅 削减测试用例的方法。

【非专利文献1】A.Blass and Y.Gurevich,“Pairwise Testing”,Bulletin of the European Association for Theoretical Computer Science Number78,October2002, 100-132.根据上述非专利文献1中公开的现有技术,即使在作为测试对象的软 件中规范可取的所有输入的范围非常大的情况下,也能提取出实际上可实施的 个数的测试用例。但是,该提取是基于输入的因子,对于输出并没有特别考虑。 也就是说,对于构成测试用例的测试输入值,对其分布有一定的考虑,而对于 对应的期望输出值则并没有考虑。

因此,关于基于上述现有技术提取出的测试用例中包含的期望输出值的分 布,无法否定作为测试对象的软件在规范上能够输出的值的范围中波动的可能 性。例如,提取出的测试用例中包含的期望输出值全部为相同的值时,即使作 为测试对象的软件包含与输出和该期望输出值不同的值的处理相关的错误,也 无法检测到该错误。这时,根据软件规范生成测试用例时,就生成了只覆盖了 规范上能够输出的结果值范围中的一小部分的测试用例。

发明内容

本发明的课题是提供一种根据软件规范来生成将该软件规范上能够输出 的值囊括的测试用例的测试用例生成方法、实施该方法的测试用例生成装置及 程序。

为了解决上述课题,本发明的代表性的一个例子如下。即,本发明是一种 根据软件规范来生成测试用例的测试用例生成装置中的测试用例生成方法。所 述测试用例生成装置实施以下处理:接收所述软件规范,并存储在存储部中的 处理;根据所述软件规范生成包含对该软件的测试输入值、以及将所述测试输 入值作为输入来执行所述软件时期望作为输出值获得的期望输出值的测试用 例,并存储在所述存储部中的处理;确认软件规范上能够输出的值是否包含在 所述期望输出值中的处理;当所述确认的结果是判断为所述软件规范上能够输 出的值不包含在所述期望输出值中时,生成由该软件规范上能够输出的值和与 其对应的测试输入值构成的测试用例,并添加到存储在所述存储部中的所述测 试用例中的处理。

根据本发明,能够根据软件规范,生成将该软件规范上能够输出的值囊括 的测试用例。

附图说明

图1是表示第1实施方式的测试用例生成装置101的硬件及软件结构的一 个例子的图。

图2是表示第1实施方式的软件规范131的一个例子的图。

图3是表示第1实施方式的根据软件规范生成测试用例的处理的概要的流 程图。

图4是表示第1实施方式的利用配对法选择的2因子囊括的值的组的一个 例子的图。

图5是表示第1实施方式的期望输出确认处理(图3_步骤304)及测试用例 添加处理(图3_步骤305)的细节的流程图。

图6是表示第1实施方式的按照图3及图5所示的处理生成的测试用例的 一个例子的图。

图7是表示第2实施方式的期望输出确认处理及测试用例添加处理的细节 的流程图。

符号说明

101……测试用例生成装置、102……中央控制装置(控制部)、103……主 存储装置(存储部)、104……外部存储装置(存储部)、105……存储介质、106…… 读取装置、107……输入装置、108……显示装置、109……通信装置。

具体实施方式

以下,参照附图等对本发明的实施方式进行详细说明。

(第1实施方式)

图1是表示第1实施方式的测试用例生成装置101的硬件及软件结构的一 个例子的图。

测试用例生成装置101能够用普通的电子计算机构建,具备:CPU等中 央控制装置(控制部)102;RAM等作为中央控制装置102的工作区发挥功能的 主存储装置(存储部)103;硬盘装置等外部存储装置(存储部)104;CD-ROM、 FD等具有可移动性的从存储介质105读取数据的读取装置106;键盘、鼠标 等输入装置107;显示器等显示装置108;用于经由网络与其他装置进行通信 的通信装置109;以及负责在所述各装置间的数据收发的外部接口110。此外, 测试用例生成装置101的操作主要经由网络进行时,也可以不连接显示装置 108和输入装置107。

在测试用例生成装置101的外部存储装置104中,存储有规范接收程序 121、测试用例生成程序122、期望输出确认程序123、测试用例添加程序124 以及测试用例输出程序125。这些程序被加载到主存储装置103中,通过中央 控制装置102,具体化为规范接收处理部141、测试用例生成处理部142、期 望输出确认处理部143、测试用例添加处理部144以及测试用例输出处理部145 的功能。实现各处理部的程序可以预先存储在外部存储装置104中,也可以存 储在存储介质105中、经由读取装置106根据需要来读取。也可以从作为电子 计算机能够使用的通信介质的网络、或者与使用在网络上传输的载波的通信装 置109连接的其他装置,根据需要下载并存储在外部存储装置104中。

另外,在外部存储装置104中,存储有软件规范131、测试用例132。测 试用例包含测试输入值133和期望输出值134。

图2是表示第2实施方式的软件规范131的一个例子的图。这里,作为软 件规范131,以日本特开2012-190203号公报中公开的决定表(decision table)形 式记载的规范为例进行说明。

软件规范131(决定表)将软件执行前的条件及其执行后的结果的对应关系 以表格形式定义,包含条件定义部201和结果定义部202。条件定义部201包 含一个或多个条件因子211,各条件因子进一步包含两个以上的条件值212。 同样地,结果定义部202包含一个或多个结果因子221,各结果因子进一步包 含两个以上的结果值222。

表格的各列中,对各条件/结果因子在每个地方标记符号。各列表示输入 输出关系,即根据标记符号的位置,各条件因子取什么样的条件值(输入值)时, 各结果因子成为什么样的结果值(输出值)。例如图2最左边的列,表示如果“有 无参加保险”为“已参加”、“保险缴纳额”为“0日元”、“收入”为“0日元 以上但小于500万日元”,则“补助金”为“有支付”、“纳税义务”为“有义 务”。

图3是表示第1实施方式的根据软件规范生成测试用例的处理的概要的流 程图。

步骤301:开始。

步骤302:规范接收处理部141经由输入装置107、或者从存储介质105 经由读取装置106、或者经由通信装置109,接收作为软件规范131的决定表, 存储在外部存储装置104中。

步骤303:测试用例生成处理部142按照配对法,从存储在外部存储装置 104中的软件规范(决定表)131中提取对于条件因子满足2因子囊括的列的集 合,并生成测试用例(各列的条件定义部201相当于测试输入值,结果定义部 202相当于期望输出值),将生成的测试用例存储在外部存储装置104中。通过 步骤303的处理,根据软件规范131,生成包含满足软件规范131的测试输入 值和期望输出值的至少一个测试用例。

这里步骤303中的配对法是当多个因子分别在若干值中取其中一个时,选 择对全部2因子的组合囊括的(将其称为2因子囊括)值的组的方法。具体的方 法例如在非专利文献1中公开。

例如图2所示的软件规范(决定表)131的情况,条件因子中存在“有无参 加保险”、“保险缴纳额”、“收入”3个因子。作为其中的2因子的组,例如如 果取“有无参加保险”和“保险缴纳额”,则这2个因子可取的值的组为:“已 参加、0日元”、“已参加、0日元以上但小于2万日元”、“已参加、2万日元 以上”、“未参加、0日元”、“未参加、0日元以上但小于2万日元”、“未参加、 2万日元以上”这6个。同样地,“保险缴纳额”和“收入”的2个因子可取 的值的组为6个,“有无参加保险”和“收入”的2个因子可取的值的组为4 个。在配对法中,选择包含全部这些的全因子的值的组。

图4表示利用配对法选择的2因子囊括值的组的一个例子。如果选择图4 中虚线包围的6个列(401~406),则能够确认实际上将2因子囊括。这时,能 够全部检测到由于2个以下条件因子造成的软件的错误。

以上说明的步骤S303中的公知的配对法中,需要注意在生成测试用例时 只参照了条件因子,对于结果因子则并没有参照。也就是说对于测试用例中包 含的测试输入值,选择了2因子囊括等保证某种囊括性的,但对于期望输出值 则无法保证囊括性。因此,如下面的步骤304所示,期望输出确认程序123 确认是否囊括了期待输出值,如果有缺少的测试用例,则如步骤305所示,通 过由测试用例添加程序124进行添加测试用例的处理,实现关于条件因子的2 因子囊括,并且生成囊括全部软件规范上能够输出的值的测试用例。

步骤304:期望输出确认处理部143确认步骤303中生成的测试用例中包 含的期望输出值,确认是否囊括了软件规范(决定表)131的结果定义部202中 出现的结果值的全部组合。如果没有囊括则进入步骤305,如果已囊括则进入 步骤306。

步骤305:测试用例添加处理部144将软件规范(决定表)的结果定义部202 中出现的结果值的全部组合中包含在步骤303中生成的测试用例中不包含的 组合的列(测试用例)添加到存储在外部存储装置104的测试用例中。

步骤306:测试用例输出处理部145将得到的测试用例输出给显示装置108、 或未图示的打印机等输出装置。

步骤307:结束。

图5是表示期望输出确认处理(图3_步骤304)及测试用例添加处理(图3_ 步骤305)的细节的流程图。

步骤501:开始。

步骤502:期望输出确认处理部143从软件规范(决定表)131的结果值222 的组(对结果因子221的各因子逐个选择结果值222)中,选择一个还没有确认 的作为结果值候选。如果对全部结果值的组(结果值候选)完成了确认,则进入 步骤505。也就是说,结果输出确认程序123将结果值222的所有可能组合(结 果值候选)全部按顺序确认。图2所示的软件规范131的例子中,按顺序确认 1.“有支付”“有义务”、2.“有支付”“无义务”、3.“无支付”“有义务”、 4.“无支付”“无义务”这4个结果值候选。

步骤503:期待输出确认处理部143确认在步骤303生成的测试用例中是 否有期望输出值与步骤502中选择的结果值候选一致的,如果有则返回步骤 502。

步骤504:测试用例添加处理部144确认在步骤302中接收的软件规范(决 定表)131的各列中,是否有结果定义部202与步骤502中选择的结果值候选一 致的,也就是步骤502中选择的结果值候选能否作为由软件规范131定义的处 理结果而生成。在测试用例添加处理部144确认了在步骤302中接收的软件规 范(决定表)131的各列中,有结果定义部202与步骤502中选择的结果值候选 一致的,也就是步骤502中选择的结果值候选能够作为由软件规范131定义的 处理结果而生成的情况下,将该列的信息作为新的测试用例,添加到步骤303 生成的测试用例中,返回步骤502。如果没有,则直接返回步骤502。

这样,在步骤502-步骤504所示的处理中,依次变更结果值候选的同时, 判定该结果值候选是(1)被包含在已经输出的测试用例中、(2)未被包含在 测试用例中原本软件规范上无法输出的值、(3)未被包含在测试用例中,但是 为软件规范上能够输出的值的哪一个,在(3)的情况下,作为应该添加的测 试用例而添加,由此,保证得到的测试用例囊括期望输出值。

图6是表示按照图3及图5所示的处理生成的测试用例的一个例子的图。 虚线包围的6个列(601~606)是由图3的步骤303所示的处理生成的测试用例, 实线包围的1个列(607)是按照图3的步骤304-步骤305所示的处理,更详细 地说是图5的步骤502-步骤504所示的处理而添加的测试用例。利用这些共 计7个测试用例,实现关于条件因子的2因子囊括,并且测试用例囊括全部规 范上能够输出的值。

步骤505:和步骤306相同,将得到的测试用例输出给显示装置108或未 图示的打印机等输出装置。

步骤506:结束。

如以上所说明的,根据第1实施方式,能够根据软件规范(决定表)131生 成保证了期望输出值的囊括性的测试用例。

(第2实施方式)

根据第1实施方式所示的方法,能够根据作为软件规范(决定表)131而赋 予的软件规范,生成保证了期望输出值的囊括性的测试用例。

软件规范(决定表)131随着条件因子和条件值的数量增加而规模变大,因 此为了进行处理,有时需要存储容量大的主存储装置103。另外,日本特开 2012-190203号公报中,公开了一种赋予命题形式的规范(以下称为命题规范) 并制作决定表的方法。命题规范表示的是如“‘有无参加保险’为‘已参加’ 并且‘保险缴纳额’为‘2万日元以上’的情况下,‘补助金’为‘有支付’ 并且‘纳税义务’为‘有义务’”这样的“(条件部)的情况(结果部)”的形式 的规则。根据日本特开2012-190203号公报公开的方法,能够利用这样的规则 的集合来生成决定表。也就是说,能够将软件规范不是作为以表格形式展开的 数据保存,而是作为表现规则的集合的数据保存。一条规则有时能够定义软件 规范里的多个列,因此与以表格形式展开保存的情况相比较,能够用更小尺寸 的主存储装置103和外部存储装置104管理决定表。

第2实施方式基本上与第1实施方式相同,但并不是将软件规范作为以表 格形式展开的数据保存,而是作为命题规范保存。将这样的作为命题规范管理 的决定表作为软件规范时,能够生成保证了期望输出值的囊括性的测试用例。 这时,由于不展开为表格形式的数据,而能够保证期望输出值的囊括性,因此 优选能够减小处理所需的主存储装置103的存储容量这一点。

在命题规范中,将规则记述为根据命题变量的命题逻辑式。各规则的条件 部可以用如下的方式记述为命题逻辑式。首先对条件因子A的每个可取的值 分配A1、A2、……An和命题变量。对于“条件因子A为A1”这样的记述, 使其与A1∧┐A2∧……∧┐An(“∧”为逻辑积,“┐”为否定)这样的命题逻辑 式对应。“条件因子A为A1,并且条件因子B为B2”这样多个条件用“并且” 连接时,将分别对应的命题逻辑式与用“∧”结合的命题逻辑式对应即可。对 于结果部也可以同样地使命题逻辑式对应。命题规范可以表现为分别与条件部 和结果部对应的命题逻辑式的组。

根据命题规范的集合定义的决定表可以用如下的方式生成。对于决定表的 各列,按照条件定义部被标记符号的位置,考虑如下的真值分配。对条件因子 X附加了第k个值的符号时,将真值分配为Xk=True,Xi=False(i≠k)。这时, 该列的结果值定义如下。(1)按照上述真值分配,收集全部满足条件部的命题 规范。(2)生成将与所收集的命题规范的结果部对应的命题逻辑式用“∧”结 合而得的命题逻辑式。进一步地对于各结果因子,将与结果值对应的命题变量 恰好一个为True、与其以外的结果值对应的命题变量为False时而充分的节用 “∧”结合。(3)寻找使(2)中生成的命题逻辑式充分的真值分配。这可以通过 利用SAT解算器来搜索。正好找到一个这样的真值分配时,相当于该真值的 结果值的组合即为该列的结果值。另外,不存在真值分配时,意味着命题规范 之间存在某种矛盾。还有当真值分配存在2个以上时,意味着结果不唯一确定, 也就是规范存在不明确。

第2实施方式中的各处理流程基本上与第1实施方式相同,但图5所示的 期望输出确认处理以及测试用例添加处理的一部分有变化。

图7是表示第2实施方式的期望输出确认处理及测试用例添加处理的细节 的流程图。

步骤701:开始。

步骤702:与步骤502相同。期望输出确认处理部143从软件规范131(命 题规范)的结果值的组(对结果因子的各因子逐个选择结果值)中,选择一个还没 有确认的作为结果值候选。如果对全部结果值的组完成了确认,则进入步骤 705。

步骤703:与步骤503相同。期待输出确认处理部143确认在步骤303生 成的测试用例中是否有期望输出值与步骤702中选择的结果值候选一致的,如 果有则返回步骤702。

步骤704:用以下的方式确认步骤702中选择的结果值候选是否能够由步 骤302中接收的软件规范(命题规范)输出。测试用例添加处理部144将由相当 于该结果值候选的真值分配而充分的命题规范全部收集。以下,将该集合称为 充分命题规范集合。如果充分命题规范集合为空集,则该结果值候选不能被输 出,因此返回步骤702。

步骤705:测试用例添加处理部144寻找满足以下条件的、充分命题规范 集合的子集。(1)生成将该子集中包含的全部命题规范的结果部的命题逻辑式 用“∧”结合而得的命题逻辑式时,在相当于上述的该结果值候选的真值分配 以外不存在使该命题逻辑式充分的真值分配。(2)将该子集中包含的全部命题 规范的条件部的命题逻辑式用“∧”结合而得的命题逻辑式是能够充分的。如 果存在这样的子集,则测试用例添加处理部144这时把相当于使(2)充分的真 值分配的条件值作为测试输入值、将步骤702中选择的结果值候选设为期望输 出值的测试用例作为新的测试用例添加到步骤303中生成的测试用例中,也返 回步骤702。如果不存在,则直接返回步骤702。

步骤706:与步骤306相同。测试用例输出处理部145将得到的测试用例 输出给显示装置108或未图示的打印机等输出装置。

步骤707:结束。

在图7所示的处理流程中,也与图5所示的处理流程相同,将结果值候选 依次变更的同时,判定该结果值候选是(1)包含在已经输出的测试用例中、(2) 不包含在测试用例中而且本身也是规范里无法输出的值、(3)虽然不包含在测 试用例中但是为在规范上能够输出的值中的哪一个,如果是(3),则作为需要 添加的测试用例添加,由此保证得到的测试用例将期望输出值囊括。

根据以上说明的第2实施方式,能够根据作为命题规范赋予的软件规范, 不以表格形式展开,而生成保证期望输出值的囊括性的测试用例。

(其他实施方式)

第1实施方式中,软件规范(决定表)131有时也用与图2所示的记法不同 的记法来表现。第1实施方式并不局限于特定的表记方法,对于以其他表记方 法表示的软件规范也能够应用。另外,将按照这些表记方法的信息存储在外部 存储装置104中时,可以按照适当的编码方法存储编码后的数据。作为编码方 法,可以使用例如XML形式和CSV(逗号分隔)方式等。

另外,第1实施方式中,图3的步骤303中,以从软件规范(决定表)131 中提取关于条件因子满足2因子囊括的列的集合来生成测试用例的情况为例 进行了说明,更为一般地,也可以用将全部n因子的组合囊括的方式(将其称 为n因子囊括。其中n为2以上、且全部因子数以下)来提取并生成测试用例。 这种情况下,能够检测出全部由n个以下的条件因子造成的软件的错误,因此 n越大,从测试用例的质量的观点来看越优秀。另一方面,n越小,测试用例 数减少,所以从测试执行时间的观点来看越优秀。另外,作为一种实现2因子 囊括、对于3因子以上也实现高囊括率的方法,也有一种公知的叫做正交表法 的方法。第1实施方式不局限于2因子囊括的配对法,对于进行n因子囊括的 配对法、正交表法等其他测试用例提取方法生成的测试用例也能够应用。

另外,期望输出确认处理及测试用例添加处理也可以通过例如首先制作软 件规范上能够输出的值的一览表后,将结果候选值在该一览表的范围内依次变 更同时进行处理等、与图5所示的处理流程不同的处理流程来实现。这种情况 下,不需要判定是否为上述(2)不包含在测试用例中而且本身也是规范上无法 输出的值,只判定是否包含在已经输出的测试用例中即可,因此能够减轻判定 处理。

另外,第1实施方式中,以生成将软件规范上能够输出的值全部囊括的测 试用例的情况为例进行了说明,而即使变更囊括条件,也可以同样地应用第1 实施方式。例如,也可以对于结果因子应用配对法,选择2因子囊括这样的结 果值候选,之后应用上述处理流程。这种情况下,不限于将规范上能够输出的 值全部囊括,但避免了得到的测试用例中包含的期望输出值极端波动,同时与 将规范上能够输出的值全部囊括的情况相比得到数量较少的测试用例,因此从 测试执行时间的观点来说较为理想。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号