论文部分内容阅读
随着计算机的迅速发展,软件复杂性逐渐增大,软件质量问题受到越来越多的关注。软件测试是保障软件质量的关键技术,研究表明测试通常占总的开发费用的50%,因此有效的软件测试对软件质量和成本都有着重要的意义。统一建模语言(Unified Modeling Language,UML)是目前广泛应用于面向对象软件开发整个过程中的一种强大的可视化表示语言,基于UML的测试研究成为近年来的研究热点。本文对基于UML状态图的测试生成进行了深入地研究和探讨。由于对软件进行建模的UML状态图大多是含有层次和并发结构的,而较成熟的测试生成研究一般是基于不含层次和并发的有限状态机(Finite State Machine,FSM)或是流图的测试。因此本文的思想是首先对层次状态图进行展平,消除其层次和并发结构,然后用传统的测试方法来进行软件测试生成。本文首先对层次UML状态图的语义进行了研究,由于UML标准文档给出的语义是半形式化的,本文提出了层次状态图的形式化语义,并提出了展平状态图所需的语义。UML状态图的形式化语义更为精确,并且语义研究是展平状态图的基础,符合状态图语义的展平才是与原状态图等价的。本文提出了层次状态图的测试生成算法,提出了用SCC树(State ConfigurationConstructing Tree)形象地描述状态图的层次、并发和组成的结构,并提出了在SCC树的基础上生成状态格局集合的算法。此外,把层次状态图的状态节点转化为状态格局后,本文提出了一种对格局间迁移的生成算法,即对原来的层次状态图中的迁移进行划分和计算,有效地避免了迁移冲突,明确了格局间的迁移关系。测试充分性准则对软件测试有着重要的意义,软件测试不可能做到穷尽测试,只能是选用较少的但却最有效的测试数据,来做到尽可能完备的测试。因此本文提出具体对应于展平状态图的测试覆盖准则:格局覆盖准则、格局迁移覆盖准则、监护条件谓词覆盖准则、格局迁移对覆盖准则,针对不同的测试目的可以选择不同的测试覆盖准则。针对展平后的状态图,我们研究了其测试生成方法,主要是基于数据流和FSM的测试生成。最后用一个ThrustLimitation的例子清晰地描述了基于UML状态图的测试生成的全过程。