论文导读::构件组装测试常常通过组合构件模型来实现,容易产生状态空间的爆炸,且生成用例会重复单元测试的一些工作。针对此问题,本文提出的通过生成交互路径来进行构件组装测试的方法,可以更有效的生成组装测试用例并能够避免模型组合时状态空间爆炸的问题。首先对单个构件的运行路径进行了分析,然后介绍了生成交互路径的过程与算法。实例分析证明,该方法拥有较好揭错能力,计算量小且具有通用性,更有利于节省系统开发的费用和时间。
论文关键词:构件测试,组装测试,交互路径,模型组合
1 引言
基于构件的软件开发技术(Component-Based SoftwareDevelopment, CBSD)是通过复用构件库中的构件,利用组装技术构造应用软件系统的过程。其中构件组装是CBSD的核心技术,相应的组装测试成为了保证系统质量的关键因素。组装测试的目的是验证各构件组合在一起后可以按照设定的方式协作运行,而且不同构件之间数据的传递满足系统的要求,它所测试的内容主要是构件接口间的交互操作和组装后的整体功能。对构件组装测试的研究由来已久,目前仍得到广泛的关注[1]。
单元测试仅仅保证了模块的局部正确性,实践表明大多数的缺陷在不同构件的交互处产生[2],这就需要在集成测试时更彻底和全面的测试构件之间的交互。目前的研究中,组装测试多是借助构件模型的组合来实现。如在[3]中作者用“构件状态机”来描述单个构件的行为,再根据构件之间的关系确定组装后的“构件软件流图”,以此为基础来生成测试用例;在[4]中用CIG(component interaction graph)表示不同构件的交互和依赖关系,再根据CIG生成相应的测试用例。此类研究多是从总体上分析系统的行为,通过某种形式的模型组合确定构件之间的交互关系。这样带来的主要问题是当包含较多状态的模型进行组合时,容易产生状态空间爆炸的问题,而且要求测试人员熟悉不同模型的相关知识,要求较高[5]。
2 基本概念
描述构件动态行为的模型有很多,如UML状态机、时序逻辑和Petri网等。接口自动机(Interface Automata)是一种在构件化设计中用来刻画接口时序特征的形式化语言,它采用“乐观方法”来定义组合问题,将环境假设和构件行为整合到同一个模型中,非常适合描述开放系统中的构件行为。因此,我们使用接口自动机来描述构件的动态行为。
定义1 (接口自动机):接口自动机 是一个六元组: ,
l 是状态的有穷集合;
l 是初始状态集,且 中至多包含一个元素;
l  分别为输入活动。输出活动和内部活动集合,且两两互不相交。所有活动的集合记为 , ;
l   是迁移的集合,将 记为 。
若有 (其中 , ),则称活动 在状态 上是使能的(enabled)。状态 上使能的输入活动的集合记为: { | , }。类似有 和 。
若| |=1,且 , ,则有 ,称 是确定性的;若 , ,其中 ,则称 为强连通的,本文假定研究所涉及的接口自动机都是确定性的。
定义2 (执行片段):接口自动机 的一个执行片段是其状态与活动交替排列的有穷序列 。任给两个状态 ,若存在一个执行片段,其第一个状态为 最后一个状态为 ,则称 从 可达。
定义3 (可组合):两个接口自动机 和 若满足条件: , , 且 ,则称它们是可组合的。令 。
1/4 1 2 3 4 下一页 尾页 |