目录
面向对象的测试模型
面向对象单元测试主要是对类成员的函数进行测试。
面向对象分析(OOA)的测试
对OOA阶段的测试划分分为5个方面
- 对认定的对象的测试
- 对认定的结构的测试
- 对认定的主题的测试
- 对定义的属性和实例关联的测试
- 对定义的服务和消息关联的测试
面向对象设计(OOD)测试
面向对象设计(OOD)测试考虑的3个方面
- 对认定的类的测试
- 对构造的类层次结构的测试
- 对类库的支持的测试
面向对象在每次迭代后的评审
评审主要针对的2个方面:
- 正确性
- 一致性
面向对象编程(OOP)测试
面向对象编程(OOP)测试的2个方面:
- 数据成员是否满足封装的要求
- 类是否实现了要求的功能
面向对象单元测试
★★继承的成员函数是否都不需要测试
- 继承的成员函数在子类中做了改动
- 成员函数调用了改动的成员函数的部分
★★对父类的测试是否能照搬到子类
面向对象继承测试
2种策略:
- 第一种:基于线程的测试,继承对回应系统的一个输入或事件所需的一组类,每个线程被集成并分别测试,应用回归测试以保证没有产生副作用
- 第二种:基于使用测试,通过测试那些几乎不使用服务器类的类(独立类)而开始构造系统,在独立类测试完成后,下一层中使用独立类的类(称为依赖类)被测试
能够检测出的问题
- 那些类相互作用时才会产生的错误
测试步骤
- 先进行静态测试
- 再进行动态测试
面向对象软件测试用例设计
对每个测试用例应该给予特殊的标识,并且还应当与测试的类有明确的联系
测试目的应当明确
应当为每个测试用例开发一个测试步骤列表
- 列出所有要测试的对象的专门说明
- 列出将要作为测试结果运行的消息和操作
- 列出测试对象可能发生的例外情况
- 列出外部条件
- 列出为了帮助理解和实现测试所需要的附加信息
测试方法
- 基于故障的测试
- 基于场景的测试
- OO类的随机测试
- 类层次的分割测试
- 由行为模型(状态,活动,顺序和合作图)导出的测试练习题
练习题
阅读下列问题,回答问题1到问题4,将解答写在答题纸的对应栏内。
【说明】
图4-1 是某企业信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:
(1)类Manager重新实现了类 Employee的方法 calSalary( ),类Manager中的方法querySalary( )继承了其父类Employee的方法querySalary( )
(2)创建类 Employee的对象时,给其设置职位(position)、基本工资(basicSalary)等信息。方法calSalary( )根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算员工工资。
(3)类Department中的方法statSalary中首先调用了该类的方法load( ),获取本部门员工列表,然后调用了类 Employee中的方法calSalary( )。
现拟采用面向对象的方法进行测试。
【问题1】图4-1 所示的类图中,类manager 和类Employee之间是什么关系?该关系对测试的影响是什么?
【问题2】
(1)类Manager重新实现了类 Employee的方法calSalary( ),这是面向对象的什么机制?是否需要重新测试该方法?
(2)类Manager中的方法querySalary( )继承了其父类 Employee 的方法querySalary( ),是否需要重新测试该方法?
【问题3】
(1)请结合题干说明中的描述,给出测试类Employee 方法calSalary( )时的测试序列。
(2)请给出类图4- 1 中各个类的测试顺序。
【问题4】从面向对象多态特性考虑,测试方法statSalary( )时应注意什么?
解析:
【问题1】类manager 和类Employee之间是继承关系;
该关系对测试的影响是:继承的函数是否需要测试,对父类的测试是否能照搬到子类上。
【问题2】
1. 类Manager重新实现了类 Employee的方法calSalary( ),这是面向对象的多态机制。在子类中重新进行了定义,需要重新测试。
2. 不需要重新测试
【问题3】
1. 测试顺序:Employee-calWorkdays() - setBonus() - calSalary() - querySalary()
2. 测试顺序:Employee-Manager-Department
【问题4】
只需要在原有测试分析基础上增加对测试用例中输入数据的类型的考虑。