论文部分内容阅读
基于组件的软件工程正逐渐被人们用来进行软件开发,这种把可重用的组件作为构建软件块的方法使得软件系统的扩展和改进变得非常容易.同时,它提高了软件的质量和生产效率.虽然人们在开发基于组件的软件系统方面取得了颇有成效的进展,但是在测试基于组件的软件方面进展却缓慢.而测试又是软件开发过程中的一个不可缺少的重要阶段.在这个阶段中,通过实际运行程序发现软件自身所存在的缺陷.然而,由于基于组件的软件自身的一些特点,传统的一些测试方法通常不能直接用来测试基于组件的软件.例如,由于组件实现的透明性,组件的源码通常是不可用的,在这种情况下,基于源码的白盒测试就不能直接用来测试.因而就非常需要一些新的技术测试和维护基于组件的软件.本文提出一种测试基于组件的软件方法,它首先假设每个组件是面向对象的,即组件由有状态和行为的对象组成.状态由每个对象的状态变量决定,行为则由那些对一个或者多个对象进行读取操作或改变状态变量的方法决定.我们把状态和行为表示成组件状态机.在组件状态机中,状态来源于对状态变量的判定,迁移则来源于每个方法的状态迁移规格说明.接着把这种有限状态机表示成一种有向图.这个图的顶点由这个有限状态机的状态、条件(guards)和迁移组成,边则由方法调用所引起的数据流和控制流组成.最后在这个有向图的基础上得到一组覆盖了所有潜在的数据流的测试用例.这种测试方法充分考虑到了基于组件软件这种类型软件的特征:缺乏组件的源码;仅使用了所提供组件的部分功能;依赖于中间件;组装组件以及依赖于状态等组件特征.本文的主要工作步骤如下:将组件状态机转换成UML状态图,利用工具Rose构建该UML状态图,并导出XMI格式的XML文件(该XML文件包含了组件状态机信息);然后利用Microsoft的DOM(文档对象模型)对XML文件进行语法和语义分析,找到基于组件软件系统的数据流和控制流信息,并利用我们提出的算法来构造该有向图;最后在这个有向图的基础上产生满足某个测试标准的测试用例.