软件测试面向对象的软件测试技术[3]
关键字:面向对象 软件测试技术(2) 单元级测试的测试分析和测试用例,规模和难度均远小于对整个系统的测试分析和测试用例,并且对语句应该有100%的代码执行覆盖率。
(3) 设计测试用例选择输入数据的两个假设:
l 如果函数(程序)对某一类输入中的一个数据正确执行,对同类中的基他输入也能正确执行(等价类)
l 如果函数(程序)对某一复杂度的输入正确执行,对更高复杂度的输入也能正确执行
(4) 针对继承性,Brian Marick两方面的考虑
l 继承的成员函数是否都不需要测试:当继承的成员函数在子类中做了改动;成员函数调用了改动过的成员函数的部分这两种情况需要对子类重新测试
l 对父类的测试是否能照搬到子类:可以重新测试或在父类原有的测试要求和测试用例上增加新的测试要求和测试用例,主要针对子类中变动的部分进行测试
5. 面向对象软件的集成测试
(1) 传统的自顶向下或自底向上的集成测试策略在面向对象软件的集成测试中无意义,OO软件的集成测试需要在整个程序编译完成后进行,面向对象程序具有动态特性,程序的控制流无法确定,只能对编译完成的程序做基于黑盒子的集成测试
(2) 面向对象软件的集成测试两种策略
l 基于线程的测试(Thread based testing):集成对响应系统的一个输入或事件所需的一组类,每个线程分别进行集成和测试,应用回归测试以保证没有产生副作用。
l 基于使用的测试(Use based testing):通过测试那些几乎不使用服务器类的的类(独立类)而开始构造系统,在独立类测试完成后,下一层中使用独立类的类(依赖类)被测试,这个依赖类层次的测试序列一直持续到构造完整个系统。
(3) 测试目的
能够检测出相对独立的,单元测试无法检测出的,那些类相互作用时才会产生的错误,只关注于系统的结构和内部的相互作用
(4) 面向对象软件的集成测试过程
第一步:静态测试 针对程序的结构进行,检测程序结构是否符合设计要求。通过使用测试软件的‘可逆性工程’功能,得出源程序的类系统图和函数功能调用关系图,与OOD结果相比较,检测程序结构和实现上是否有缺陷,检测OOP是否达到了设计要求
第二步:动态测试 根据静态测试得出的函数功能调用关系图或类关系图作为参考,按照如下步骤设计测试用例,达到如下测试覆盖标准
设计测试用例步骤:选定检测的类,参考OOD分析结果,确定出类的状态和相应的行为;确定覆盖标准;利用结构关系图确定待测类的所有关联;根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态,使用类的服务和期望产生什么行为等,还要设计一些类禁止的例子,确认类是否有不合法的行为产生
覆盖标准:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等
六. 面向对象软件的确认和系统测试
(1) 系统测试:需要测试它与系统其他部分配套运行的表现,以确保在系统各部分协调工作的环境下软件也能正常运行