您好,欢迎来到六九路网。
搜索
您的当前位置:首页面向对象软件测试计

面向对象软件测试计

来源:六九路网


软件工程实验报告

实验课程:软件测试

实验名称:面向对象的类测试技术

班级:

学号:

姓名:

日期: 年 月 日

一 实验目的:

了解面向对象测试技术。

二 面向对象软件测试介绍

1 面向对象的测试模型

面向对象开发模型:OOA, OOD, OOP。OOA:把E-R图和语义网络模型,即信息造型中的概念,与OOP中的重要概念结合在一起而形成的设计方法。OOD:“造型的观点”,以OOA为基础归纳类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象,是OOA的进一步细化和更高层的抽象。OOP:继承使代码重用率提高,同时错误传播的概率也提高。多态使OO程序对外呈现出强大的处理能力,但同时使得程序内“同一”函数的行为复杂化,测试时不得不考虑不同类型具体执行的代码和产生的行为。

面向对象测试的层次与数据流

2 面向对象软件的测试策略

1面向对象分析的测试 (1) 面向对象分析

是把E-R图和语义网络模型,即信息造型中的概念,与面向对象程序设计语方中的重要概念结合在一起而形成的分析方法。通常以问题空间的图表的形式进行描述 (2) 分析方法

直接映射问题空间,全面地将问题空间中实现功能的现实抽象化。将问题空间中的实例抽象为对象,用对象的结构反映问题空间的

复杂实例和复杂关系,用属性和服务表示实例的特性和行为。

(3) 面向对象分析缺点

对问题空间分析抽象的不完整,会影响软件的功能实现,导致软件开发后期产生大量原本可避免的修补工作;一些冗余的对象或结构类的选定,程序的整体结构和增加程序员不必要的工作量,因此 OOA测试的重点在其完整性和冗余性

(4) OOA测试划分的五个方面

对认定的对象的测试、对认定的结构的测试、对认定的主题的测试、对定义的属性和实例关联的测试、对定义的服务和消息关联的测试

2. 面向对象设计(OOD)的测试

(1) 面向对象设计(OOD)

采用„造型的观点‟,以OOA为基础归纳出类,并建立类结构或进一步构造类库,以实现分析结果对问题空间的抽象。OOD归纳的类即可以是对象的简单延续,也可以是不同对象的相同或相似的服务

(2) OOD与OOA

OOD是OOA的进一步细化和更高层的抽象,所以OOD、

OOA的界限很难区分,OOD确定类和类结构不仅是满足当前需求分析要求,更重要是通过重新组合或加以适当的补充,方便实现功能重用和扩增。因此,对OOD的测试,建议针对功能的实现和重用以及OOA结果的分析

(3) OOD测试划分的三个方面

1、认定的类的测试 2、构造的类的层次结构测试 3、类库支持的测试 3. 面向对象编程(OOP)的测试 (1) 面向对象程序

把功能的实现分布在类中,能正确实现功能的类,通过消息传递来协同实现设计要求的功能。将出现的错误精确的确定在某一具体的类上。 (2) 测试重点

忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格上 (3) 测试方面

1、类的封装 2、类的功能

4. 面向对象软件的单元测试

(1) 可以将一些传统的单元测试方法在面向对象软件的单元测试中使用,如等价类划分、因果图、边界值分析法、逻辑覆盖法、路径分析法、程序插桩法,单元测试一般建议由程序员完成

(2) 单元级测试的测试分析和测试用例,规模和难度均远小于对整个系统的测试分析和测试用例,并且对语句应该有100%的代码执行覆盖率。

(3) 设计测试用例选择输入数据的两个假设:

* 如果函数(程序)对某一类输入中的一个数据正确执行,对同类中的基他输入也能正确执行(等价类)

* 如果函数(程序)对某一复杂度的输入正确执行,对更高复杂度的输入也能正确执行

(4) 针对继承性,Brian Marick两方面的考虑

* 继承的成员函数是否都不需要测试:当继承的成员函数在子类中做了改动;成员函数调用了改动过的成员函数的部分这两种情况需要对子类重新测试

