北大测试全套课件和教案 第9章 面向对象测试由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“测试全套课件和教案”。
第9章 习题解答
1.简述面向对象软件测试和传统软件测试的不同。
答:面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同于传统软件测试的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。因为:
a)测试的对象不同:传统软件测试的对象是面向过程的软件,一般用结构化方法构建;面向对象测试的对象是面向对象软件,采用面向对象的概念和原则,用面向对象的方法构建。
b)测试的基本单位不同:前者是模块;面向对象测试的基本单元是类和对象。c)测试的方法和策略不同:传统软件测试采用白盒测试,黑盒测试,路径覆盖等方法;面向对象测试不仅吸纳了传统测试方法,也采用各种类测试等方法,而且集成测试和系统测试的方法和策略也很不相同。
2.简述面向对象软件测试的策略。
答:(1)分片测试:分片测试测试某种规约片,测试所有状态、所有事件或者所有动作的规约的测试方法。这种测试策略因为其控制行为的状态机的结构不直接相关,所以只能偶然地发现行为的错误,但是测试代价比较少。(2)所有转换测试:所有转换测试就是在一个面向对象的系统的交互过程中,对状态、事件,以及状态转换约束条件,三者构成的一个笛卡儿集合中的每个元素都进行测试,即测试所有的转换。在测试过程中,没有执行顺序的要求。(3)所有往返路径测试 往返路径指的是程序从某一个状态开始,经过一系列的转换回到开始的状态,所有的转换的序列构成了一个往返路径。最短的往返路径只需要经过一个转换回到原来的状态,即该状态是闭包的。往返路径的长度决定于状态机的结构。对所有往返路径的测试,将测试每个状态的所有往返路径,于是就得到一个往返路径覆盖。(4)状态标识测试:在一个不透明的系统中,无法直接观察到程序的状态。虽然可以检测事件和动作的错误,但当一个错误的状态产生时往往很难检测出来,因为从控制的角度来看,当错误的状态多于系统正确的状态时,一个错误的状态很容易隐藏起来。状态标识就是用来确定被测软件的当前状态的。一个状态标记是由输出动作的序列组成。通过对被测软件的状态进行规约,可以选择能够产生标记的事件序列来标识一个状态。判断系统是否处于一个正确的状态,就可以通过事件序列来判断,看这一过程中是否产生了期望的标记。(5)N+测试:测试基于展平的状态(正则表达式)设计模型,每个状态有一个转换。N+的测试把被测软件从初态带到一个叶子状态,达到路径覆盖。N+测试会发现更多的错误状态和不正确转换。3.简述面向对象的集成测试中由继承导出数据流的方法。
答:考虑定义了数据项值的继承树,在这种树中,考虑定义了值的数据地点开始,到树“尾”结束的链。这种链将是一种替代数据地点序列,并退化方法执行路径,方法执行路径在链中实现面向对象语言的继承机制。这时描述继承的EMDPN仅由数据地点和方法执行路径组成。
4.简述面向对象软件的系统测试中基于UML的测试方法。答:将表示设计的协作图作为测试模型,并从中提取相关信息生成用于测试所描述的行为的集成测试用例。首先通过遍历每条消息的直接后继识别协作图中的表示用例实现的所有可能的场景路径,然后在遍历每条场景路径的过程中获取相应协作执行的路径条件、参数变量和预期方法调用序列,最后使用范畴-划分方法确定场景路径上的输入、输出、环境条件的合理组合作为覆盖该场景路径的测试用例,用于测试一个协作场景路径上的交互行为。
另外,通过有限状态机导出测试用例。还可以通过基于状态的事件表也可导出测试用例。