一种生成状态转换测试用例的方法及装置制造方法

文档序号:6534836阅读:205来源:国知局
一种生成状态转换测试用例的方法及装置制造方法
【专利摘要】本申请提供了一种生成状态转换测试用例的方法及装置,方法包括:生成包括系统存在的各个状态和状态转换信息的状态转换表,状态转换信息用于指示状态与状态之间是否能够进行转换;依据状态转换表生成N-Switch状态转换树,并依据N-Switch状态转换树生成有效的状态转换测试路径;依据状态转换表生成无效的状态转换测试路径;通过有效的状态转换测试路径和无效的状态转换测试路径生成状态转换测试用例集。本申请提供的方法及装置,能覆盖系统的所有状态以及状态与状态之间的转换关系,因此能够保证测试用例的充分性,并且,能够保证生成的状态转换测试用例集的确定性和唯一性,避免产生不同人设计出的测试用例不同的情况。
【专利说明】一种生成状态转换测试用例的方法及装置
【技术领域】
[0001]本发明涉及软件测试【技术领域】,尤其涉及一种生成状态转换测试用例的方法及装置。
【背景技术】
[0002]在软件测试中,当被测对象有多个状态时,各个状态之间存在一定的逻辑转换关系,状态与状态之间的转换由事件来触发或者由一些动作来产生,为了充分验证事件、动作、状态与状态转换之间的关系,以及系统对输入事件是否能做出正确的响应,需要采用一定的方法和技术来设计测试用例。
[0003]现有技术中所使用的最简单直接的方法是根据系统的需求及设计,采用穷举法列出系统中可能的状态转换场景,形成相应的测试用例。发明人在实现本发明创造的过程中发现:现有技术中通过穷举法设计的测试用例,具有较大的随意性,有可能会漏掉一些状态转换路径,不能保证测试用例的完整性。

【发明内容】

