《一种生成状态转换测试用例的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种生成状态转换测试用例的方法及装置.pdf(20页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103678138 A (43)申请公布日 2014.03.26 CN 103678138 A (21)申请号 201410003501.5 (22)申请日 2014.01.03 G06F 11/36(2006.01) (71)申请人 北京经纬恒润科技有限公司 地址 100101 北京市朝阳区安翔北里11号B 座 8 层 (72)发明人 殷红珍 陈义林 (74)专利代理机构 北京集佳知识产权代理有限 公司 11227 代理人 王宝筠 (54) 发明名称 一种生成状态转换测试用例的方法及装置 (57) 摘要 本申请提供了一种生成状态转换测试用例的 方法及装置, 方法包括。
2、 : 生成包括系统存在的各 个状态和状态转换信息的状态转换表, 状态转换 信息用于指示状态与状态之间是否能够进行转 换 ; 依据状态转换表生成 N-Switch 状态转换树, 并依据 N-Switch 状态转换树生成有效的状态转 换测试路径 ; 依据状态转换表生成无效的状态转 换测试路径 ; 通过有效的状态转换测试路径和无 效的状态转换测试路径生成状态转换测试用例 集。 本申请提供的方法及装置, 能覆盖系统的所有 状态以及状态与状态之间的转换关系, 因此能够 保证测试用例的充分性, 并且, 能够保证生成的状 态转换测试用例集的确定性和唯一性, 避免产生 不同人设计出的测试用例不同的情况。 (5。
3、1)Int.Cl. 权利要求书 3 页 说明书 10 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书10页 附图6页 (10)申请公布号 CN 103678138 A CN 103678138 A 1/3 页 2 1. 一种生成状态转换测试用例的方法, 其特征在于, 包括 : 生成包括系统存在的各个状态和状态转换信息的状态转换表, 所述状态转换信息用于 指示状态与状态之间是否能够进行转换 ; 依据所述状态转换表生成 N-Switch 状态转换树, 并依据所述 N-Switch 状态转换树生 成有效的状态转换测试路径 ; 依据所述状态转换表生。
4、成无效的状态转换测试路径 ; 通过所述有效的状态转换测试路径和所述无效的状态转换测试路径生成状态转换测 试用例集。 2.根据权利要求1所述的方法, 其特征在于, 所述N-Switch状态转换树为0-Switch状 态转换树或 1-Switch 状态转换树 ; 则当所述 N-Switch 状态转换树为 0-Switch 状态转换树时, 依据所述状态转换表生成 N-Switch 状态转换树, 具体为 : 依据所述状态转换表生成 0-Switch 状态转换树 ; 则当所述 N-Switch 状态转换树为 1-Switch 状态转换树时, 依据所述状态转换表生成 N-Switch 状态转换树, 具体为。
5、 : 依据所述状态转换表生成 0-Switch 状态转换树 ; 依据所述状态转换表确定能够与所述 0-Switch 状态转换树的叶子结点进行转换的状 态, 并将能够与所述 0-Switch 状态转换树的叶子结点转换的状态作为所述 1-Switch 状态 转换树的叶子结点。 3. 根据权利要求 2 所述的方法, 其特征在于, 所述系统存在的各个状态至少包括起始 状态, 所述状态转换表的各行对应所述系统的各个状态, 所述状态转换表的各列对应除所 述起始状态外的其它状态, 依据所述状态转换表生成 0-Switch 状态转换树, 具体为 : 将所述起始状态作为根结点, 为所述 0-Switch 状态转。
6、换树添加根结点, 并将所述根结 点所在的层次作为所述 0-Switch 状态转换树的第 1 层 ; 从所述 0-Switch 状态转换树的第 1 层开始, 依据所述状态转换表, 利用广度搜索法 按从左到右的顺序, 确定各层上的各个结点是否能够和所述状态转换表中各列的状态进行 转换, 如果所述第一结点已出现在第 J 层上, 或者, 所述第 K 层上的第一结点与各列的状态 都不能进行转换, 则将所述第一结点作为所述 0-Switch 状态转换树的叶子结点, 如果所述 第 K 层上的第一结点能够与至少一列的状态进行转换, 则将能够与所述第一结点转换的状 态作为所述第一结点的子结点, 直至确定出 0-。
7、Switch 状态转换树的所有叶子结点为止, 其 中, J 小于等于 K, 所述叶子结点不具有子结点。 4.根据权利要求13中任意一项所述的方法, 其特征在于, 依据所述状态转换表中生 成无效的转换测试路径, 具体为 : 对于所述状态转换表中的目标状态, 通过所述状态转换信息确定不能与所述目标状态 进行转换的状态 ; 通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的状态 转换测试路径。 5. 根据权利要求 1 3 中任意一项所述的方法, 其特征在于, 依据所述 N-Switch 状态 转换树生成有效的状态转换测试路径, 具体为 : 权 利 要 求 书 CN 10367813。
8、8 A 2 2/3 页 3 从所述 N-Switch 状态转换树的叶子结点逐层寻找上一层的父结点, 直至寻找到的父 结点为根结点为止 ; 确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径, 所述 有效的状态转换测试路径的数量与所述 N-Switch 状态转换树中叶子结点的数量相同。 6. 一种生成状态转换测试用例的装置, 其特征在于, 包括 : 状态转换表生成模块, 用于生成包括系统存在的各个状态和状态转换信息的状态转换 表, 所述状态转换信息用于指示状态与状态之间是否能够进行转换 ; 状态转换树生成模块, 用于依据所述状态转换表生成模块生成的所述状态转换表生成 N-Swi。
9、tch 状态转换树 ; 有效路径生成模块, 用于依据所述状态转换树生成模块生成的所述 N-Switch 状态转 换树生成有效的状态转换测试路径 ; 无效路径生成模块, 用于依据所述状态转换表生成模块生成的所述状态转换表生成无 效的状态转换测试路径 ; 测试用例生成模块, 用于通过所述有效路径生成模块生成的所述有效的状态转换测试 路径和所述无效路径生成模块生成的所述无效的状态转换测试路径生成状态转换测试用 例集。 7.根据权利要求6所述的装置, 其特征在于, 所述N-Switch状态转换树为0-Switch状 态转换树或 1-Switch 状态转换树 ; 则当所述 N-Switch 状态转换树为。
10、 1-Switch 状态转换树时, 所述状态转换树生成模块 包括 : 0-Switch 状态转换树生成子模块, 用于依据所述状态转换表生成 0-Switch 状态转换 树 ; 则当所述 N-Switch 状态转换树为 1-Switch 状态转换树时, 所述状态转换树生成模块 包括 : 0-Switch 状态转换树生成子模块, 用于依据所述状态转换表生成 0-Switch 状态转换 树 ; 1-Switch 状态转换树生成子模块, 用于依据所述状态转换表确定能够与所述 0-Switch 状态转换树的叶子结点进行转换的状态, 并将能够与所述 0-Switch 状态转换树 的叶子结点转换的状态作为所。
11、述 1-Switch 状态转换树的叶子结点。 8. 根据权利要求 7 所述的装置, 其特征在于, 所述系统存在的各个状态至少包括起始 状态, 所述状态转换表的各行对应所述系统的各个状态, 所述状态转换表的各列对应除所 述起始状态外的其它状态 ; 则所述 0-Switch 状态转换树生成子模块, 包括 : 根结点添加子模块, 用于将所述起始状态作为根结点, 为所述 0-Switch 状态转换树添 加根结点, 并将所述根结点所在的层次作为所述 0-Switch 状态转换树的第 1 层 ; 子结点添加子模块, 用于从所述 0-Switch 状态转换树的第 1 层开始, 依据所述状态转 换表, 利用广。
12、度搜索法按从左到右的顺序, 确定各层上的各个结点是否能够和所述状态转 换表中各列的状态进行转换, 如果所述第一结点已出现在第 J 层上, 或者, 所述第 K 层上的 第一结点与各列的状态都不能进行转换, 则将所述第一结点作为所述 0-Switch 状态转换 权 利 要 求 书 CN 103678138 A 3 3/3 页 4 树的叶子结点, 如果所述第 K 层上的第一结点能够与至少一列的状态进行转换, 则将能够 与所述第一结点转换的状态作为所述第一结点的子结点, 直至确定出 0-Switch 状态转换 树的所有叶子结点为止, 其中, J 小于等于 K, 所述叶子结点不具有子结点。 9. 根据权。
13、利要求 6 8 中任意一项所述的装置, 其特征在于, 所述无效路径生成模块路径, 具体用于对于所述状态转换表中的目标状态, 通过所述 状态转换信息确定不能与所述目标状态进行转换的状态, 通过所述目标状态和确定出的不 能与所述目标状态进行转换的状态生成无效的状态转换测试路径。 10. 根据权利要求 6 8 中任意一项所述的装置, 其特征在于, 所述有效路径生成模块, 具体用于从所述 N-Switch 状态转换树的叶子结点逐层寻找 上一层的父结点, 直至寻找到的父结点为根结点为止, 确定从所述叶子结点逐层寻找到所 述根结点的路径为有效的状态转换测试路径, 所述有效的状态转换测试路径的数量与所述 N。
14、-Switch 状态转换树中叶子结点的数量相同。 权 利 要 求 书 CN 103678138 A 4 1/10 页 5 一种生成状态转换测试用例的方法及装置 技术领域 0001 本发明涉及软件测试技术领域, 尤其涉及一种生成状态转换测试用例的方法及装 置。 背景技术 0002 在软件测试中, 当被测对象有多个状态时, 各个状态之间存在一定的逻辑转换关 系, 状态与状态之间的转换由事件来触发或者由一些动作来产生, 为了充分验证事件、 动 作、 状态与状态转换之间的关系, 以及系统对输入事件是否能做出正确的响应, 需要采用一 定的方法和技术来设计测试用例。 0003 现有技术中所使用的最简单直接。
15、的方法是根据系统的需求及设计, 采用穷举法列 出系统中可能的状态转换场景, 形成相应的测试用例。发明人在实现本发明创造的过程中 发现 : 现有技术中通过穷举法设计的测试用例, 具有较大的随意性, 有可能会漏掉一些状态 转换路径, 不能保证测试用例的完整性。 发明内容 0004 有鉴于此, 本发明提供了一种生成状态转换测试用例的方法及装置, 用以解决现 有技术中通过穷举法设计的测试用例, 具有较大的随意性, 有可能会漏掉一些状态转换路 径, 不能保证测试用例的完整性的问题, 其技术方案如下 : 0005 一种生成状态转换测试用例的方法, 包括 : 0006 生成包括系统存在的各个状态和状态转换信。
16、息的状态转换表, 所述状态转换信息 用于指示状态与状态之间是否能够进行转换 ; 0007 依据所述状态转换表生成 N-Switch 状态转换树, 并依据所述 N-Switch 状态转换 树生成有效的状态转换测试路径 ; 0008 依据所述状态转换表生成无效的状态转换测试路径 ; 0009 通过所述有效的状态转换测试路径和所述无效的状态转换测试路径生成状态转 换测试用例集。 0010 其中, 所述 N-Switch 状态转换树为 0-Switch 状态转换树或 1-Switch 状态转换 树 ; 0011 则当所述 N-Switch 状态转换树为 0-Switch 状态转换树时, 依据所述状态转。
17、换表 生成 N-Switch 状态转换树, 具体为 : 0012 依据所述状态转换表生成 0-Switch 状态转换树 ; 0013 则当所述 N-Switch 状态转换树为 1-Switch 状态转换树时, 依据所述状态转换表 生成 N-Switch 状态转换树, 具体为 : 0014 依据所述状态转换表生成 0-Switch 状态转换树 ; 0015 依据所述状态转换表确定能够与所述 0-Switch 状态转换树的叶子结点进行转换 的状态, 并将能够与所述 0-Switch 状态转换树的叶子结点转换的状态作为所述 1-Switch 说 明 书 CN 103678138 A 5 2/10 页。
18、 6 状态转换树的叶子结点。 0016 其中, 所述系统存在的各个状态至少包括起始状态, 所述状态转换表的各行对应 所述系统的各个状态, 所述状态转换表的各列对应除所述起始状态外的其它状态 ; 0017 则所述 0-Switch 状态转换树生成子模块, 包括 : 0018 根结点添加子模块, 用于将所述起始状态作为根结点, 为所述 0-Switch 状态转换 树添加根结点, 并将所述根结点所在的层次作为所述 0-Switch 状态转换树的第 1 层 ; 0019 子结点添加子模块, 用于从所述 0-Switch 状态转换树的第 1 层开始, 依据所述状 态转换表, 利用广度搜索法按从左到右的顺。
19、序, 确定各层上的各个结点是否能够和所述状 态转换表中各列的状态进行转换, 如果所述第一结点已出现在第 J 层上, 或者, 所述第 K 层 上的第一结点与各列的状态都不能进行转换, 则将所述第一结点作为所述 0-Switch 状态 转换树的叶子结点, 如果所述第 K 层上的第一结点能够与至少一列的状态进行转换, 则将 能够与所述第一结点转换的状态作为所述第一结点的子结点, 直至确定出 0-Switch 状态 转换树的所有叶子结点为止, 其中, J 小于等于 K, 所述叶子结点不具有子结点。 0020 其中, 依据所述状态转换表中生成无效的转换测试路径, 具体为 : 0021 对于所述状态转换表。
20、中的目标状态, 通过所述状态转换信息确定不能与所述目标 状态进行转换的状态 ; 0022 通过所述目标状态和确定出的不能与所述目标状态进行转换的状态生成无效的 状态转换测试路径。 0023 其中, 依据所述 N-Switch 状态转换树生成有效的状态转换测试路径, 具体为 : 0024 从所述 N-Switch 状态转换树的叶子结点逐层寻找上一层的父结点, 直至寻找到 的父结点为根结点为止 ; 0025 确定从所述叶子结点逐层寻找到所述根结点的路径为有效的状态转换测试路径, 所述有效的状态转换测试路径的数量与所述 N-Switch 状态转换树中叶子结点的数量相 同。 0026 一种生成状态转换。
21、测试用例的装置, 包括 : 0027 状态转换表生成模块, 用于生成包括系统存在的各个状态和状态转换信息的状态 转换表, 所述状态转换信息用于指示状态与状态之间是否能够进行转换 ; 0028 状态转换树生成模块, 用于依据所述状态转换表生成模块生成的所述状态转换表 生成 N-Switch 状态转换树 ; 0029 有效路径生成模块, 用于依据所述状态转换树生成模块生成的所述 N-Switch 状 态转换树生成有效的状态转换测试路径 ; 0030 无效路径生成模块, 用于依据所述状态转换表生成模块生成的所述状态转换表生 成无效的状态转换测试路径 ; 0031 测试用例生成模块, 用于通过所述有效。
22、路径生成模块生成的所述有效的状态转换 测试路径和所述无效路径生成模块生成的所述无效的状态转换测试路径生成状态转换测 试用例集。 0032 其中, 所述 N-Switch 状态转换树为 0-Switch 状态转换树或 1-Switch 状态转换 树 ; 0033 则当所述 N-Switch 状态转换树为 1-Switch 状态转换树时, 所述状态转换树生成 说 明 书 CN 103678138 A 6 3/10 页 7 模块包括 : 0034 0-Switch 状态转换树生成子模块, 用于依据所述状态转换表生成 0-Switch 状态 转换树 ; 0035 则当所述 N-Switch 状态转换树。
23、为 1-Switch 状态转换树时, 所述状态转换树生成 模块包括 : 0036 0-Switch 状态转换树生成子模块, 用于依据所述状态转换表生成 0-Switch 状态 转换树 ; 0037 1-Switch 状态转换树生成子模块, 用于依据所述状态转换表确定能够与所述 0-Switch 状态转换树的叶子结点进行转换的状态, 并将能够与所述 0-Switch 状态转换树 的叶子结点转换的状态作为所述 1-Switch 状态转换树的叶子结点。 0038 其中, 所述系统存在的各个状态至少包括起始状态, 所述状态转换表的各行对应 所述系统的各个状态, 所述状态转换表的各列对应除所述起始状态外。
24、的其它状态 ; 0039 则所述 0-Switch 状态转换树生成子模块, 具体用于将所述起始状态作为根结点, 并将所述根结点所在的层次作为所述 0-Switch 状态转换树的第 1 层, 从所述 0-Switch 状 态转换树的第 1 层开始, 依据所述状态转换表, 利用广度搜索法按从左到右的顺序, 确定各 层上的各个结点是否能够和所述状态转换表中各列的状态进行转换, 如果所述第一结点已 出现在第 J 层上, 或者, 所述第 K 层上的第一结点与各列的状态都不能进行转换, 则将所述 第一结点作为所述0-Switch状态转换树的叶子结点, 如果所述第K层上的第一结点能够与 至少一列的状态进行转。
25、换, 则将能够与所述第一结点转换的状态作为所述第一结点的子结 点, 直至确定出0-Switch状态转换树的所有叶子结点为止, 其中, J小于等于K, 所述叶子结 点不具有子结点。 0040 其中, 所述无效路径生成模块路径, 具体用于对于所述状态转换表中的目标状态, 通过所述状态转换信息确定不能与所述目标状态进行转换的状态, 通过所述目标状态和确 定出的不能与所述目标状态进行转换的状态生成无效的状态转换测试路径。 0041 其中, 所述有效路径生成模块, 具体用于从所述 N-Switch 状态转换树的叶子结点 逐层寻找上一层的父结点, 直至寻找到的父结点为根结点为止, 确定从所述叶子结点逐层 。
26、寻找到所述根结点的路径为有效的状态转换测试路径, 所述有效的状态转换测试路径的数 量与所述 N-Switch 状态转换树中叶子结点的数量相同。 0042 上述技术方案具有如下有益效果 : 0043 本发明提供的生成状态转换测试用例的方法及装置, 可依据系统存在的状态以及 状态与状态之间的转换关系生成状态转换表, 通过状态转换表可生成有效的状态转换测试 路径和无效的状态转换测试路径, 最终通过有效的状态转换测试路径和无效的状态转换测 试路径生成状态转换测试用例集。 本发明提供的方法及装置能覆盖系统的所有状态以及状 态与状态之间的转换关系, 能保证测试用例的完整性, 并且, 在状态转换表确定后, 。
27、依据状 态转换表生成的无效的状态转换测试路径是确定的, 依据状态转换表生成的状态转换树是 确定的, 与状态转换树对应的有效的状态转换测试路径也是确定的, 因此, 保证了依据有效 的状态转换测试路径和无效的状态转换测试路径生成的状态转换测试用例集也是唯一确 定的, 从而避免产生不同人设计出的测试用例不同的情况。 另外, 本发明实施例提供的方法 和装置还可大大减少人工分析生成状态转换测试用例的时间, 提高设计状态转换测试用例 说 明 书 CN 103678138 A 7 4/10 页 8 的效率。 附图说明 0044 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术。
28、描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 发明的实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据 提供的附图获得其他的附图。 0045 图 1 为本发明实施例提供的一种生成状态转换测试用例的方法的流程示意图 ; 0046 图 2 为本发明实施例提供的生成状态转换测试用例的方法中, 依据状态转换表生 成 0-Switch 状态转换树的实现方式的流程示意图 ; 0047 图3为本发明实施例提供的生成状态转换测试用例的方法中, 为0-Switch状态转 换的第 K 层结点添加子结点的实现方式的流程示意图 ; 0048 图 4 为依据。
29、表 1 生成的 0-Switch 状态转换树示意图 ; 0049 图 5 为依据表 1 生成的 1-Switch 状态转换树示意图 ; 0050 图 6 为通过本发明实施例提供的生成状态转换测试用例的方法生成的测试用例 示意图 ; 0051 图 7 为本发明实施例提供的生成状态转换测试用例的装置 50 的结构示意图 ; 0052 图 8 为本发明实施例提供的生成状态转换测试用例的装置 70 中状态转换树生成 模块 702 的一种结构示意图 ; 0053 图 9 为本发明实施例提供的生成状态转换测试用例的装置 70 中状态转换树生成 模块 702 的另一种结构示意图 ; 0054 图 10 为本。
30、发明实施例提供的状态转换树生成模块 702 中 0-Switch 状态转换树生 成子模块 801 的结构示意图。 具体实施方式 0055 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。 0056 请参阅图 1, 为本发明实施例提供的一种生成状态转换测试用例的方法的流程示 意图, 该方法可以包括 : 0057 步骤 S101 : 生成状态转换表。 0058 其中, 。
31、状态转换表包括系统存在的各个状态和状态转换信息, 状态转换信息用于 指示状态与状态之间是否能够进行转换。 0059 在本实施例中, 生成状态转换表具体为 : 根据被测对象的需求分析及设计内容, 分 析系统中存在哪些状态, 状态与状态之间是否能够进行转换, 然后基于分析结果生成状态 转换表。 0060 示例性的, 系统中存在的状态可以包括初始状态、 初始化、 运行中、 暂停和停止。 生 成的状态转换表如表 1 所示 : 说 明 书 CN 103678138 A 8 5/10 页 9 0061 表 1 0062 初始化运行中 暂停停止 起始状态 YNNN 初始化YYNN 运行中NNYY 暂停NYN。
32、Y 停止YYNN 0063 0064 其中, 表 1 中的第一列为系统存在的 5 种状态, 表中的 “Y” 和 “X” 为状态转换信息, 其中,“Y” 表示状态与状态之间能够进行转换,“N” 表示状态与状态之间不能进行转换。例 如, 表格中第二行的第一个 “Y” 表示 “初始状态” 能够转换到 “初始化” 。 0065 在本实施例中, 将系统的需求及设计用状态转换表的形式表现出来, 简洁直观, 同 时能很容易地识别出系统中无效的状态转换和有效的状态转换。 0066 步骤 S102 : 依据状态转换表生成 N-Switch 状态转换树。 0067 在一种可能的实现方式中, N-Switch 状态。
33、转换树可以为 0-Switch 状态转换树, 则, 依据状态转换表生成N-Switch状态转换树具体为 : 依据状态转换表生成0-Switch状态 转换树。 0068 在另一种可能的实现方式中, N-Switch 状态转换树可以为 1-Switch 状态转换树。 需要说明的是, 1-Switch 状态转换树在 0-Switch 状态转换树的基础上生成。则, 依据状态 转换表生成 1-Switch 状态转换树具体为 : 依据状态转换表生成 0-Switch 状态转换树, 为 0-Switch 状态转换树的叶子结点添加一层子结点, 得到 1-Switch 状态转换树, 具体的, 依 据状态转换表确。
34、定能够与 0-Switch 状态转换树的叶子结点进行转换的状态, 并将能够与 0-Switch 状态转换树的叶子结点转换的状态作为 1-Switch 状态转换树的叶子结点。 0069 在本实施例中, 系统存在的各个状态至少包括起始状态, 状态转换表的各行对应 系统的各个状态, 状态转换表的各列对应除起始状态外的其它状态。请参阅图 2, 图 2 示出 了依据状态转换表生成 0-Switch 状态转换树的实现方式的流程示意图, 可以包括 : 0070 步骤 S201 : 将起始状态作为根结点, 为 0-Switch 状态转换树添加根结点, 并将根 结点所在的层次作为 0-Switch 状态转换树的。
35、第 1 层。 0071 步骤 S202 : 从 0-Switch 状态转换树的第 1 层开始逐层为 0-Switch 状态转换树添 加子结点。 0072 下面以第 K 层为例, 给出为 0-Switch 状态转换树的第 K 层添加子结点的实现过 程, 图 3 示出了实现流程示意图, 可以包括 : 0073 步骤 S301 : 按从左到右的顺序从第 K 层获取一个子结点作为第一结点。 0074 步骤 S302 : 判断第一结点是否在第 J 层出现。 说 明 书 CN 103678138 A 9 6/10 页 10 0075 其中, J 为大于等于 1 的整数, K 为大于等于 1 的整数, 并且。
36、, J 小于等于 K。 0076 步骤 S303a : 如果第一结点在第 J 层出现, 则确定第一结点为叶子结点, 然后转入 步骤 S301。 0077 步骤 S303b : 如果第一结点未在第 J 层出现, 判断第一结点是否能够和状态转换表 中各列的状态进行转换。 0078 步骤 S303ba : 如果第一结点能和至少一列的状态进行转换, 则将能够与第二结点 转换的状态作为第一结点的子结点。 0079 需要说明的是, 第一结点的子结点所在的层次为 0-Switch 状态转换树的第 K+1 层。 0080 步骤 S303bb : 如果第一结点和各列的状态均不能进行转换, 则确定第一结点为叶 子。
37、结点, 然后转入步骤 S301。 0081 下面通过一具体实例详细说明依据状态转换表生成 0-Switch 状态转换树的过 程。 0082 以上表为例, 假设代表 “起始状态” , 代表 “初始化” , 代表 “运行中” , 代表 “暂停” , 代表 “停止” , 则依据状态转换表生成 0-Switch 状态转换树的过程具体为 : 0083 (1) 为状态转换树添加根结点 0084 将 “代表起始状态” 的作为根结点。根结点在状态转换树的第 1 层。 0085 (2) 为状态转换树添加子结点 0086 为根结点添加子结点 : 通过状态转换表中第二行的状态转换信息可知, 能够与 “起 始状态” 。
38、转换的状态为 “初始化” , 即, 将代表 “初始化” 的作为的子结点。在状态转换 树的第 2 层。 0087 由于位于第 2 层的未在第 1 层出现过, 因此, 为代表 “初始化” 的添加子结点 : 通过状态转换表中第三行的状态转换信息可知, 能够与 “初始化” 转换的状态为 “初始化” 和 “运行中” , 即, 将和作为的子结点。和在状态转换树的第 3 层。由于位于状态转 换树第 3 层的子结点在第 2 层出现, 因此, 子结点为状态转换树的叶子结点, 不能再继 续生成其它子结点。 0088 由于代表未在第 1 层和第 2 层出现过, 因此, 为代表 “运行中” 的添加子结点 : 通过状态。
39、转换表中第四行的状态转换信息可知, 能够与 “运行中” 转换的状态为 “暂停” 和 “停止” , 即, 将和作为的子结点。和在状态转换树的第 4 层。 0089 由于和均未在第 1 3 层出现过, 因此, 分别为代表 “暂停” 的和代表 “停 止” 的添加子结点 : 通过状态转换表中第五行的状态转换信息可知, 能够与 “暂停” 转换的 状态为 “运行中” 和 “停止” , 通过状态转换表中第六行的状态转换信息可知, 能够与 “停止” 转换的状态为 “初始化” 和 “运行中” , 即, 将和作为的子结点, 将和作为的子结 点。的子结点和, 的子结点和在状态转换树的第 5 层。由于第 5 层的结点。
40、 在第 2 层出现, 因此, 结点为叶子结点, 由于第 5 层的结点在第 4 层出现过, 因此, 结点 为叶子结点, 由于第 5 层的结点在第 2 层和第 3 层出现, 因此, 结点为叶子结点, 不能 再继续生成其它子结点。 0090 通过上述过程生成的 0-Switch 状态转换树如图 4 所示。需要说明的是, 通常情况 下, 生成 0-Switch 状态转换树即可, 若想进一步加深探测强度, 可生成 1-Switch 状态转换 说 明 书 CN 103678138 A 10 7/10 页 11 树。 0091 在面给出在图 4 的基础上生成 1-Switch 状态转换树的过程 : 0092。
41、 图 4 中的 0-Switch 状态转换树的叶子结点为第三层的和第五层的、 、 、 。分别为各个叶子结点添加子结点, 的子结点为、 , 的子结点为、 , 的子结 点为、 , 得到如图 5 所示的 1-Switch 状态转换树。、 、 、 、 、 、 、 、 、 为 1-Switch 状态转换树的叶子结点。 0093 步骤 S103 : 依据 N-Switch 状态转换树生成有效的状态转换测试路径。 0094 具体的, 依据状态转换树生成有效的状态转换测试路径可以包括 : 从状态转换树 的叶子结点逐层寻找上一层的父结点, 直至寻找到的父结点为根结点为止 ; 确定从叶子结 点逐层寻找到根结点的路。
42、径为有效的状态转换测试路径。 0095 可以理解的是, 有效的状态转换测试路径的数量与状态转换树中叶子结点的数量 相同。N-Switch 状态转换树确定后, 有效的状态转换测试路径的数量也是唯一确定的。 0096 以图4的0-Switch状态转换树为例 : 叶子结点的父结点为, 的父结点为, 的父结点为, 的父结点为, 因此, 为 0-Switch 状态转换树的 一条有效的状态转换测试路径。再以图 5 的 1-Switch 状态转换树为例 : 第六层的第五个叶 子结点的父结点为, 的父结点为, 的父结点为, 的父结点为, 的父结点 为, 因此, 为 1-Switch 状态转换树的一条有效的状态。
43、转换测试 路径。 0097 步骤 S104 : 依据状态转换表生成无效的状态转换测试路径。 0098 在一种可能的实现方式中, 依据状态转换表生成无效的状态转换测试路径具体 为 : 对于状态转换表中的目标状态, 通过状态转换信息确定不能与目标状态进行转换的状 态 ; 通过目标状态和确定出的不能与目标状态进行转换的状态生成无效的状态转换测试路 径。 0099 在本实施例中, 可以列表的形式存储无效的状态转换测试路径。以表 1 中第二行 第一列的 “起始状态” 为例, 通过第二行的状态转换信息 “Y” 、“N” 、“N” 、“N” , 可知, 与 “起始 状态” 不能转换的状态为 “运行中” 、“。
44、暂停” 和 “停止” , 将 “起始状态” 和与该 “起始状态” 对 应的不能与之转换的状态 “运行中” 、“暂停” 和 “停止” 存储在无效状态转换测试路径流表 中, 表 1 第一列中的其它状态同样如此。 0100 步骤 S105 : 通过有效的状态转换测试路径和无效的状态转换测试路径生成状态 转换测试用例集。 0101 具体的, 通过有效的状态转换测试路径生成有效的状态转换测试用例集, 通过无 效的状态转换测试路径生成无效的状态转换测试用例集。 0102 需要说明的是, 每条有效的状态转换测试路径对应一个有效的状态转换测试用 例, 所有有效的状态转换测试用例组成有效的状态转换测试用例集, 。
45、每条无效的状态转换 测试路径对应一个无效的状态转换测试用例, 所有无效的状态转换测试用例组成无效的 状态转换测试用例集。图 6 示出了通过表 1 生成的状态转换测试用例集, 图 6 中包括了 0-Switch 有效状态转换测试用例集, 1-Switch 有效状态转换测试用例集, 以及无效的状态 转换测试用例集。 0103 本发明实施例提供的生成状态转换测试用例的方法, 能覆盖系统的所有状态以及 说 明 书 CN 103678138 A 11 8/10 页 12 状态与状态之间的转换关系, 保证了测试用例的完整性, 并且, 当状态转换表确定后, 依据 状态转换表生成的无效的状态转换测试路径是确定。
46、的, 依据状态转换表生成的状态转换树 是确定的, 与状态转换树对应的有效的状态转换测试路径也是确定的, 因此, 保证了依据有 效的状态转换测试路径和无效的状态转换测试路径生成的状态转换测试用例集也是唯一 确定的, 从而避免产生不同人设计出的测试用例不同的情况。 另外, 本发明实施例提供的方 法可以大大减少人工分析生成状态转换测试用例的时间, 提高设计状态转换测试用例的效 率。 0104 与上述方法相对应, 本发明实施例还提供了一种生成状态转换测试用例的装置 70, 图 5 示出了该装置 70 的结构示意图, 可以包括 : 状态转换表生成模块 701、 状态转换树 生成模块702、 有效路径生成。
47、模块703、 无效路径生成模块704和测试用例生成模块705。 其 中 : 0105 状态转换表生成模块 701, 用于生成包括系统存在的各个状态和状态转换信息的 状态转换表。 0106 其中, 状态转换信息用于指示状态与状态之间是否能够进行转换。 0107 状态转换树生成模块 702, 用于依据状态转换表生成模块 701 生成的状态转换表 生成 N-Switch 状态转换树。 0108 有效路径生成模块 703, 用于依据状态转换树生成模块 702 生成的 N-Switch 状态 转换树生成有效的状态转换测试路径。 0109 无效路径生成模块 704, 用于依据状态转换表生成模块 701 生。
48、成的状态转换表生 成无效的状态转换测试路径。 0110 测试用例生成模块 705, 用于通过有效路径生成模块 703 生成的有效的状态转换 测试路径和无效路径生成模块 704 生成的无效的状态转换测试路径生成状态转换测试用 例集。 0111 在一种可能的实现方式中, N-Switch 状态转换树可以为 0-Switch 状态转换树, 图 8示出了状态转换树生成模块702的结构示意图, 可以包括 : 0-Switch状态转换树生成子模 块 801。 0112 0-Switch状态转换树生成子模块801, 用于依据状态转换表生成0-Switch状态转 换树。 0113 在另一种可能的实现方式中, N-Switch 状态转换树可以为 1-Switch 状态转换树, 图 9 示出了状态转换树生成模块 702 的另一种结构示意图, 可以包括 : 0-Switch 状态转换 树生成子模块 801 和 1-Switch 状态转换树生成子模块 901。其中 : 0114 0-Switch状态转换树生成子模块801, 用于依据状态转换表生成0-Switch状态转 换树。 0115 1-Switch 状态转换树生成子模块 901, 用于依据状态转换表确定能够与 0-Switch 状态转换树生成子模块801。