面向对象的系统测试概述
面向对象技术
面向对象方法的出现,实际上是程序设计 方法发展的-个返朴归真过程。
面向对象的实质:
❖ 从系统的组成上来进行分解。对问题自然分割, 利用类及对象作为基本构造单元,以更接近人 类思维的方式建立问题域模型,从而使设计出 的软件尽可能直接地描述现实世界,构造出模 块化的、可重用的、可维护性好的软件,并能 控制软件的复杂性降低开发维护费用。
面向对象系统测试通过UML模型找出系统级测试用例。
一、货币转换器的UML描述
1. 问题陈述
将美元转换为四种货币的任何一种。用户可以修改 输入,并多次进行货币转换。
2. 系统功能
用户通过“用户使用案例”描述应用程序,通过这 些描述可标识出三种系统功能: 1) 显式功能:明显的功能 2) 隐藏功能:难以马上发现 3) 装饰功能:锦上添花
于……
引用编号 R1 R2 R3 R4 R5 R6 R7 R8
功能 启动应用程序 结束应用程序 输入美元金额 选择国家 执行转换计算 清除用户输入和程序输出 维护国家之间的异或关系 显示国旗图像
表20-1 货币转换器应用程序的系统功能
类别 显式 显式 显式 显式 显式 显式 隐藏 装饰
3. 表示层(用户界面草图)
用户界面的大部分信息用来支持客户走查,说 明所标识的系统功能都可以由用户界面支持。
美圆金额 等价于……
巴西 加拿大 欧共体 日本
计算 清除 退出
4. 高层用例HLUC(同基本功能对应)
用例开发从很高层的视图开始,高层用例只提供很 少的细节,但对于测试用例标识已经足够。
HLUC1 参与者 类型 描述
3.用户选择一个国家
4.显示指定国家的货币名称
5.显示该国家的国旗
6.用户取消输入
7.取消指定国家的货币名称
8.不再显示该国家的国旗
6. 详细GUI定义
使用设计语言的控件表示GUI每一个组件。
label1
货币转换器
frmCurrConv
label2
美圆金额
txtDollar
lblEquiv
等价
optBrazi
修改输入 用户 二级功能 用户重新设置输入,开始一次新的事务处理
5. 基本用例EUC(增加系统事件描述)
在HLUC中增加端口输入/输出事件,编号表示大致时间顺序。
EUC1 参与者 类型 描述 序列
启动应用程序
用户
基本功能
用户在Windows中启动货币转换应用程序
参与者行动:
系统响应:
1.双击应用程序图标启动程序 2.GUI显示在屏幕上,准备接收用户输入
人乘坐或驾驶汽车 对象是软件开发期间测试的直接目标。 面向对象软件测试所关注的焦点: (1)对象的行为是否符合它的规定说明; (2)该对象与和它相关的对象是否协同工作。
面向对象的系统测试
通过单元测试和集成测试,仅能保证软件开发的功能得 以实现。但不能确认在实际运行时,它是否满足用户的需 要。为此,对完成开发的软件必须经过规范的系统测试。
参与者可以是人员、设备、相邻系统,或一些抽象事物
EUC2 参与者 类型 描述 序列
EUC3 参与者 类型 描述 序列
结束应用程序
用户
基本功能
用户在Windows中结束货币转换应用程序
参与者行动:
系统响应:
1.退出按钮/关闭窗口结束程序 2.GUI从屏幕上消失
转换美元
用户
基本功能
用户输入美元金额并选择国家,应用程序计算并显示等价金额
面向对象的系统测试概述
技术创新,变革未来
面向对象的基本概念
对象 类 消息 接口 封装 继承 多态
面向对象的基本概念
Peter Coad 和 Edward Yourdon 提出下列等式认 识面向对象方法: 面向对象 = 对象(Object) + 分类(Classification) + 继承(Inheritance) + 通过消息的通信 (Communication with message)
参与者行动:
系统响应:
1.用户键盘输入美元金额 2.在GUI上显示美元金额
3.用户选择一个国家
4.显示指定国家的货币名称
5.显示该国家的国旗
6.用户请求转换计算
7.显示等价货币值
EUC4 参与者 类型 描述 序列
修改输入 用户
二级功能 用户重新设置输入,开始一次新的事务处理
参与者行动:
系统响应:
1.用户键盘输入美元金额 2.在GUI上显示美元金额
对象
对象——是指包含了一组属性以及对这些属性的操作的封 装体。
对象之间存在着一定的关系,对象之间的交互与合作构成 更高级的行为。
❖对象间的由分解所构成的关系,part of层次;
❖具王有五代表由一他种的一头般、特性胳的膊对、象腿之和间的身聚体合组关成系,is a层次; ❖代汽表车更一是般一的种对交象通间在工物具理上或概念上有关的相关关系。
系统测试应该尽量搭建与用户实际使用环境相同的测试平 台,应该保证被测系统的完整性,对临时没有的系统设备 部件,也应有相应的模拟手段。
系统测试的基本要素是系统端口输入和端口输出。传统软 件系统测试使用需求规格说明模型(行为模型),作为线 索测试用例标识的基础,并讨论了伪结构覆盖指标。
这里说的系统测试是对测试步骤的抽象描述。具体测试的 内容包括:功能测试、强度测试、性能测试、安全测试、 恢复测试、可用性测试、安装/卸载测试等。
启动应用程序 用户 基本功能 用户在Windows中启动货币转换应用程序
HLUC2 参与者 类型 描述
结束应用程序 用户 基本功能 用户在Windows中结束货币转换应用程序
HLUC3 参与者 类型 描述
转换美元 用户 基本功能 用户输入美元金额并选择国家,应用程序计算并显示等价金额
HLUC4 参与者 类型 描述
面向对象的系统测试(续)
系统测试时,应该参考OOA分析的结果,对应描述的对象、 属性和各种服务,检测软件是否能够完全“再现”问题空 间。
系统测试不仅是检测软件的整体行为表现,从另一个侧面 看,也是对软件开发设计的再确认。
面向对象测试的整体目标 —— 以最小的工作量发现最多 的错误 —— 和传统软件测试的目标是一致的,但是OO测 试的策,此外,测试的焦点从过程构件(模块) 移向了类。
面向对象的软件测试
面向对象的软件测试作者:王容来源:《电脑知识与技术》2013年第05期摘要:软件的测试时软件开发的重要部分,是保证软件质量提高软件性能的关键。
面向对象的软件测试具有它自己的特点,需要与传统的软件测试相区别,因此面向对象的软件测试则被分成不同的阶段,本文将面向对象软件测试层次划分为六个个层次,主要介绍了面向对象软件测试的以下三个层次:类测试、集成测试和系统测试。
关键词:面向对象;单元测试;集成测试;系统测试中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)05-1200-02面向对象的方法在现在的软件开发的运用中是越来越广泛,但是相应的测试方法并没有做出相应的改变,仍然有很多使用的还是传统软件使用的测试方法,出现这样的结果不是单方面的原因,既有在采用面向对象方法开发软件的时候在设计和分析阶段保留的文档不够全面或者并没有按照面向对象的方法进行保存,造成了在设计测试的时候不能够找到原始文档。
还有可能就是现在并没有有效的方法是针对面向对象方法的。
这样就会使得工作变得更加的复杂,就会增加工作量。
但是测试的结果也可能并不理想,使得最后得到的软件并不能够达到用户的期望。
因此,如何使用面向对象的方法来测试软件是非常必要的。
1 面向对象测试与传统测试技术的异同首先,这两种技术的测试过程是相同的。
都要对整个测试进行计划,设计出测试用例,运行测试用例,根据结果进行测试分析,最后是用户验收。
其次,这两种技术的测试目标也是相同的。
测试的目的都是为了使得设计出来的软件能够达到期望的功能。
再次,测试也是为了用尽可能少的工作量测试出软件尽可能多的错误,虽然在这三个方面这两种技术都是相同的,但是在测试计划和设计测试用例的时候是有很大的区别的,这主要是归结于面向对象软件和传统的软件的设计思路不同。
传统的软件是由各个功能模块组成的,那么在测试计划和设计测试用例的时候就要注意的就是这些功能模块之间的关系。
面向对象的软件测试
面向对象的软件测试一、引言随着软件领域的迅猛发展,面向对象编程成为主流的开发范式。
在面向对象的软件开发过程中,软件测试是不可或缺的一环。
本文将重点讨论面向对象的软件测试方法和技术。
二、面向对象的软件测试概述面向对象的软件测试是基于面向对象编程范式的软件测试过程。
它的核心思想是将软件抽象为对象,通过对对象的测试来确保软件的质量和可靠性。
与传统的结构化软件测试相比,面向对象的软件测试更加灵活、可复用,并能够更好地应对软件变更和维护的需求。
三、面向对象的软件测试原则1. 固化测试用例:面向对象的软件测试需要建立一组完整的测试用例,覆盖各个对象的各种状态和行为。
这样可以确保对对象的测试的全面性和准确性。
2. 封装测试逻辑:对于面向对象的软件,应该封装测试逻辑,将测试代码与被测试的对象分离开来,从而提高代码的可维护性和可测试性。
3. 高内聚低耦合:在进行面向对象的软件测试时,应该尽量保持对象之间的高内聚性和低耦合性。
这样可以使得测试更加独立,减少测试之间的相互影响。
4. 多态性测试:面向对象的软件中,多态性是非常关键的特性。
在进行测试时,需要充分考虑对象在不同状态下的不同行为,以及对象之间的相互作用。
四、面向对象的软件测试方法1. 单元测试:单元测试是面向对象的软件测试的基石。
通过针对各个对象进行独立的测试,可以确保对象的功能和逻辑正确性。
2. 集成测试:集成测试是对多个对象间相互作用的测试。
可以通过模拟对象之间的协作和通信,来检验对象间的接口和交互是否符合预期。
3. 系统测试:系统测试是对整个软件系统的测试,包括功能测试、性能测试、安全性测试等。
通过系统测试可以全面评估软件的质量和性能。
4. 面向对象的覆盖率分析:面向对象的覆盖率分析能够精确评估测试用例对对象的覆盖程度。
通过该分析,可以发现测试用例中的不足和重复,从而优化测试策略和用例设计。
五、面向对象的软件测试工具1. JUnit:JUnit是Java语言中最常用的单元测试框架,支持面向对象的测试方法和断言。
面向对象的软件测试综述
JMeter
开源组织 压力测试、性能测试 开源免费
TestDirector Mercury公司
测试管理
收费昂贵
Bugzilla
开源组织
缺陷跟踪管理
开源免费
面向对象的特点对软件测试的影响
信息隐蔽和封装对测试的影响 类的重要作用之一是信息隐蔽。它对类中所封装的信 息的存取进行控制,从而避免类中有关实现细节的信 息被错误地使用。该隐蔽机制给测试带来了困难。
继承对测试的影响 若一个类得到了充分的测试,当其被子类继承后,
继承的方法在子类的环境中的行为特征需要重新测试 。 多态性对测试的影响 传统软件测试中经常使用静态分析技术对代码进行分 析;面向对象软件中,由于动态绑定和多态性的存在 所带来的不确定性,给测试覆盖率的满足增大了难度 。
JMeter
JMeter是Apache组织开发的基于Java的压力 测试工具。 Meter 可以用于对服务器、网络或对 象模拟巨大的负载,来在不同压力类别下测试它 们的强度和分析整体性能。另外,JMeter能够对 应用程序做功能/回归测试,通过创建带有断言的 脚本来验证你的程序返回了你期望的结果。
面向对象的软件测 试的综述
软件测试的方法
黑盒测试
黑盒测试又称为功能测试,是一种面向设计的测试 。这种测试在完全不考虑测试对象内部结构的情况下 ,把被测程序当作一个黑盒,根据程序的功能和外部 特性得到测试数据。进行黑盒测试所必须具备的文档 有产品描述、用户文档及安装指令。黑盒测试方法主 要用于软件确认测试。
面向对象的测试与传统测试的比较
测试单元的不同 传统软件的基本构成单元为功能模块,每个功能
模块一般能独立地完成一个特定的功能。而在面向 对象的软件中,基本单元是封装了数据和方法的类 和对象。 系统构成不同 传统的软件系统是由一个个功能模块通过过程调用关 系组合而成的。而在面向对象的系统中,系统的功 能体现在对象间的协作上,相同的功能可能驻留在 不同的对象中,操作序列是由对象间的消息传递决 定的。
01 第一章 面向对象概述
1.1面向对象基本概念
2 对象——具有属性 属性刻画了对象的静态特征
车型名称 厂商 级别
十代思域220turbo 东风本田 紧凑型车
能源类型
汽油
环保标准
国V
上市时间
最大功率 (kW)
最大扭矩 (N·m)
发动机
2016.04 130 220
1.5T 177马力 L4
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象的分析过程
用户 开发者
一般需求
管理者 用户知识
问题域建模
专业领域知识
现实世界经验
问题域陈述
对象模型 动态模型
功能模型
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象分析的一般过程
获取需求内容陈述
建立系统的对象模型结构 建立对象的动态模型
类的例子
信息工程系的 帧一一同学
学生类
经贸管理系的 贾三三同学
尝试抽象——试将下列图标分类
不同角度,分类结果不一定 根 据 问 题 需 要 进 行 分 类
1.1面向对象基本概念
3 类——与对象的关系
• 每一个对象都是某一 个类的实例
• 每一个类在某一时刻 有零个或更多的实例
• 类是静态的:其语义 和关系在执行前就已 经定义好了
1.4面向对象思想与软件工程模型
1 瀑布模型
瀑布模型将软件生 命周期划分为软件 计划、需求分析和 定义、软件设计、 软件实现、软件测 试、软件运行和维 护这6个阶段,并 且规定了它们自上 而下的次序,如同 瀑布一样下落。每 一个阶段完成才进 行下一阶段。
面向对象的软件测试技术(转)
面向对象的软件测试技术(转)面向对象的软件测试技术相关知识点-面象对象(=objectoriented)技术1.对象和类l面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息l类就是一种代莱数据类型,就是设计的核心,就是通过抽象数据类型的方法去同时实现的一种数据类型l类是对某一对象的抽象,对象是某一类的实例,两者密切相关2.PCB、承继和多态性(1)封装:把数据和操作结合一体,使程序结构更加紧凑,避免了数据紊乱带来的调试与维护的困难(2)承继:可以从一个类衍生至另一个类,派生类承继了父类和祖先类的数据成员和函数,减少了软件的可扩充性,并为代码器重提供更多了强有力的手段(3)多态性:多种表现形式,可以用‘一个对外接口,多个内在实现方法’表示。
一.面向对象测试模型1.面向对象测试的分类依据面向对象研发模型(面向对象分析、面向对象设计、面向对向编程),分成:(1)面向对象分析的测试(ooatest)、面向对象设计的测试(oodtest):是对分析结果和设计结果的测试,主要对分析设计产生的文本进行的,是软件开发前期的关键性测试(2)面向对象编程的测试(ooptest):对编程风格和程序代码同时实现展开测试,主要的测试内容在oounittest和oointegratetest中彰显(3)面向对象单元测试(oounittest):对程序内部具体单一的功能模块的测试,主要对类成员函数的测试,是oointegratetest的基础(4)面向对象内置测试(oointergratetest):对系统内部的相互服务展开测试,例如成员函数间的相互作用,类间的消息传递。
不仅必须基于oounittest,还要参照ood、oodtest的结果(5)面向对象确认测试(oosystemtest)、面向对象系统测试(oosystemtest):最后阶段的测试,以用户需求为测试标准,借鉴ooa、ooatest的结果二.面向对象软件的测试策略1.面向对象分析的测试(1)面向对象分析是把e-r图和语义网络模型,即信息造型中的概念,与面向对象程序设计语方中的重要概念结合在一起而形成的分析方法。
面向对象的软件测试技术综述
面向对象的软件测试技术综述随着软件应用范围的不断扩大,软件测试的技术手段也不断进步。
面向对象的软件开发思想逐渐被广泛采用,因此,面向对象的软件测试技术也应运而生。
本文将综述面向对象的软件测试技术。
一、面向对象软件测试的概念面向对象的软件测试是针对采用面向对象开发思想的软件进行的测试。
与传统的结构化软件测试相比,面向对象软件测试更加注重对软件内部各个部分之间的关系的测试,并且更加关注软件的继承、重载、多态等特性的测试。
二、面向对象软件测试的方法1. 黑盒测试方法对于面向对象的软件测试中的黑盒测试方法,测试人员仅考虑输入与输出,而不关心系统内部的具体实现。
黑盒测试方法可以通过参照生成测试用例的过程,来完成对程序的测试覆盖。
2. 白盒测试方法白盒测试方法则针对系统内部的具体实现进行测试。
它主要通过静态和动态两种方式进行测试,其中静态分析主要是通过代码分析或模型检查等方式,而动态分析则通过运行测试用例,观察程序执行流程和变量变化等方式进行测试。
3. 增量式测试方法对于大型的面向对象软件开发,其测试过程可能需要相当长的时间,增量式测试方法就可以有效缩短测试时间。
增量式测试方法是指将整个系统分成几个部分,然后逐渐增加到完整的系统环境。
这不仅能够逐步发现bug,还能够及时修复,并能逐步提高测试用例的质量。
三、面向对象软件测试的技术手段1. 测试驱动开发(TDD)测试驱动开发是一种基于测试驱动的软件开发方法,它强调在实现代码之前,先编写测试程序,以确保所编写的代码能够满足测试需要。
TDD可以提高测试的自动化程度,逐步提高测试用例的品质,并减少未发现的bug出现次数。
2. 自动化测试自动化测试是一种通过编写脚本和使用自动化测试工具来执行测试用例和比较结果的测试方法。
自动化测试可以将部分测试自动化,减轻测试压力,消除人为测试误差,并且提高测试的效率和准确度。
3. 模拟测试人工模拟测试是一种指人员通过编制人工操作流程,在应用程序的界面进行手动测试的方法,而计算机模拟测试是一种通过编写程序模拟系统功能和用户操作的测试方法,在这种测试方法中,测试人员可以对系统进行多次重复测试,大大提高了测试的效率。
第8章 面向对象分析-软件工程基础(第3版)-胡思康-清华大学出版社
第8章 面向对象分析
第 5 页5
面向对象分析概述
面向对象分析的3类模型
OOA模型由3类独立模型构成:功能模型、静态模型和动态模型。 ➢功能模型描述软件系统的用户交互和功能。 ➢静态模型描述软件系统中类与对象以及它们间的关系,也因也称 为对象模型。 ➢动态模型描述系统的控制结构,也称为交互模型。
第8章 面向对象分析
第 6 页6
面向对象分析概述
类
静态模型的5个层次 类-对象层
对象
Coad和Yourdon 提出,对于大型、复杂 性软件系统,需要建立 分析问题域的静态模型。 该模型由5个层次组成: 类-对象层、结构层、 属性层、服务层和主题 层。
结构层 属性层 服务层 主题层
泛化关系
关联关系
属性
对象连接
服务
消息连接
⑶ 用例描述:用文字信息详细描述用例的内容,它是对用 例的有益补充。
第8章 面向对象分析
第 8 页8
建立静态模型
➢用例模型分别从参与者和系统的角度描述用户需求, 依据用例模型导出静态模型。静态模型是面向对象建 模中最基本、最重要、最耗时的技术活动。 ➢静态建模的任务是构建问题域的概念模型,把问题 域中的实体转变为信息域的类与对象以及它们间的关 系,因此也被称为对象模型或领域模型。 ➢静态模型通过建立类图及关系来反映领域概念,而 面向对象设计也建立类图,但各阶段对类的抽象程度 不同。
第8章 面向对象分析
第 12 页12
建立动态模型
建立状态图
状态图描述的就是对象状态的转换过程。通过对对象状态 的分析,能够了解对象在系统流程中的变换,从而发现潜在的事 件和条件。
建立状态图的一般过程如下: ⑴ 了解系统的主要功能和性能,确定和它们有关的主要对象。 ⑵ 列出一个对象的生存期内的所有可能的状态。 ⑶ 确定对象状态改变时的触发条件或事件。 ⑷ 在一个对象中,选定一组与描述状态相关的行为属性和促使 改变状态的方法。 ⑸ 结合触发条件、事件、行为属性值改变的先后顺序,建立软 件系统的状态图。
面向对象程序设计概述
1.什么是结构化程序设计方法?这种方法有哪些优点和缺点?【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。
结构化程序设计的思路是:自顶向下、逐步求精。
程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。
结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。
虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。
因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。
2.面向对象程序设计有哪些重要特点?【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。
它主要具有如下重要特点:(1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。
(2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。
(3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。
第1章面向对象程序设计概述3(4)面向对象的程序设计通过类的继承与派生机制以及多态性特性,提高了软件代码的可重用性,因而大大缩减了软件开发的相关费用及软件开发周期,并有效地提高了软件产品的质量。
面向对象测试技术详解
面向对象测试技术详解面向对象测试技术是软件测试中的一种重要方法,它基于面向对象的编程思想,通过对软件系统的对象进行测试,来保证系统的质量和可靠性。
本文将详细介绍面向对象测试技术的原理和方法,以及在实际项目中的应用。
一、面向对象测试技术概述面向对象测试技术是一种针对面向对象软件的测试方法,在传统测试技术的基础上进行了扩展和优化。
它以对象为单位进行测试,通过模拟对象的行为和交互,来验证软件系统的功能和性能。
面向对象测试技术主要包括以下几个方面:1. 单元测试:针对软件系统的最小单元进行测试,即类或对象的方法和属性。
通过构造合适的测试用例,来验证单元的正确性和稳定性。
2. 集成测试:将各个单元进行组合和协作,测试它们之间的接口和交互。
目的是检测集成后的系统是否符合预期的功能和性能要求。
3. 系统测试:对整个软件系统进行测试,验证系统在不同环境下的稳定性和可用性。
主要关注系统的功能、性能、兼容性等方面。
4. 验收测试:由用户或客户进行的测试,用来验证软件系统是否满足用户需求和要求。
二、面向对象测试技术的原理面向对象测试技术的原理主要包括以下几个方面:1. 继承和多态:通过继承和多态的特性,可以构造多个对象,并且使用相同的测试用例进行测试。
这样可以提高测试效率和覆盖率,减少测试工作的重复性。
2. 封装和封装测试:封装是面向对象编程的基本原则之一,也适用于测试。
通过封装测试的方式,可以隐藏对象的内部实现细节,只暴露出外部接口和行为。
这样可以保持测试的独立性和可维护性。
3. 测试驱动开发:测试驱动开发是一种先写测试用例,再写代码的开发方式。
它可以帮助开发人员更早地发现和解决问题,提高软件的质量和稳定性。
三、面向对象测试技术的方法面向对象测试技术有多种方法,下面介绍几种常用的方法:1. 白盒测试:白盒测试是一种基于代码分析的测试方法,通过查看代码的内部结构和逻辑,来设计和执行测试用例。
它主要关注程序的覆盖度和执行路径,以发现潜在的错误和缺陷。
面向对象软件的测试用例的设计方法
面向对象软件的测试用例的设计方法目前,面向对象软件的测试用例的设计方法,还处于研究、发展阶段。
与传统软件测试(测试用例的设计由软件的输入处理输出视图或单个模块的算法细节驱动)不同,面向对象测试关注于设计适当的操作序列以检查类的状态。
12.4.1 测试类的方法前面已经讲过,软件测试从“小型测试”开始,逐步过渡到“大型测试”。
对面向对象的软件来说,小型测试着重测试单个类和类中封装的方法。
测试单个类的方法主要有随机测试、划分测试和基于故障的测试等3种。
1. 随机测试下面通过银行应用系统的例子,简要地说明这种测试方法。
该系统的account(账户)类有下列操作: open(打开),setup(建立),deposit(存款),withdraw(取款),balance(余额),summarize(清单),creditLimit(透支限额)和close(关闭)。
上列每个操作都可以应用于account 类的实例,但是,该系统的性质也对操作的应用施加了一些限制,例如,必须在应用其他操作之前先打开账户,在完成了全部操作之后才能关闭账户。
即使有这些限制,可做的操作也有许多种排列方法。
一个account类实例的最小行为历史包括下列操作:open·setup·deposit·withdraw·close这就是对account类的最小测试序列。
但是,在下面的序列中可能发生许多其他行为:open·setup·deposit·[deposit|withdraw|balance|summarize|creditLimit]n·withdraw·close从上列序列可以随机地产生一系列不同的操作序列,例如:测试用例#r1:open·setup·deposit·deposit·balance·summarize·withdraw·close 测试用例#r2:open·setup·deposit·withdraw·deposit·balance·creditLimit·withdraw·close执行上述这些及另外一些随机产生的测试用例,可以测试类实例的不同生存历史。