[0004]有鉴于此,本发明提供了一种生成状态转换测试用例的方法及装置,用以解决现有技术中通过穷举法设计的测试用例,具有较大的随意性,有可能会漏掉一些状态转换路径,不能保证测试用例的完整性的问题,其技术方案如下:
[0005]一种生成状态转换测试用例的方法,包括:
[0006]生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换;
[0007]依据所述状态转换表生成N-Switch状态转换树,并依据所述N-Switch状态转换树生成有效的状态转换测试路径;
[0008]依据所述状态转换表生成无效的状态转换测试路径;
[0009]通过所述有效的状态转换测试路径和所述无效的状态转换测试路径生成状态转换测试用例集。
[0010]其中,所述N-Switch状态转换树为O-Switch状态转换树或1-SwitCh状态转换树;
[0011]则当所述N-Switch状态转换树为O-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为:
[0012]依据所述状态转换表生成O-Switch状态转换树;
[0013]则当所述N-Switch状态转换树为1-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为:
[0014]依据所述状态转换表生成O-Switch状态转换树;
[0015]依据所述状态转换表确定能够与所述O-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述O-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。
[0016]其中,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态;
[0017]则所述O-Switch状态转换树生成子模块,包括:
[0018]根结点添加子模块,用于将所述起始状态作为根结点,为所述O-Switch状态转换树添加根结点,并将所述根结点所在的层次作为所述O-Switch状态转换树的第I层;
[0019]子结点添加子模块,用于从所述O-Switch状态转换树的第I层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上,或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述O-SwitCh状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出O-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。
[0020]其中,依据所述状态转换表中生成无效的转换测试路径,具体为:
[0021 ] 对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态;
[0022]通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。
[0023]其中,依据所述N-Switch状态转换树生成有效的状态转换测试路径,具体为:
[0024]从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止;
[0025]确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中叶子结点的数量相同。
[0026]一种生成状态转换测试用例的装置,包括:
[0027]状态转换表生成模块,用于生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换;
[0028]状态转换树生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成N-Switch状态转换树;
[0029]有效路径生成模块,用于依据所述状态转换树生成模块生成的所述N-Switch状态转换树生成有效的状态转换测试路径;
[0030]无效路径生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成无效的状态转换测试路径;
[0031]测试用例生成模块,用于通过所述有效路径生成模块生成的所述有效的状态转换测试路径和所述无效路径生成模块生成的所述无效的状态转换测试路径生成状态转换测试用例集。
[0032]其中,所述N-Switch状态转换树为O-Switch状态转换树或1-Switch状态转换树;
[0033]则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括:
[0034]O-Switch状态转换树生成子模块,用于依据所述状态转换表生成O-Switch状态转换树;
[0035]则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括:
[0036]O-Switch状态转换树生成子模块,用于依据所述状态转换表生成O-Switch状态转换树;
[0037]1-Switch状态转换树生成子模块,用于依据所述状态转换表确定能够与所述O-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述O-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。
[0038]其中,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态;
[0039]则所述O-Switch状态转换树生成子模块,具体用于将所述起始状态作为根结点,并将所述根结点所在的层次作为所述O-Switch状态转换树的第I层,从所述O-Switch状态转换树的第I层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上,或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述O-Switch状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出O-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。
[0040]其中,所述无效路径生成模块路径,具体用于对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态,通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。
[0041]其中,所述有效路径生成模块,具体用于从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止,确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中叶子结点的数量相同。
[0042]上述技术方案具有如下有益效果:
[0043]本发明提供的生成状态转换测试用例的方法及装置,可依据系统存在的状态以及状态与状态之间的转换关系生成状态转换表,通过状态转换表可生成有效的状态转换测试路径和无效的状态转换测试路径,最终通过有效的状态转换测试路径和无效的状态转换测试路径生成状态转换测试用例集。本发明提供的方法及装置能覆盖系统的所有状态以及状态与状态之间的转换关系,能保证测试用例的完整性,并且,在状态转换表确定后,依据状态转换表生成的无效的状态转换测试路径是确定的,依据状态转换表生成的状态转换树是确定的,与状态转换树对应的有效的状态转换测试路径也是确定的,因此,保证了依据有效的状态转换测试路径和无效的状态转换测试路径生成的状态转换测试用例集也是唯一确定的,从而避免产生不同人设计出的测试用例不同的情况。另外,本发明实施例提供的方法和装置还可大大减少人工分析生成状态转换测试用例的时间,提高设计状态转换测试用例的效率。
【专利附图】

