一种软件测试用例自动生成方法与流程

文档序号:13483486阅读:5925来源:国知局

本发明涉及软件测试技术领域,具体涉及一种软件测试用例自动生成方法。



背景技术:

软件测试用例的选择与生成技术是软件测试中的一个重要的环节,在软件测试中占很大比重。软件测试用例的生成包含选定被测任务、分析输入数据、确定其取值并分析对应的输出数据。测试用例选取的一个中心原则,就是以用最少的测试用例找到尽可能多的错误。如果该过程能自动实现,则会极大地减少软件开发的周期和费用。

当前测试用例的生成主要靠手工完成,而且要求软件测试人员具有一定的经验和较高的专业水平。因而,测试过程往往带有很大盲目性,致使测试效率低下,软件成本居高不下,软件质量也很难保证。此外,软件测试工具在测试数据自动生成上虽有所涉及,但更多情况还是由人工研究被测应用程序的每个模块,然后赋值合适的测试数据。这样的工作量极大,还存在数据不够完整充足,或者有些测试工具采用随机算法生成大量测试数据,这样的方式会带来冗余数据等问题,仍不能准确高效地对模块进行测试。

为提高软件测试的质量,降低软件测试成本和测试人员的工作量,提高软件测试效率,需要设计一种软件测试用例自动生成方法。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是:如何提高设计和生成测试用例的效率。

(二)技术方案

为了解决上述技术问题,本发明提供了一种软件测试用例自动生成方法,假设软件系统的接口参数个数为n,每个参数ci的取值个数为ti,i=1,2,…,n,且t1≥t2≥…≥tn,n为正整数,构造一个网络,该网络的层数表示接口参数的个数,即网络层数为n,网络的其中一层上的节点个数表示其中一个接口参数的取值个数,节点号表示接口参数的取值序号;从其中一层的第一个节点,即网络的起点出发沿着节点间的路径向前探索,直到网络的终点,形成一条路径,路径上的节点号串表示一条测试用例;

测试用例节点序列的生成顺序为:按网络层次从左到右,每一层从上到下的顺序逐个节点执行,测试用例按照如下步骤自动生成:

步骤1:第1层的每个节点沿着路径按下一层节点号递增的次序给下一层每个节点发送自己的节点号;

步骤2:第2层每个节点每接收到一个节点号,就将自己的节点号追加在这个节点号的后面,形成一个节点号串,并按照接收的顺序将其保存;

步骤3:从第2层的每个节点开始按照如下方法向下一层每个节点发送该节点内形成的节点号,把第i层的第j号节点内的第1个组装好的节点号串,按照j,j+1,…,ti+1,1,2,…,j-1的顺序与其它第i层节点内已经收到的每个节点号串进行比较,如果前面i个位置的相同位置上每有一个节点号串相同,则将该节点的计数器加1;然后从第i层第j个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k,将节点k的节点号追加在节点j的节点号后面;i≥2,1≤j≤ti;计数器初始值为0;

将把第i层的第j+1号节点内的第2个组装好的节点号串,按照k+1,k+2,…,ti+1,1,2,…,k的顺序,从第k+1号节点开始,与其它第i层节点内已经收到的每个节点号串进行比较,如果第i个位置上的节点号串相同,则将该节点的计数器加1;然后从第i层第k个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k,将节点k的节点号追加在节点j+1的节点号后面;依次类推,直到第i+1层下所有节点号都分别追加在第i层下所有节点号后面;1≤k≤ti;

步骤4:按照步骤3的方法,在上述网络中的每一行节点构成了一组节点号串,一组节点号串表示一条测试用例。

优选地,在步骤4之后还包括:

步骤5:在基于节点号串生成的测试用例中,检查任意两个接口参数的节点号是否被生成的测试用例所覆盖,如果全部覆盖,则输出所有的节点号串作为最终生成的测试用例表,测试用例生成工作完成;否则,输出所有遗漏的接口参数组合项,形成一张遗漏项表,该表的每一列表示接口参数的任意两种组合,每一行表示遗漏项的编号,执行步骤6;

步骤6:从遗漏项表中找出一个遗漏项,产生一个测试用例,使其在相应的参数位置填上相应参数的节点号,其它参数位置上标记为空缺,并从遗漏项表中去掉该遗漏项;

步骤7:分别以步骤6产生的测试用例确定的参数节点号为中心,查找遗漏表,找出相关遗漏项,将参数的节点号填在相应的空缺位置,并将表中的相应的遗漏项删掉;

步骤8:以新填入的参数节点号为中心,执行步骤7相同的搜索,直到步骤6产生的测试用例的各个参数位置没有空缺标记或者从表中找不到相关遗漏项为止;

步骤9:输出步骤6产生的测试用例,若表中还有遗漏项,则返回步骤6;否则,测试用例全部生成完毕。

