基于用户使用流程有向图的测试用例自动生成方法及测试方法
技术领域
本发明涉及计算机软件测试领域,尤其涉及测试用例自动生成方法及测试方法。
背景技术
软件已经深入到人们生活工作的各个方面。由于软件在金融、军事、电力、交通、航天、通讯等重要领域的应用越来越深入广泛。软件系统的规模也在持续扩大,需求日益复杂,对软件质量的要求也越来越高。但现实中软件系统的质量和稳定性却不尽如人意,采用有效的软件测试是保证软件质量、提高软件可靠性的重要手段。在提供给用户之前对软件进行测试是不可或缺的,软件测试通过对软件错误的原因和分布进行归纳,来发现并排除当前软件产品存在的缺陷,对在需求和设计过程中存在的问题查缺补漏,从而确保软件产品的质量。软件测试不只是软件测试人员的工作,也是软件开发人员和软件使用者的工作。软件测试的本质就是针对要测试的内容确定一组测试用例(Test Case)。
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例包括测试标识、测试用例名称、目标、测试条件、测试设置、输入数据要求、步骤、以及预期的结果等。从软件测试用例设计方法的角度,可分为黑盒测试(Black-Box Testing)和白盒测试(White-Box Testing)。黑盒测试(又称为功能测试或数据驱动测试)是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。黑盒测试试图发现以下类型的错误:1)功能错误或遗漏;2)界面错误;3)数据结构或外部数据库访问错误;4)性能错误;5)初始化和终止错误。黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。
用路径分析的方法编写测试用例时,首先可将系统运行过程中所涉及到的各种流程图表化,可以先从最基本的流程入手,将流程抽象成为不同功能的顺序执行。在最基本流程的基础上再去考虑次要或者异常的流程,这样将各种流程逐渐细化,这样既可以逐渐加深对流程的理解,还可以将各个看似孤立的流程关联起来。完成所有流程的图表化后就完成了所有路径的设定。
在实际应用软件时,用户使用流程覆盖的路径很复杂且很难预测,这对软件测试而言,测试任务显得较为繁琐。
发明内容
有鉴于此,本发明目的是在于建立一种基于用户使用流程有向图的测试用例自动生成方法及测试方式,使得用户流程测试更加规范,提高软件在流程关联性方面的质量。
为了实现前述发明目的,本发明提供了一种基于用户使用流程有向图的测试用例自动生成方法,包括以下步骤,步骤一: 建立用户使用流程明细表;步骤二:建立用户使用流程有向图;步骤三: 建立测试用例生成引擎;其中,所述步骤一具体包括:根据软件的设计建立主要步骤;增加两个固定的步骤:用户进入使用状态的开始步骤start,用户退出使用状态的退出步骤(quit);建立上述步骤间的转移条件;建立在每个步骤内改变转移条件;
所述建立上述步骤间的转移条件的规则是步骤start根据转移条件可以向其他步骤转移,但其他步骤不可以向start转移,只在行出现;步骤quit不可以向其他步骤转移,但其他步骤根据转移条件可以向quit转移,只在列出现;
所述用户使用流程明细表中的第一列代表当前步骤,最后一列代表当前步骤可改变的转移条件,倒数第二列表示其他步骤到步骤quit的条件;用户使用流程明细表中的第一行代表下一个步骤,最后一行表示从步骤start到其他步骤的条件;用户使用流程明细表中的其他列和行表示除步骤start和步骤quit外的各个步骤相互间跳转的转移条件;
所述用户使用流程有向图具有圆圈作为有向图的节点,表示步骤,圆圈内的名字为步骤名;圆圈间的有向连线作为有向图的边,代表步骤间转移的路径,线上的说明代表转移条件,没有说明的代表无条件转移; 圆圈外的方框代表步骤可改变转移条件的值,方框内的说明代表具体改变转移条件值得情况;无方框代表不需要改变转移条件的值; 两个特殊的步骤:start代表用户进入使用;quit代表用户退出使用;
所述步骤三把用户使用流明细表作为输入文件,用户使用步骤的步数作为输入的第二个参数;测试用例脚本作为输出;
所述测试用例生成引擎的具体操作流程为:
步骤1.按照明细表最后一行最后一列:步骤“start”的“改变条件”说明代码,初始化有向图上所有边的条件的初始值;
步骤2. 记录最后一列其他所有节点的“改变条件”说明代码;
步骤3. 给每个节点可前进的下一个节点从0开始编号,并记录最大编号N、转移条件;
步骤4. 设定当前节点为步骤start节点(流程开始节点);
步骤5. 任取随机数n,得到n除N的余数为下一步的要去的节点;
步骤6. 判断当前节点与下一步要去的节点之间连线上的边是否满足,若不满足,返回步骤5,否则跳到步骤7;
步骤7. 改变当前节点为选取的节点,并改变新的节点条件所要改变的状态,记录到测试用例脚本文件;
步骤8. 自增步骤变量;
步骤9. 判断步骤变量是否达到设定的步数S;若没有达到,返回步骤5,否则跳到步骤10;
步骤10. 根据引擎设置,可有两种情况产生:第一种情况,执行当前节点能到退出步骤quit节点的最短路径,把所经过的所有节点都记录到测试用例脚本文件;第二种情况,无论有向图是否有连接,直接跳到步骤11;
步骤11. 退出用户使用流程。
为了实现前述发明目的,本发明提供了一种基于用户使用流程有向图的测试方法,包括以下步骤,步骤一: 建立用户使用流程明细表;步骤二:建立用户使用流程有向图;步骤三: 建立测试用例生成引擎;步骤四: 运行测试用例,得到测试结果; 步骤五:评价测试结果,统计路径测试覆盖率;其中,所述步骤一具体包括:根据软件的设计建立主要步骤;增加两个固定的步骤:用户进入使用状态的开始步骤start,用户退出使用状态的退出步骤(quit);建立上述步骤间的转移条件;建立在每个步骤内改变转移条件;所述建立上述步骤间的转移条件的规则是步骤start根据转移条件可以向其他步骤转移,但其他步骤不可以向start转移,只在行出现;步骤quit不可以向其他步骤转移,但其他步骤根据转移条件可以向quit转移,只在列出现;所述用户使用流程明细表中的第一列代表当前步骤,最后一列代表当前步骤可改变的转移条件,倒数第二列表示其他步骤到步骤quit的条件;用户使用流程明细表中的第一行代表下一个步骤,最后一行表示从步骤start到其他步骤的条件;用户使用流程明细表中的其他列和行表示除步骤start和步骤quit外的各个步骤相互间跳转的转移条件;所述用户使用流程有向图具有圆圈作为有向图的节点,表示步骤,圆圈内的名字为步骤名;圆圈间的有向连线作为有向图的边,代表步骤间转移的路径,线上的说明代表转移条件,没有说明的代表无条件转移; 圆圈外的方框代表步骤可改变转移条件的值,方框内的说明代表具体改变转移条件值得情况;无方框代表不需要改变转移条件的值; 两个特殊的步骤:start代表用户进入使用;quit代表用户退出使用;所述步骤三把用户使用流明细表作为输入文件,用户使用步骤的步数作为输入的第二个参数;测试用例脚本作为输出;所述测试用例生成引擎的具体操作流程为:
步骤1.按照明细表最后一行最后一列:步骤“start”的“改变条件”说明代码,初始化有向图上所有边的条件的初始值;
步骤2. 记录最后一列其他所有节点的“改变条件”说明代码;
步骤3. 给每个节点可前进的下一个节点从0开始编号,并记录最大编号N、转移条件;
步骤4. 设定当前节点为步骤start节点(流程开始节点);
步骤5. 任取随机数n,得到n除N的余数为下一步的要去的节点;
步骤6. 判断当前节点与下一步要去的节点之间连线上的边是否满足,若不满足,返回步骤5,否则跳到步骤7;
步骤7. 改变当前节点为选取的节点,并改变新的节点条件所要改变的状态,记录到测试用例脚本文件;
步骤8. 自增步骤变量;
步骤9. 判断步骤变量是否达到设定的步数S;若没有达到,返回步骤5,否则跳到步骤10;
步骤10. 根据引擎设置,可有两种情况产生:第一种情况,执行当前节点能到退出步骤quit节点的最短路径,把所经过的所有节点都记录到测试用例脚本文件;第二种情况,无论有向图是否有连接,直接跳到步骤11;
步骤11. 退出用户使用流程。
相较于现有技术,本发明通过先建立用户流程明细表,从而可得到用户流程有向图,并可自动生成测试用例,最终实现测试。本发明属于黑盒测试,建立方法简单,测试方式方便灵活,通用性强,可适合各类具有API函数的软件或类CPU指令测试。对不可预测的用户使用流程的测试到问题能力大为增强。
附图说明
图1示意的是本发明的用户使用流程有向图。
图2为本发明的测试用例生成引擎的输入和输出示意图。
图3是本发明的测试用例生成引擎的具体操作流程图。
具体实施方式
下面参照附图具体介绍本发明的实施例,图中相同的结构或功能用相同的数字标出。应该指出的是,附图的目的只是便于对本发明具体实施例的说明,不是一种多余的叙述或是对本发明范围的限制。
本发明基于用户使用流程有向图的测试方法包括以下步骤:步骤一、建立用户使用流程明细表; 步骤二、以用户使用流程明细表作为数据来源,生成用户流程测试用例; 步骤三、运行测试用例,得到测试结果; 步骤四(步骤S4)、评价测试结果,统计路径测试覆盖率。
本发明基于用户使用流程有向图的测试用例自动生成方法,包括以下步骤, 步骤一: 建立用户使用流程明细表;步骤二:建立用户使用流程有向图;步骤三: 建立测试用例生成引擎。
步骤一、建立用户使用流程明细表的说明:
表1: 用户使用流程明细表
通过步骤一建立用户流程明细表,从而可得到用户流程有向图。建立用户使用流程明细表(如表1)的具体方法如下:
1、根据软件的设计建立主要步骤,如软件中的API函数,CPU指令等等;如表1中的三个API函数:create_project, get_project_list, close_project;
2、增加两个固定的步骤:用户进入使用状态的开始步骤(start);用户退出使用状态的退出步骤(quit);
3、建立上述步骤间的转移条件;
规则: 步骤start根据转移条件可以向其他步骤转移,但其他步骤不可以向步骤start转移,只在行出现;
规则: 步骤quit不可以向其他步骤转移,但其他步骤根据转移条件可以向步骤quit转移,只在列出现;
4、建立在每个步骤内改变转移条件;
如果有n个步骤,则建立的使用流程表明细表只有(n+1)行x (n+2)列。如果有100 API等待用户流程测试,则只需10302个单元填充。
用户使用流程明细表的说明:
其中,关于列的说明:表格第一列代表当前步骤,表格最后一列代表当前步骤可改变的转移条件,表格倒数第二列表示其他步骤到步骤quit的条件。
关于行的说明:表格第一行代表下一个步骤,表格最后一行表示从步骤start到其他步骤的条件。
其他列和行表示除步骤start和步骤quit外的各个步骤相互间跳转的转移条件。
步骤二、以用户使用流程明细表作为数据来源,建立用户使用流程图:
虽然用户使用流程路经复杂很难预测,但从一个步骤到下一个步骤的流程路经选择是有限的和有条件的。据此可以画出这样的用户使用流程有向图,具体说明请参图1:
1、圆圈作为有向图的节点,表示步骤,圆圈内的名字为步骤名;
2、圆圈间的有向连线作为有向图的边,代表步骤间转移的路径,线上的说明代表转移条件,没有说明的代表无条件转移;
3、圆圈外的方框代表步骤可改变转移条件的值,方框内的说明代表具体改变转移条件值得情况;无方框代表不需要改变转移条件的值;
4、两个特殊的步骤:start代表用户进入使用;quit代表用户退出使用。
一开始从步骤start进入用户使用流程有向图到最终通过步骤quit退出用户使用流程有向图。
中间的步骤依据用户的使用需求和习惯选择,这种使用需求和习惯每个用户都是不一致,不可以预测。但本发明通过测试用例生成引擎随机模拟用户使用路径,达到用户使用路径覆盖率测试要求。通过路径分析可以避免漏测试。
步骤三(步骤S3): 生成用户流程测试用例即建立使用流程有向图的测试用例生成引擎:
该引擎采用脚本或者可编译语言实现,它的输入和输出如图2所示。把用户使用流明细表作为输入文件,用户使用步骤的步数作为输入的第二个参数;测试用例脚本作为输出。
该引擎的具体操作流程图如图3所示,按照明细表,要记录的数据有:
{
条件C;
节点列表node: {
当前节点的名称、能改变的条件;
下一步各节点的名称、编号、转移条件;
}
步骤步数S;
}
步骤1.按照明细表最后一行最后一列:步骤“start”的“改变条件”说明代码,初始化有向图上所有边的条件的初始值;
步骤2. 记录最后一列其他所有节点的“改变条件”说明代码;
步骤3. 给每个节点可前进的下一个节点从0开始编号,并记录最大编号N、转移条件;
步骤4. 设定当前节点为步骤start节点(流程开始节点);
步骤5. 任取随机数n,得到n除N的余数为下一步的要去的节点;
步骤6. 判断当前节点与下一步要去的节点之间连线上的边是否满足。若不满足,返回步骤5,否则跳到步骤7;
步骤7. 改变当前节点为选取的节点,并改变新的节点条件所要改变的状态,记录到测试用例脚本文件;
步骤8. 自增步骤变量;
步骤9. 判断步骤变量是否达到设定的步数S;若没有达到,返回步骤5,否则跳到步骤10;
步骤10. 根据引擎设置,可有两种情况产生:第一种情况,执行当前节点能到退出步骤quit节点的最短路径,把所经过的所有节点都记录到测试用例脚本文件;第二种情况,无论有向图是否有连接,直接跳到步骤11;
步骤11. 退出用户使用流程。
生成的测试用例脚本包含两部分功能:
a, 设置实时断点,一旦有错误,立即退出测试用例脚本;比如每个API函数都必须返回成功,若不成功则可判定为有错误产生。
b, 记录期望的测试结果(包括路径、每个节点达到的步数),可与运行时得到的实际结果比较。
本发明的引擎对使用步骤没有限制,方便灵活生成测试用例。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,利用上述揭示的方法内容对本发明技术方案做出许多可能的变动和修饰,均属于权利要求书保护的范围。