书签 分享 收藏 举报 版权申诉 / 20

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

  • 上传人:111****11
  • 文档编号:6180978
  • 上传时间:2019-05-17
  • 格式:PDF
  • 页数:20
  • 大小:1.24MB
  • 摘要
    申请专利号:

    CN201410003501.5

    申请日:

    2014.01.03

    公开号:

    CN103678138A

    公开日:

    2014.03.26

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20140103|||公开

    IPC分类号:

    G06F11/36

    主分类号:

    G06F11/36

    申请人:

    北京经纬恒润科技有限公司

    发明人:

    殷红珍; 陈义林

    地址:

    100101 北京市朝阳区安翔北里11号B座8层

    优先权:

    专利代理机构:

    北京集佳知识产权代理有限公司 11227

    代理人:

    王宝筠

    PDF完整版下载: PDF下载
    内容摘要

    本申请提供了一种生成状态转换测试用例的方法及装置,方法包括:生成包括系统存在的各个状态和状态转换信息的状态转换表,状态转换信息用于指示状态与状态之间是否能够进行转换;依据状态转换表生成N-Switch状态转换树,并依据N-Switch状态转换树生成有效的状态转换测试路径;依据状态转换表生成无效的状态转换测试路径;通过有效的状态转换测试路径和无效的状态转换测试路径生成状态转换测试用例集。本申请提供的方法及装置,能覆盖系统的所有状态以及状态与状态之间的转换关系,因此能够保证测试用例的充分性,并且,能够保证生成的状态转换测试用例集的确定性和唯一性,避免产生不同人设计出的测试用例不同的情况。

    权利要求书

    权利要求书
    1.  一种生成状态转换测试用例的方法,其特征在于,包括:
    生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换;
    依据所述状态转换表生成N-Switch状态转换树,并依据所述N-Switch状态转换树生成有效的状态转换测试路径;
    依据所述状态转换表生成无效的状态转换测试路径;
    通过所述有效的状态转换测试路径和所述无效的状态转换测试路径生成状态转换测试用例集。

    2.  根据权利要求1所述的方法,其特征在于,所述N-Switch状态转换树为0-Switch状态转换树或1-Switch状态转换树;
    则当所述N-Switch状态转换树为0-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为:
    依据所述状态转换表生成0-Switch状态转换树;
    则当所述N-Switch状态转换树为1-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为:
    依据所述状态转换表生成0-Switch状态转换树;
    依据所述状态转换表确定能够与所述0-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述0-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。

    3.  根据权利要求2所述的方法,其特征在于,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态,依据所述状态转换表生成0-Switch状态转换树,具体为:
    将所述起始状态作为根结点,为所述0-Switch状态转换树添加根结点,并将所述根结点所在的层次作为所述0-Switch状态转换树的第1层;
    从所述0-Switch状态转换树的第1层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上, 或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述0-Switch状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出0-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。

    4.  根据权利要求1~3中任意一项所述的方法,其特征在于,依据所述状态转换表中生成无效的转换测试路径,具体为:
    对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态;
    通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。

    5.  根据权利要求1~3中任意一项所述的方法,其特征在于,依据所述N-Switch状态转换树生成有效的状态转换测试路径,具体为:
    从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止;
    确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中叶子结点的数量相同。

    6.  一种生成状态转换测试用例的装置,其特征在于,包括:
    状态转换表生成模块,用于生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换;
    状态转换树生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成N-Switch状态转换树;
    有效路径生成模块,用于依据所述状态转换树生成模块生成的所述N-Switch状态转换树生成有效的状态转换测试路径;
    无效路径生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成无效的状态转换测试路径;
    测试用例生成模块,用于通过所述有效路径生成模块生成的所述有效的状态转换测试路径和所述无效路径生成模块生成的所述无效的状态转换测试路径生成状态转换测试用例集。

    7.  根据权利要求6所述的装置,其特征在于,所述N-Switch状态转换树为0-Switch状态转换树或1-Switch状态转换树;
    则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括:
    0-Switch状态转换树生成子模块,用于依据所述状态转换表生成0-Switch状态转换树;
    则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括:
    0-Switch状态转换树生成子模块,用于依据所述状态转换表生成0-Switch状态转换树;
    1-Switch状态转换树生成子模块,用于依据所述状态转换表确定能够与所述0-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述0-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。

    8.  根据权利要求7所述的装置,其特征在于,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态;
    则所述0-Switch状态转换树生成子模块,包括:
    根结点添加子模块,用于将所述起始状态作为根结点,为所述0-Switch状态转换树添加根结点,并将所述根结点所在的层次作为所述0-Switch状态转换树的第1层;
    子结点添加子模块,用于从所述0-Switch状态转换树的第1层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上,或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述0-Switch状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则 将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出0-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。

    9.  根据权利要求6~8中任意一项所述的装置,其特征在于,
    所述无效路径生成模块路径,具体用于对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态,通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。

    10.  根据权利要求6~8中任意一项所述的装置,其特征在于,
    所述有效路径生成模块,具体用于从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止,确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中叶子结点的数量相同。

    说明书

    说明书一种生成状态转换测试用例的方法及装置
    技术领域
    本发明涉及软件测试技术领域,尤其涉及一种生成状态转换测试用例的方法及装置。
    背景技术
    在软件测试中,当被测对象有多个状态时,各个状态之间存在一定的逻辑转换关系,状态与状态之间的转换由事件来触发或者由一些动作来产生,为了充分验证事件、动作、状态与状态转换之间的关系,以及系统对输入事件是否能做出正确的响应,需要采用一定的方法和技术来设计测试用例。
    现有技术中所使用的最简单直接的方法是根据系统的需求及设计,采用穷举法列出系统中可能的状态转换场景,形成相应的测试用例。发明人在实现本发明创造的过程中发现:现有技术中通过穷举法设计的测试用例,具有较大的随意性,有可能会漏掉一些状态转换路径,不能保证测试用例的完整性。
    发明内容
    有鉴于此,本发明提供了一种生成状态转换测试用例的方法及装置,用以解决现有技术中通过穷举法设计的测试用例,具有较大的随意性,有可能会漏掉一些状态转换路径,不能保证测试用例的完整性的问题,其技术方案如下:
    一种生成状态转换测试用例的方法,包括:
    生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换;
    依据所述状态转换表生成N-Switch状态转换树,并依据所述N-Switch状态转换树生成有效的状态转换测试路径;
    依据所述状态转换表生成无效的状态转换测试路径;
    通过所述有效的状态转换测试路径和所述无效的状态转换测试路径生成状态转换测试用例集。
    其中,所述N-Switch状态转换树为0-Switch状态转换树或1-Switch状态转换树;
    则当所述N-Switch状态转换树为0-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为:
    依据所述状态转换表生成0-Switch状态转换树;
    则当所述N-Switch状态转换树为1-Switch状态转换树时,依据所述状态转换表生成N-Switch状态转换树,具体为:
    依据所述状态转换表生成0-Switch状态转换树;
    依据所述状态转换表确定能够与所述0-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述0-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。
    其中,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态;
    则所述0-Switch状态转换树生成子模块,包括:
    根结点添加子模块,用于将所述起始状态作为根结点,为所述0-Switch状态转换树添加根结点,并将所述根结点所在的层次作为所述0-Switch状态转换树的第1层;
    子结点添加子模块,用于从所述0-Switch状态转换树的第1层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上,或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述0-Switch状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出0-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。
    其中,依据所述状态转换表中生成无效的转换测试路径,具体为:
    对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态;
    通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。
    其中,依据所述N-Switch状态转换树生成有效的状态转换测试路径,具体为:
    从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止;
    确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中叶子结点的数量相同。
    一种生成状态转换测试用例的装置,包括:
    状态转换表生成模块,用于生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换;
    状态转换树生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成N-Switch状态转换树;
    有效路径生成模块,用于依据所述状态转换树生成模块生成的所述N-Switch状态转换树生成有效的状态转换测试路径;
    无效路径生成模块,用于依据所述状态转换表生成模块生成的所述状态转换表生成无效的状态转换测试路径;
    测试用例生成模块,用于通过所述有效路径生成模块生成的所述有效的状态转换测试路径和所述无效路径生成模块生成的所述无效的状态转换测试路径生成状态转换测试用例集。
    其中,所述N-Switch状态转换树为0-Switch状态转换树或1-Switch状态转换树;
    则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括:
    0-Switch状态转换树生成子模块,用于依据所述状态转换表生成0-Switch状态转换树;
    则当所述N-Switch状态转换树为1-Switch状态转换树时,所述状态转换树生成模块包括:
    0-Switch状态转换树生成子模块,用于依据所述状态转换表生成0-Switch状态转换树;
    1-Switch状态转换树生成子模块,用于依据所述状态转换表确定能够与所述0-Switch状态转换树的叶子结点进行转换的状态,并将能够与所述0-Switch状态转换树的叶子结点转换的状态作为所述1-Switch状态转换树的叶子结点。
    其中,所述系统存在的各个状态至少包括起始状态,所述状态转换表的各行对应所述系统的各个状态,所述状态转换表的各列对应除所述起始状态外的其它状态;
    则所述0-Switch状态转换树生成子模块,具体用于将所述起始状态作为根结点,并将所述根结点所在的层次作为所述0-Switch状态转换树的第1层,从所述0-Switch状态转换树的第1层开始,依据所述状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果所述第一结点已出现在第J层上,或者,所述第K层上的第一结点与各列的状态都不能进行转换,则将所述第一结点作为所述0-Switch状态转换树的叶子结点,如果所述第K层上的第一结点能够与至少一列的状态进行转换,则将能够与所述第一结点转换的状态作为所述第一结点的子结点,直至确定出0-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。
    其中,所述无效路径生成模块路径,具体用于对于所述状态转换表中的目标状态,通过所述状态转换信息确定不能与所述目标状态进行转换的状态,通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。
    其中,所述有效路径生成模块,具体用于从所述N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止, 确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径,所述有效的状态转换测试路径的数量与所述N-Switch状态转换树中叶子结点的数量相同。
    上述技术方案具有如下有益效果:
    本发明提供的生成状态转换测试用例的方法及装置,可依据系统存在的状态以及状态与状态之间的转换关系生成状态转换表,通过状态转换表可生成有效的状态转换测试路径和无效的状态转换测试路径,最终通过有效的状态转换测试路径和无效的状态转换测试路径生成状态转换测试用例集。本发明提供的方法及装置能覆盖系统的所有状态以及状态与状态之间的转换关系,能保证测试用例的完整性,并且,在状态转换表确定后,依据状态转换表生成的无效的状态转换测试路径是确定的,依据状态转换表生成的状态转换树是确定的,与状态转换树对应的有效的状态转换测试路径也是确定的,因此,保证了依据有效的状态转换测试路径和无效的状态转换测试路径生成的状态转换测试用例集也是唯一确定的,从而避免产生不同人设计出的测试用例不同的情况。另外,本发明实施例提供的方法和装置还可大大减少人工分析生成状态转换测试用例的时间,提高设计状态转换测试用例的效率。
    附图说明
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
    图1为本发明实施例提供的一种生成状态转换测试用例的方法的流程示意图;
    图2为本发明实施例提供的生成状态转换测试用例的方法中,依据状态转换表生成0-Switch状态转换树的实现方式的流程示意图;
    图3为本发明实施例提供的生成状态转换测试用例的方法中,为0-Switch状态转换的第K层结点添加子结点的实现方式的流程示意图;
    图4为依据表1生成的0-Switch状态转换树示意图;
    图5为依据表1生成的1-Switch状态转换树示意图;
    图6为通过本发明实施例提供的生成状态转换测试用例的方法生成的测试用例示意图;
    图7为本发明实施例提供的生成状态转换测试用例的装置50的结构示意图;
    图8为本发明实施例提供的生成状态转换测试用例的装置70中状态转换树生成模块702的一种结构示意图;
    图9为本发明实施例提供的生成状态转换测试用例的装置70中状态转换树生成模块702的另一种结构示意图;
    图10为本发明实施例提供的状态转换树生成模块702中0-Switch状态转换树生成子模块801的结构示意图。
    具体实施方式
    下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    请参阅图1,为本发明实施例提供的一种生成状态转换测试用例的方法的流程示意图,该方法可以包括:
    步骤S101:生成状态转换表。
    其中,状态转换表包括系统存在的各个状态和状态转换信息,状态转换信息用于指示状态与状态之间是否能够进行转换。
    在本实施例中,生成状态转换表具体为:根据被测对象的需求分析及设计内容,分析系统中存在哪些状态,状态与状态之间是否能够进行转换,然后基于分析结果生成状态转换表。
    示例性的,系统中存在的状态可以包括初始状态、初始化、运行中、暂停和停止。生成的状态转换表如表1所示:
    表1
     初始化运行中暂停停止
    起始状态YNNN初始化YYNN运行中NNYY暂停NYNY停止YYNN
    其中,表1中的第一列为系统存在的5种状态,表中的“Y”和“X”为状态转换信息,其中,“Y”表示状态与状态之间能够进行转换,“N”表示状态与状态之间不能进行转换。例如,表格中第二行的第一个“Y”表示“初始状态”能够转换到“初始化”。
    在本实施例中,将系统的需求及设计用状态转换表的形式表现出来,简洁直观,同时能很容易地识别出系统中无效的状态转换和有效的状态转换。
    步骤S102:依据状态转换表生成N-Switch状态转换树。
    在一种可能的实现方式中,N-Switch状态转换树可以为0-Switch状态转换树,则,依据状态转换表生成N-Switch状态转换树具体为:依据状态转换表生成0-Switch状态转换树。
    在另一种可能的实现方式中,N-Switch状态转换树可以为1-Switch状态转换树。需要说明的是,1-Switch状态转换树在0-Switch状态转换树的基础上生成。则,依据状态转换表生成1-Switch状态转换树具体为:依据状态转换表生成0-Switch状态转换树,为0-Switch状态转换树的叶子结点添加一层子结点,得到1-Switch状态转换树,具体的,依据状态转换表确定能够与0-Switch状态转换树的叶子结点进行转换的状态,并将能够与0-Switch状态转换树的叶子结点转换的状态作为1-Switch状态转换树的叶子结点。
    在本实施例中,系统存在的各个状态至少包括起始状态,状态转换表的各行对应系统的各个状态,状态转换表的各列对应除起始状态外的其它状态。请参阅图2,图2示出了依据状态转换表生成0-Switch状态转换树的实现方式的流程示意图,可以包括:
    步骤S201:将起始状态作为根结点,为0-Switch状态转换树添加根结点,并将根结点所在的层次作为0-Switch状态转换树的第1层。
    步骤S202:从0-Switch状态转换树的第1层开始逐层为0-Switch状态转换树添加子结点。
    下面以第K层为例,给出为0-Switch状态转换树的第K层添加子结点的实现过程,图3示出了实现流程示意图,可以包括:
    步骤S301:按从左到右的顺序从第K层获取一个子结点作为第一结点。
    步骤S302:判断第一结点是否在第J层出现。
    其中,J为大于等于1的整数,K为大于等于1的整数,并且,J小于等于K。
    步骤S303a:如果第一结点在第J层出现,则确定第一结点为叶子结点,然后转入步骤S301。
    步骤S303b:如果第一结点未在第J层出现,判断第一结点是否能够和状态转换表中各列的状态进行转换。
    步骤S303ba:如果第一结点能和至少一列的状态进行转换,则将能够与第二结点转换的状态作为第一结点的子结点。
    需要说明的是,第一结点的子结点所在的层次为0-Switch状态转换树的第K+1层。
    步骤S303bb:如果第一结点和各列的状态均不能进行转换,则确定第一结点为叶子结点,然后转入步骤S301。
    下面通过一具体实例详细说明依据状态转换表生成0-Switch状态转换树的过程。
    以上表为例,假设①代表“起始状态”,②代表“初始化”,③代表“运行中”,④代表“暂停”,⑤代表“停止”,则依据状态转换表生成0-Switch状态转换树的过程具体为:
    (1)为状态转换树添加根结点
    将“代表起始状态”的①作为根结点。根结点①在状态转换树的第1层。
    (2)为状态转换树添加子结点
    为根结点添加子结点:通过状态转换表中第二行的状态转换信息可知,能够与“起始状态”转换的状态为“初始化”,即,将代表“初始化”的②作为①的子结点。②在状态转换树的第2层。
    由于位于第2层的②未在第1层出现过,因此,为代表“初始化”的②添加子结点:通过状态转换表中第三行的状态转换信息可知,能够与“初始化”转换的状态为“初始化”和“运行中”,即,将②和③作为②的子结点。②和③在状态转换树的第3层。由于位于状态转换树第3层的子结点②在第2层出现,因此,子结点②为状态转换树的叶子结点,不能再继续生成其它子结点。
    由于代表③未在第1层和第2层出现过,因此,为代表“运行中”的③添加子结点:通过状态转换表中第四行的状态转换信息可知,能够与“运行中”转换的状态为“暂停”和“停止”,即,将④和⑤作为③的子结点。④和⑤在状态转换树的第4层。
    由于④和⑤均未在第1~3层出现过,因此,分别为代表“暂停”的④和代表“停止”的⑤添加子结点:通过状态转换表中第五行的状态转换信息可知,能够与“暂停”转换的状态为“运行中”和“停止”,通过状态转换表中第六行的状态转换信息可知,能够与“停止”转换的状态为“初始化”和“运行中”,即,将②和③作为④的子结点,将②和③作为⑤的子结点。④的子结点③和⑤,⑤的子结点②和③在状态转换树的第5层。由于第5层的结点③在第2层出现,因此,结点③为叶子结点,由于第5层的结点⑤在第4层出现过,因此,结点⑤为叶子结点,由于第5层的结点②在第2层和第3层出现,因此,结点②为叶子结点,不能再继续生成其它子结点。
    通过上述过程生成的0-Switch状态转换树如图4所示。需要说明的是,通常情况下,生成0-Switch状态转换树即可,若想进一步加深探测强度,可生成1-Switch状态转换树。
    在面给出在图4的基础上生成1-Switch状态转换树的过程:
    图4中的0-Switch状态转换树的叶子结点为第三层的②和第五层的③、⑤、③、②。分别为各个叶子结点添加子结点,②的子结点为②、③,③的子结点为④、⑤,⑤的子结点为②、③,得到如图5所示的1-Switch状态转换树。②、③、④、⑤、②、③、④、⑤、②、③为1-Switch状态转换树的叶子结点。
    步骤S103:依据N-Switch状态转换树生成有效的状态转换测试路径。
    具体的,依据状态转换树生成有效的状态转换测试路径可以包括:从状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止;确定从叶子结点逐层寻找到根结点的路径为有效的状态转换测试路径。
    可以理解的是,有效的状态转换测试路径的数量与状态转换树中叶子结点的数量相同。N-Switch状态转换树确定后,有效的状态转换测试路径的数量也是唯一确定的。
    以图4的0-Switch状态转换树为例:叶子结点⑤的父结点为④,④的父结点为③,③的父结点为②,②的父结点为①,因此,①—②—③—④—⑤为0-Switch状态转换树的一条有效的状态转换测试路径。再以图5的1-Switch状态转换树为例:第六层的第五个叶子结点④的父结点为③,③的父结点为⑤,⑤的父结点为③,③的父结点为②,②的父结点为①,因此,①—②—③—⑤—③—④为1-Switch状态转换树的一条有效的状态转换测试路径。
    步骤S104:依据状态转换表生成无效的状态转换测试路径。
    在一种可能的实现方式中,依据状态转换表生成无效的状态转换测试路径具体为:对于状态转换表中的目标状态,通过状态转换信息确定不能与目标状态进行转换的状态;通过目标状态和确定出的不能与目标状态进行转换的状态生成无效的状态转换测试路径。
    在本实施例中,可以列表的形式存储无效的状态转换测试路径。以表1中第二行第一列的“起始状态”为例,通过第二行的状态转换信息“Y”、“N”、“N”、“N”,可知,与“起始状态”不能转换的状态为“运行中”、“暂停”和“停止”,将“起始状态”和与该“起始状态”对应的不能与之转换的状态“运行中”、“暂停”和“停止”存储在无效状态转换测试路径流表中,表1第一列中的其它状态同样如此。
    步骤S105:通过有效的状态转换测试路径和无效的状态转换测试路径生成状态转换测试用例集。
    具体的,通过有效的状态转换测试路径生成有效的状态转换测试用例集,通过无效的状态转换测试路径生成无效的状态转换测试用例集。
    需要说明的是,每条有效的状态转换测试路径对应一个有效的状态转换测试用例,所有有效的状态转换测试用例组成有效的状态转换测试用例集,每条无效的状态转换测试路径对应一个无效的状态转换测试用例,所有无效的状态转换测试用例组成无效的状态转换测试用例集。图6示出了通过表1生成的状态转换测试用例集,图6中包括了0-Switch有效状态转换测试用例集,1-Switch有效状态转换测试用例集,以及无效的状态转换测试用例集。
    本发明实施例提供的生成状态转换测试用例的方法,能覆盖系统的所有状态以及状态与状态之间的转换关系,保证了测试用例的完整性,并且,当状态转换表确定后,依据状态转换表生成的无效的状态转换测试路径是确定的,依据状态转换表生成的状态转换树是确定的,与状态转换树对应的有效的状态转换测试路径也是确定的,因此,保证了依据有效的状态转换测试路径和无效的状态转换测试路径生成的状态转换测试用例集也是唯一确定的,从而避免产生不同人设计出的测试用例不同的情况。另外,本发明实施例提供的方法可以大大减少人工分析生成状态转换测试用例的时间,提高设计状态转换测试用例的效率。
    与上述方法相对应,本发明实施例还提供了一种生成状态转换测试用例的装置70,图5示出了该装置70的结构示意图,可以包括:状态转换表生成模块701、状态转换树生成模块702、有效路径生成模块703、无效路径生成模块704和测试用例生成模块705。其中:
    状态转换表生成模块701,用于生成包括系统存在的各个状态和状态转换信息的状态转换表。
    其中,状态转换信息用于指示状态与状态之间是否能够进行转换。
    状态转换树生成模块702,用于依据状态转换表生成模块701生成的状态转换表生成N-Switch状态转换树。
    有效路径生成模块703,用于依据状态转换树生成模块702生成的N-Switch状态转换树生成有效的状态转换测试路径。
    无效路径生成模块704,用于依据状态转换表生成模块701生成的状态转换表生成无效的状态转换测试路径。
    测试用例生成模块705,用于通过有效路径生成模块703生成的有效的状态转换测试路径和无效路径生成模块704生成的无效的状态转换测试路径生成状态转换测试用例集。
    在一种可能的实现方式中,N-Switch状态转换树可以为0-Switch状态转换树,图8示出了状态转换树生成模块702的结构示意图,可以包括:0-Switch状态转换树生成子模块801。
    0-Switch状态转换树生成子模块801,用于依据状态转换表生成0-Switch状态转换树。
    在另一种可能的实现方式中,N-Switch状态转换树可以为1-Switch状态转换树,图9示出了状态转换树生成模块702的另一种结构示意图,可以包括:0-Switch状态转换树生成子模块801和1-Switch状态转换树生成子模块901。其中:
    0-Switch状态转换树生成子模块801,用于依据状态转换表生成0-Switch状态转换树。
    1-Switch状态转换树生成子模块901,用于依据状态转换表确定能够与0-Switch状态转换树生成子模块801生成的0-Switch状态转换树的叶子结点进行转换的状态,并将能够与0-Switch状态转换树的叶子结点转换的状态作为1-Switch状态转换树的叶子结点。
    进一步的,系统存在的各个状态至少包括起始状态,状态转换表的各行对应所述系统的各个状态,状态转换表的各列对应除起始状态外的其它状态。图10示出了0-Switch状态转换树生成子模块801的结构示意图,可以包括:根结点添加子模块1001和子结点添加子模块1002。其中:
    根结点添加子模块1001,用于将起始状态作为根结点,为0-Switch状态转换树添加根结点,并将根结点所在的层次作为0-Switch状态转换树的第1层。
    子结点添加子模块1002,用于从0-Switch状态转换树的第1层开始,依据状态转换表,利用广度搜索法按从左到右的顺序,确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行转换,如果第一结点已出现在第J层上,或者,第K层上的第一结点与各列的状态都不能进行转换,则 将第一结点作为0-Switch状态转换树的叶子结点,如果第K层上的第一结点能够与至少一列的状态进行转换,则将能够与第一结点转换的状态作为第一结点的子结点,直至确定出0-Switch状态转换树的所有叶子结点为止,其中,J小于等于K,所述叶子结点不具有子结点。
    进一步的,无效路径生成模块704,具体用于对于状态转换表中的目标状态,通过状态转换信息确定不能与目标状态进行转换的状态,通过目标状态和确定出的不能与目标状态进行转换的状态生成无效的状态转换测试路径。
    进一步的,有效路径生成模块703,具体用于从N-Switch状态转换树的叶子结点逐层寻找上一层的父结点,直至寻找到的父结点为根结点为止,确定从叶子结点逐层寻找到根结点的路径为有效的状态转换测试路径。其中,有效的状态转换测试路径的数量与状态转换树中叶子结点的数量相同。
    本发明实施例提供的生成状态转换测试用例的装置,能覆盖系统的所有状态以及状态与状态之间的转换关系,保证了测试用例的完整性,并且,当状态转换表确定后,依据状态转换表生成的无效的状态转换测试路径是确定的,依据状态转换表生成的状态转换树是确定的,与状态转换树对应的有效的状态转换测试路径也是确定的,因此,保证了依据有效的状态转换测试路径和无效的状态转换测试路径生成的状态转换测试用例集也是唯一确定的,从而避免产生不同人设计出的测试用例不同的情况。另外,本发明实施例提供的装置可以大大减少人工分析生成状态转换测试用例的时间,提高设计状态转换测试用例的效率。
    需要说明的是,对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
    还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备 所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
    为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
    对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

    关 键  词:
    一种 生成 状态 转换 测试 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种生成状态转换测试用例的方法及装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6180978.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1