北京林业大学
2012学年—2013学年第 1 学期软件测试实验报告书
专业:信息管理与信息系统
实验题目:基于OCL和状态图的类测试、OATS类交互测试
实验环境:Windows Server 2003、VC6.0
实验目的
掌握基于OCL和状态图的类测试以及OATS类交互测试的方法。
实验内容
实验1:以下是Student类OCL说明的一部分,请根据每个操作的前置条件和后置条件构造测试用例。要求写明测试用例的构造依据,以及最后得到的测试用例。Student
xh(学号)> 0
age(年龄)>= 16 and age <= 40
Student::setAge(age : Int)
Pre: age >= 16 and age <= 40
Post: self.age = age and xh = xh@pre
Student::setXh(xh : Int)
Pre: xh > 0
Post: self.xh = xh and age = age@pre
答:
前置条件中,①:age >= 16;②:age <= 40;Post: self.age = age and xh = xh@pre 后置条件中,①:self.age = age and xh = xh@pre;Pre:age >= 16 and age <= 40构造测试用例如下:
①(age >= 16 and age <= 40,self.age = age and xh = xh@pre)
②(not(age >= 16)and age <= 40,Exception)
③(age >= 16 and not(age <= 40),Exception)
④(not (age >= 16)and not(age <= 40),Exception)
前置条件中,①:xh > 0;Post: self.xh = xh and age = age@pre
后置条件中,①:self.xh = xh and age = age@pre;Pre:xh > 0
构造测试用例如下:
②(xh > 0,self.xh = xh and age = age@pre)
②(not(xh > 0),Exception)
实验2:考察人掷某物件的过程。假设掷出去的距离与人的高度、力量以及物件的重量有关,并且人的力量只有大于物件的重量,人才能拾起物件。
假定人用类People描述,包含如下属性:
(1)Height:身高,必须大于0.5米;
(2)Might:力量;
(3)ThingStatus:物件状态,有三种取值:None(无物件)、Pickedup(拾起
状态)、LiftedUp(举起状态);
(4)ThingWeight:物重,只有ThingStatus取值不是None时才有意义,并且
应大于0。
可以用以下几个方法描述人的行为:
(1)PickUp:拾起物件(需引用Might,执行可能改变ThingStatus、
ThingWeight);
(2)LiftUp:举起物件(执行可能改变ThingStatus)
(3)Throw:掷物件(需引用Might、Height、ThingWeight,执行可能改变
ThingStatus)。
People类的状态转换图如图1所示。请利用状态转换图法设计类测试用例,要求列出测试序列,并做必要解释说明。
Throw
图1 People类的状态转换图
答:
#s1: Initialize · Pick Up · Lift Up · Throw
#s2: Initialize · Pick Up · Lift Up · Throw ·Pick Up
实验3:一个面向对象系统包含一个client类(C1)和它的一个子类(C2)。这些client类又与一个server类S1交互,这个server类有一个子类S2。这个server 类包括一个方法foo(),它把M1的一个实例做为参数,M1有一个子类M2。
图2 client、server、message的交互关系图
请使用正交阵列测试法(OATS)测试client与server之间的类交互关系foo,要求列出详细测试步骤,并给出最终的测试用例。
答:
(1)有三个独立的变量(Factors: client,server,和消息类);
(2)每个变量可以取2个值(Levels);
(3)选择L4(23)正交表――变量为3因素,值为2水平。
(4)把值映射到正交表中
(5)把因素和值映射到表中,为剩下的水平数选取值