【附图说明】
[0044]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0045]图1为本发明实施例提供的一种生成状态转换测试用例的方法的流程示意图;
[0046]图2为本发明实施例提供的生成状态转换测试用例的方法中,依据状态转换表生成O-Switch状态转换树的实现方式的流程示意图;
[0047]图3为本发明实施例提供的生成状态转换测试用例的方法中,为O-Switch状态转换的第K层结点添加子结点的实现方式的流程示意图;
[0048]图4为依据表I生成的O-Switch状态转换树示意图;
[0049]图5为依据表I生成的1-Switch状态转换树示意图;
[0050]图6为通过本发明实施例提供的生成状态转换测试用例的方法生成的测试用例示意图;
[0051]图7为本发明实施例提供的生成状态转换测试用例的装置50的结构示意图;
[0052]图8为本发明实施例提供的生成状态转换测试用例的装置70中状态转换树生成模块702的一种结构示意图;
[0053]图9为本发明实施例提供的生成状态转换测试用例的装置70中状态转换树生成丰旲块702的另一种结构不意图;
[0054]图10为本发明实施例提供的状态转换树生成模块702中O-Switch状态转换树生成子模块801的结构示意图。
【具体实施方式】
[0055]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056]请参阅图1,为本发明实施例提供的一种生成状态转换测试用例的方法的流程示意图,该方法可以包括:
[0057]步骤SlOl:生成状态转换表。
[0058]其中,状态转换表包括系统存在的各个状态和状态转换信息,状态转换信息用于指示状态与状态之间是否能够进行转换。
[0059]在本实施例中,生成状态转换表具体为:根据被测对象的需求分析及设计内容,分析系统中存在哪些状态,状态与状态之间是否能够进行转换,然后基于分析结果生成状态转换表。
[0060]示例性的,系统中存在的状态可以包括初始状态、初始化、运行中、暂停和停止。生成的状态转换表如表I所示:[0061]表1
[0062]
【权利要求】
1.一种生成状态转换测试用例的方法,其特征在于,包括: 生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换; 依据所述状态转换表生成N-Switch状态转换树,并依据所述N-Switch状态转换树生成有效的状态转换测试路径; 依据所述状态转换表生成无效的状态转换测试路径; 通过所述有效的状态转换测试路径和所述无效的状态转换测试路径生成状态转换测试用例集。
2.根据权利要求1所述的方法,其特征在于,所述N-Switch状态转换树为O-Switch状态转换树或1-Switch状态转换树; 则当所述N-Switch状态转换树为O-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为: 依据所述状态转换表生成O-Switch状态转换树; 则当所述N-Switch状态转换树为1-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为: 依据所述状态转换表生成O-Switch状态转换树; 依据所述状态转换表确定能够与所述O-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述O-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。
3.根据权利要求2所述的方法,其特征在于,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态,依据所述状态转换表生成O-Switch状态转换树,具体为: 将所述起始状态作为根结点,为所述O-Switch状态转换树添加根结点,并将所述根结点所在的层次作为所述O-Switch状态转换树的第I层; 从所述O-Switch状态转换树的第I层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上,或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述O-Switch状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出O-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。
4.根据权利要求1~3中任意一项所述的方法,其特征在于,依据所述状态转换表中生成无效的转换测试路径,具体为: 对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态; 通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。
5.根据权利要求1~3中任意一项所述的方法,其特征在于,依据所述N-Switch状态转换树生成有效的状态转换测试路径,具体为:从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止; 确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中叶子结点的数量相同。
6.一种生成状态转换测试用例的装置,其特征在于,包括: 状态转换表生成模块,用于生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换; 状态转换树生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成N-Switch状态转换树; 有效路径生成模块,用于依据所述状态转换树生成模块生成的所述N-Switch状态转换树生成有效的状态转换测试路径; 无效路径生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成无效的状态转换测试路径; 测试用例生成模块,用于通过所述有效路径生成模块生成的所述有效的状态转换测试路径和所述无效路径生成模块生成的所述无效的状态转换测试路径生成状态转换测试用例集。
7.根据权利要求6所述的装置,其特征在于,所述N-Switch状态转换树为O-Switch状态转换树或1-Switch状态转换树; 则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括: O-Switch状态转换树生成子模块,用于依据所述状态转换表生成O-Switch状态转换树; 则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括: 0-Switch状态转换树生成子模块,用于依据所述状态转换表生成O-Switch状态转换树; 1-Switch状态转换树生成子模块,用于依据所述状态转换表确定能够与所述O-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述O-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。
8.根据权利要求7所述的装置,其特征在于,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态; 则所述O-Switch状态转换树生成子模块,包括: 根结点添加子模块,用于将所述起始状态作为根结点,为所述O-Switch状态转换树添加根结点,并将所述根结点所在的层次作为所述O-Switch状态转换树的第I层; 子结点添加子模块,用于从所述O-Switch状态转换树的第1层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上,或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述O-Switch状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出O-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。
9.根据权利要求6~8中任意一项所述的装置,其特征在于, 所述无效路径生成模块路径,具体用于对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态,通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。
10.根据权利要求6~8中任意一项所述的装置,其特征在于, 所述有效路径生成模块,具体用于从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止,确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中`叶子结点的数量相同。
【文档编号】G06F11/36GK103678138SQ201410003501
【公开日】2014年3月26日 申请日期:2014年1月3日 优先权日:2014年1月3日
【发明者】殷红珍, 陈义林 申请人:北京经纬恒润科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1