论文部分内容阅读
软件测试是软件开发过程中极其重要的一环,是保证软件质量、提高软件可靠性的关键。研究软件测试理论和高效的软件测试技术以提高软件质量、降低软件生产成本成为软件工程的一个研究热点。
自上世纪80年代以来,面向对象技术迅速发展,获得了越来越广泛的应用。面向对象技术所独有的抽象、继承、封装、多态等新特点能够产生更好的系统结构,更规范的编程风格,极大地优化了数据使用的安全性,提高了程序代码的重用,但同时也增加了软件的复杂度和测试的难度,使得传统的软件测试技术不能直接应用于面向对象的软件测试。因此,针对面向对象系统的软件测试的研究受到了越来越多的重视。统一建模语言UML的出现,成为面向对象技术各方面的强有力的推动力量,为面向对象软件测试提供了一个新的研究方向。
UML(UnifiedModelingLanguage)是一种定义良好,易于表达,功能强大且普遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术,不仅可以支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。自从它在1997年被OMG采纳作为基于面向对象技术的标准建模语言后,就得到学术界的推崇和工业界的支持并广为使用。因此,基于UML的方法和实用技术的研究成为将来一段时间的发展趋势。由于UML模型在设计阶段就可以产生,通过UML模型生成测试用例可充分利用已有的设计结果,减少软件测试的总成本,对于已使用UML的工业界有着重要的意义。
UML顺序图是基于UML开发的软件设计模型的重要组成部分,它描述了软件系统的动态行为,是软件集成测试过程中的一个重要的信息来源。本文在介绍了软件测试和UML的基础上,提出了一个基于顺序图场景的测试衡量标准(测试覆盖准则),并给出了一个基于UML顺序图的场景测试方法及相应的自动生成测试用例的工具原型。它以UML顺序图为主要测试模型,首先通过对顺序图的形式化定义,将一个顺序图转化成一个以事件为节点的DAG图,对DAG图进行深度优先遍历可以方便地得到所有的测试场景;然后遍历每一个场景以获取各个场景的约束条件、输入和预期输出;在此过程中,结合UML状态图,将对象的状态信息添加到顺序图中,避免了从单个模型图中生成测试用例的不足;最后根据类图、状态图和顺序图的规约信息,采用范畴-划分方法的思想找到与每一场景相关的环境条件并将它与方法序列、输入、输出合理组合作为覆盖该场景的测试用例,用于测试该场景中对象之间的交互。