优选地,若所述节点号串为1-3-2-4,则表示第1个参数取第1个值,第2个参数取第3个值,第3个参数取第2个值,第4个参数取第4个值。

(三)有益效果

本发明提出一种软件测试用例自动生成方法,该方法通过对软件接口参数进行组合覆盖测试,用最少的测试用例满足软件测试覆盖性,提高了设计和生成测试用例的效率,从而有效的提升了软件的测试效率和保证软件测试质量。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。

为了降低软件测试人员工作量,降低软件测试成本,提高软件测试的质量和效率,本文提出了一种软件测试用例自动生成方法。该方法基于对系统各个接口参数进行两两组合全面覆盖的原则来选择测试用例,以最少的测试用例实现对各个接口参数的各种组合进行最大限度的覆盖。

本发明基于参数个数和参数取值个数设计了一种测试用例自动生成方法。首先进行如下定义:

假设某软件系统的接口参数个数为n,每个参数ci的取值个数为ti,i=1,2,…,n,且t1≥t2≥…≥tn,n为正整数。构造一个网络,该网络的层数表示接口参数的个数,即网络层数为n,网络的某一层上的节点个数表示某个接口参数的取值个数,节点号表示接口参数的取值序号。从某一层的第一个节点(网络的起点)出发沿着节点间的路径向前探索,直到网络的终点,形成一条路径,路径上的节点号串就表示一条测试用例。比如,1-3-2-4,表示第1个参数取第1个值,第2个参数取第3个值,第3个参数取第2个值,第4个参数取第4个值。

本发明的测试用例节点序列的生成顺序为:按网络层次从左到右,每一层从上到下的顺序逐个节点执行。测试用例按照如下步骤自动生成:

步骤1:第1层的每个节点沿着路径按下一层节点号递增的次序给下一层每个节点发送自己的节点号;

步骤2:第2层每个节点每接收到一个节点号,就将自己的节点号追加在这个节点号的后面,形成一个节点号串,并按照接收的顺序将其保存;

步骤3:从第2层的每个节点开始按照如下方法向下一层每个节点发送该节点内形成的节点号。把第i层(i≥2)的第j号节点(1≤j≤ti)内的第1个组装好的节点号串,按照j,j+1,…,ti+1,1,2,…,j-1的顺序与其它第i层节点内已经收到的每个节点号串进行比较,如果前面i个位置的相同位置上每有一个节点号串相同,则将该节点的计数器加1(计数器每次初始值为0)。然后从第i层第j个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k(1≤k≤ti),将节点k的节点号追加在节点j的节点号后面;

将把第i层(i≥2)的第j+1号节点(1≤j≤ti)内的第2个组装好的节点号串,按照k+1,k+2,…,ti+1,1,2,…,k的顺序,从第k+1号节点开始,与其它第i层节点内已经收到的每个节点号串进行比较,如果第i个位置上的节点号串相同,则将该节点的计数器加1(计数器每次初始值为0)。然后从第i层第k个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k(1≤k≤ti),将节点k的节点号追加在节点j+1的节点号后面;依次类推,直到第i+1层下所有节点号都分别追加在第i层下所有节点号后面;

步骤4:按照步骤3的方法,在上述网络中的每一行节点构成了一组节点号串,一组节点号串表示一条测试用例。至此,初步生成了基于接口参数个数和参数取值个数的多个测试用例;

步骤5:在上述基于节点号串生成的测试用例中,检查任意两个接口参数的节点号是否被生成的测试用例所覆盖,如果全部覆盖,则输出所有的节点号串作为最终生成的测试用例表,测试用例生成工作完成;否则,输出所有遗漏的接口参数组合项,形成一张遗漏项表,该表的每一列表示接口参数的任意两种组合,每一行表示遗漏项的编号,执行步骤6;

步骤6:从遗漏项表中找出一个遗漏项,产生一个测试用例,使其在相应的参数位置填上相应参数的节点号,其它参数位置上标记为空缺,并从遗漏项表中去掉该遗漏项;

步骤7:分别以步骤6产生的测试用例确定的参数节点号为中心,查找遗漏表,找出相关遗漏项,将参数的节点号填在相应的空缺位置,并将表中的相应的遗漏项删掉;

步骤8:以新填入的参数节点号为中心,执行步骤7相同的搜索,直到步骤6产生的测试用例的各个参数位置没有空缺标记或者从表中找不到相关遗漏项为止;

步骤9:输出步骤6产生的测试用例,若表中还有遗漏项,则返回步骤6;否则,测试用例全部生成完毕。

可以看出,本发明提出的一种基于对系统各个接口参数进行两两组合全面覆盖的原则来选择测试用例的方法,充分考虑了被测软件所有接口参数的各种取值和各种取值组合可能对系统产生的影响,以最少的测试用例实现对各个接口参数的各种组合进行最大限度的覆盖。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1