* 对父类的测试是否能照搬到子类:可以重新测试或在父类原有的测试要求和测试用例上增加新的测试要求和测试用例,主要针对子类中变动的部分进行测试 5. 面向对象软件的集成测试

(1) 传统的自顶向下或自底向上的集成测试策略在面向对象软件的集成测试中无意义,OO软件的集成测试需要在整个程序编译完成后进行,面向对象程序具有动态特性,程序的控制流无法确定,只能对编译完成的程序做基于黑盒子的集成测试 (2) 面向对象软件的集成测试两种策略

* 基于线程的测试(Thread based testing):集成对响应系统的一个输入或事件所需的一组类,每个线程分别进行集成和测试,应用回归测试以保证没有产生副作用。

* 基于使用的测试(Use based testing):通过测试那些几乎不使用服务器类的的类(类)而开始构造系统,在类测试完成后,下一层中使用类的类(依赖类)被测试,这个依赖类层次的测试序列一直持续到构造完整个系统。 (3) 测试目的

能够检测出相对的,单元测试无法检测出的,那些类相互作用时才会产生的错误,只关注于系统的结构和内部的相互作用 (4) 面向对象软件的集成测试过程

第一步:静态测试 针对程序的结构进行,检测程序结构是否符合设计要求。通过使用测试软件的„可逆性工程‟功能,得出源程序的类系统图和函数功能调用关系图,与OOD结果相比较,检测程序结构和实现上是否有缺陷,检测OOP是否达到了设计要求

第二步:动态测试 根据静态测试得出的函数功能调用关系图或类关系图作为参考,按照如下步骤设计测试用例,达到如下测试覆盖标准

设计测试用例步骤:选定检测的类,参考OOD分析结果,确定出类的状态和相应的行为;确定覆盖标准;利用结构关系图确定待测类的所有关联;根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态,使用类的服务和期望产生什么行为等,还要设计一些类禁止的例子,确认类是否有不合法的行为产生

覆盖标准:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等。

3 OO软件测试的方法 1. 基于故障的测试

(1) 具有较高的发现可能故障的能力

(2) 从分析模型开始,考察可能发生的故障,设计用例去执行设计和代码

(3) 可用于集成测试,发现消息联系中„可能的故障‟(可能的故障指意料之外的结果、错误地使用了操作/消息、不正确地引用等) (4) 除用于操作测试外,还可用于属性测试,用以确定其对于不同类型的对象行为是否赋予了正确的属性值 (5) 是从客户对象(主动)上发现错误

(6) 不能发现的错误:不正确的规格说明,用户不需要的功能或缺少用户需要的功能;没有考虑子系统间的交互作用 2. 基于场景的测试

(1) 主要关注用户需要做什么,不是产品能做什么,即从用户任务(使用用例)中找出用户要做什么及如何去执行

(2) 有助于在一个单元测试情况下检查多重系统,比基于故障的测试更实际,更复杂一点 3. OO类的随机测试

如果一个类有多个操作(功能),这些操作(功能)序列有多种排列,这种不变化的操作序列可随机产生,用这种可随机排列来检查不同类实例的生存史,称为随机测试 4. 类层次的分割测试

(1) 可以减少用完全相同的方式检查类测试用例的数目,类似于等价类划分

(2) 分类:基于状态的分割、基于属性的分割、基于类型的分割

* 基于状态的分割:按类操作是否会改变类的状态进行分割(归类)

* 基于属性的分割:按类操作所得到的属性来分割(归类) * 基于类型的分割:按完成的功能分割(分类),如初始操作、计算操作、查询操作

5. 由行为模型(状态、活动、顺序和合作图)导出的测试

状态转换图(STD)可以用来帮助导出类的动态行为的测试序列,以及这些类与之合作的类的动态行为测试用例,根据状态转换图,设计出最小测试用例,加入其他测试序列到最小测试序列中,保证类所有行为被充分检查

三 总结

本次实验总结,软件测试时软件质量保证的重要手段,

在软件生存期中占有十分重要的地位。面向对象软件测试是面向对象软件开发的不可缺少的一环,是保证软件质量,提高软件可靠性的关键。成熟完善的测试理论,技术和工具是面向对象软件开发真正走向成熟并广泛应该于软件开发实践的关键之一。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务