软件测试面向对象测试技术

合集下载

面向对象的软件测试

面向对象的软件测试

面向对象的软件测试作者:王容来源:《电脑知识与技术》2013年第05期摘要:软件的测试时软件开发的重要部分,是保证软件质量提高软件性能的关键。

面向对象的软件测试具有它自己的特点,需要与传统的软件测试相区别,因此面向对象的软件测试则被分成不同的阶段,本文将面向对象软件测试层次划分为六个个层次,主要介绍了面向对象软件测试的以下三个层次:类测试、集成测试和系统测试。

关键词:面向对象;单元测试;集成测试;系统测试中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)05-1200-02面向对象的方法在现在的软件开发的运用中是越来越广泛,但是相应的测试方法并没有做出相应的改变,仍然有很多使用的还是传统软件使用的测试方法,出现这样的结果不是单方面的原因,既有在采用面向对象方法开发软件的时候在设计和分析阶段保留的文档不够全面或者并没有按照面向对象的方法进行保存,造成了在设计测试的时候不能够找到原始文档。

还有可能就是现在并没有有效的方法是针对面向对象方法的。

这样就会使得工作变得更加的复杂,就会增加工作量。

但是测试的结果也可能并不理想,使得最后得到的软件并不能够达到用户的期望。

因此,如何使用面向对象的方法来测试软件是非常必要的。

1 面向对象测试与传统测试技术的异同首先,这两种技术的测试过程是相同的。

都要对整个测试进行计划,设计出测试用例,运行测试用例,根据结果进行测试分析,最后是用户验收。

其次,这两种技术的测试目标也是相同的。

测试的目的都是为了使得设计出来的软件能够达到期望的功能。

再次,测试也是为了用尽可能少的工作量测试出软件尽可能多的错误,虽然在这三个方面这两种技术都是相同的,但是在测试计划和设计测试用例的时候是有很大的区别的,这主要是归结于面向对象软件和传统的软件的设计思路不同。

传统的软件是由各个功能模块组成的,那么在测试计划和设计测试用例的时候就要注意的就是这些功能模块之间的关系。

面向对象的软件测试综述

面向对象的软件测试综述

JMeter
开源组织 压力测试、性能测试 开源免费
TestDirector Mercury公司
测试管理
收费昂贵
Bugzilla
开源组织
缺陷跟踪管理
开源免费
面向对象的特点对软件测试的影响
信息隐蔽和封装对测试的影响 类的重要作用之一是信息隐蔽。它对类中所封装的信 息的存取进行控制,从而避免类中有关实现细节的信 息被错误地使用。该隐蔽机制给测试带来了困难。
继承对测试的影响 若一个类得到了充分的测试,当其被子类继承后,
继承的方法在子类的环境中的行为特征需要重新测试 。 多态性对测试的影响 传统软件测试中经常使用静态分析技术对代码进行分 析;面向对象软件中,由于动态绑定和多态性的存在 所带来的不确定性,给测试覆盖率的满足增大了难度 。
JMeter
JMeter是Apache组织开发的基于Java的压力 测试工具。 Meter 可以用于对服务器、网络或对 象模拟巨大的负载,来在不同压力类别下测试它 们的强度和分析整体性能。另外,JMeter能够对 应用程序做功能/回归测试,通过创建带有断言的 脚本来验证你的程序返回了你期望的结果。
面向对象的软件测 试的综述
软件测试的方法
黑盒测试
黑盒测试又称为功能测试,是一种面向设计的测试 。这种测试在完全不考虑测试对象内部结构的情况下 ,把被测程序当作一个黑盒,根据程序的功能和外部 特性得到测试数据。进行黑盒测试所必须具备的文档 有产品描述、用户文档及安装指令。黑盒测试方法主 要用于软件确认测试。
面向对象的测试与传统测试的比较
测试单元的不同 传统软件的基本构成单元为功能模块,每个功能
模块一般能独立地完成一个特定的功能。而在面向 对象的软件中,基本单元是封装了数据和方法的类 和对象。 系统构成不同 传统的软件系统是由一个个功能模块通过过程调用关 系组合而成的。而在面向对象的系统中,系统的功 能体现在对象间的协作上,相同的功能可能驻留在 不同的对象中,操作序列是由对象间的消息传递决 定的。

面向对象软件测试的不同层次及其特点_软件测试(第2版)_[共7页]

面向对象软件测试的不同层次及其特点_软件测试(第2版)_[共7页]

软件测试(第2版)178多态性是面向对象方法的关键特性之一。

多态的概念是指同一消息可以根据发送消息对象的不同而采用多种不同的行为方式。

多态性有两个方面的含义,一种是将同一个消息发送给同一个对象,但由于消息的参数不同,对象也表现出不同的行为(这种多态性是通过重载来实现的)。

另一种是将同一个消息发送给不同的对象,各对象表现出的行为各不相同(这种多态是通过重写来实现的)。

例如,有类A 、类B 和类C 3个类,类B 继承类A ,类C 又继承类B 。

成员函数a () 分别存在于这3个类中,但在每个类中的具体实现不同。

同时在程序中存在一个函数fn (),该函数在形参中创建了一个类A 的实例st ,并在函数中调用了方法a ()。

程序运行时相当于执行了一个多路分支的switch () 语句,首先判定传递过来的实参的类型(类A 或类B 或类C),然后再确定究竟执行哪一个类中的方法a ()。

利用多态性,在程序设计中可以解决很多兼容性的问题,这也是面向对象程序设计的一个显著优点,而在测试时,就必须为上面的每一个分支生成测试用例。

由此可见,多态性和动态绑定为程序的执行带来了不确定性,并且增加了系统运行中可能的执行路径,加大了测试用例选取的难度和数量。

多态性为软件测试带来的问题目前仍然是研究的重点及难点之一。

面向对象系统与面向过程系统的测试有着许多类似之处,例如,它们都具有相同的目标,即保证软件系统的正确性,不仅保证代码的正确性,也要保证系统能够完成规定的功能;它们也具有相似的过程,例如测试用例的设计、测试用例的运行、实际结果与预期结果的比较等。

虽然传统测试的理论与方法有不少都可用于面向对象的测试中,但毕竟面向对象软件的开发技术和运行方式与传统的软件有着较大的区别。

面向对象开发技术与传统的开发技术相比,新增了多态、继承、封装等特点,这些新特点使得开发出来的程序,具有更好的结构、更规范的编程风格,极大地优化了数据使用的安全性,提高了代码的重用率。

面向对象的软件测试方法及实践

面向对象的软件测试方法及实践

面向对象的软件测试方法及实践面向对象编程是一种重要的编程方法。

在面向对象的软件开发中,测试也是一个至关重要的环节,它可以有效地发现程序的缺陷,并确保程序的正确性和稳定性。

然而,面向对象的软件测试方法与传统的测试方法有着很大的不同。

本文将就面向对象的软件测试方法及实践的相关问题进行探讨。

一、面向对象的软件测试方法在面向对象的软件测试中,测试重点是对象的行为。

这与传统的测试方法不同,传统的测试方法重点是函数和子程序。

因此,在面向对象的软件测试中,测试的粒度更加细致,测试的内容更加全面。

面向对象的软件测试方法通常包括以下几个方面:1. 单元测试单元测试是指对系统中最小的可测试单元进行测试。

在面向对象的软件测试中,单元测试是对对象的方法进行测试。

单元测试是测试的第一步,它可以有效地发现程序的错误,还可以帮助开发人员快速地发现错误并修正它们。

单元测试通常由开发人员进行,他们会编写测试用例并运行单元测试,以确保代码的正确性。

2. 集成测试集成测试是指在完成单元测试后,将各个部分集成起来测试整个系统。

在面向对象的软件测试中,集成测试是测试对象之间的交互行为。

集成测试可以发现不同对象之间的复杂关系,以及在集成过程中可能存在的问题。

集成测试通常由测试人员进行,他们会编写和运行测试用例,以确保整个系统的正确性。

3. 系统测试系统测试是指在完成集成测试后,对整个系统进行测试。

在面向对象的软件测试中,系统测试是对系统的交互行为进行测试。

系统测试可以确保整个系统的正确性、稳定性和性能。

系统测试通常由测试人员进行,他们会编写和运行测试用例,以确保整个系统的正确性。

4. 用户验收测试用户验收测试是指在完成系统测试后,由最终用户对系统进行测试。

在面向对象的软件测试中,用户验收测试是测试系统是否满足用户的需求。

用户验收测试可以发现系统与用户的交互是否流畅,并帮助开发人员修正不足。

用户验收测试由最终用户进行。

二、面向对象的软件测试实践1. 编写测试用例编写测试用例是面向对象的软件测试实践的第一步。

面向对象类测试技术研究

面向对象类测试技术研究

面向对象的类测试技术研究摘要:类是面向对象软件的基本构成单元,类测试是面向对象软件测试的关键。

从基于服务的、基于对象动态测试模型的、基于流图的四个方面论述了类测试的思想和方法。

关键词:面向对象软件测试类类测试1 面向对象软件的类测试类的概念是面向对象程序设计的核心概念。

把数据和对象的操作和处理封装在一个程序模块中的方法,可以说是人们积几十年程序设计实践的经验总结。

把程序以类的形式组织成若干模块,使其获得了最佳的结构特性,类的概念的引入使程序设计技术发生了革命性的转变。

从结构程序设计中以函数作为程序的基本模块转变为面向对象程序设计中,以类作为程序的基本模块,这一变化使程序设计技术出现了质的飞跃。

类的概念抓住了程序的本质。

程序的基本元素是数据,而函数是围绕数据进行的处理和操作。

类的使用使得:程序设计本身更有条理了;程序的可读性好了:程序设计的过程真正像是机器部件的组装;程序由多个程序员设计变得方便和自然;由于程序的零部件化,使得程序的可重用性变成切实可行的事情。

正是由于面向对象软件构件的基础是类,所以类的测试显得尤为重要。

类测试是面向对象软件测试的关键。

面向对象软件的类测试与传统软件的单元测试相对应,但和传统的单元测试不一样。

类测试时不仅要将操作作为类的一部分,同时要把对象与其状态结合起来,进行对象状态行为的测试。

类的测试按顺序分为以下三个部分:(1)基于服务的测试:测试类中的每一个方法;(2)基于状态的测试:考察类的实例在其生命周期各个状态下的情况;(3)基于响应状态的测试:从类和对象的责任出发,以外界向对象发送特定的消息序列的方法来测试对象的各个响应状态。

2 类测试技术(1)基于服务的类测试技术基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作。

它可以采用传统的白盒测试方法,如:控制流测试、数据流测试、循环测试、排错测试、分域测试等。

但由于受面向对象软件测试技术发展水平等方面因素的限制,测试人员在选择测试用例时往往都是根据直觉和经验来进行,给测试带来很大的盲目性;再者由于测试人员的个性及倾向性也使得选择的测试用例仅能测试出其所熟悉的某一方面的错误,许多隐含的其它错误不能被检测出来,这在无形中降低了软件的可靠性。

面向对象技术在软件开发中的应用

面向对象技术在软件开发中的应用

面向对象技术在软件开发中的应用随着计算机技术的发展和计算机的广泛应用,软件应用越来越广泛,人们对于软件开发的要求也越来越高。

在软件开发中,面向对象技术被广泛应用,成为开发的重要手段之一。

本文将详细介绍面向对象技术在软件开发中的应用。

一、面向对象技术的概念面向对象技术是一种基于对象的程序设计方法,它将系统看作一组对象的集合,每个对象都有自己的状态和行为,通过对对象的状态和行为进行抽象和封装,实现代码的重用和更好的可维护性。

面向对象技术主要包括以下三个特性:封装:在面向对象技术中,每个对象都有自己的数据和方法,并将其封装起来,以避免其他对象直接访问和改变它们的值。

继承:通过继承可以将一个类的属性和方法继承到另一个类中,实现代码的复用,减少代码的冗余。

多态:多态是指同一种方法可以被不同的对象以不同方式调用,通过多态可以提高代码的可扩展性。

二、面向对象技术在软件开发中有以下几个常见的应用:1.面向对象分析(OOA)面向对象分析(OOA)是一种软件开发方法,其主要目的是将问题域转换为面向对象的模型。

通过面向对象分析,可以将需求变成可执行的模型,同时有效的抵制需求波动造成的影响。

在OOA中,首先需要对问题进行分析,确定系统的需求和功能,然后通过细化这些需求和功能,逐步将其转化为面向对象的模型。

最终得到的模型就可以直接映射到程序代码中。

2.面向对象设计(OOD)面向对象设计(OOD)是一种根据面向对象技术的相关规定对编程进行设计的方式。

这种设计方式将业务领域中的复杂性进行分析与设计,将其转化为面向对象的模型。

在面向对象设计中,首先要创建一个类图,根据需求,在类图上添加所需的类,然后建立类之间的关系。

在建立好类图之后,开始设计每个类的成员方法和属性,最终得到模型,可以直接映射到程序代码中。

3.面向对象编程(OOP)面向对象编程(OOP)是一种开发应用程序的编程技术,通过面向对象编程,可以将任务的操作对象看作是一个独立的对象。

面向对象的软件测试技术(转)

面向对象的软件测试技术(转)

面向对象的软件测试技术(转)面向对象的软件测试技术相关知识点-面象对象(=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图和语义网络模型,即信息造型中的概念,与面向对象程序设计语方中的重要概念结合在一起而形成的分析方法。

面向对象软件测试技术的研究

面向对象软件测试技术的研究

测试 方法 的差 异 。在 传统 的软 件 测试 中, 测试 过程 要求 与应用 环境 尽 量 相结 合 , 合 得越 紧 密 , 测试 的结 果越 可 靠 。但在 结 其
面对对 象 的软 件 测试 中 , 是一 个 可 以应用 于不 同软 件 中的独 类 立部件, 其复 用 的 程度 高 , 类 的 测试 要 求尽 量 与 具体 应用 环 对 境 相独 立 , 越独 立 其测 试 的结果 越 可靠 。面 向对象 的测试 与传 统 测 试 的差 异 主 要 由于 程 序 实 现机 制 的 不 同造 成 ,类 ” 面 “ 是 向对象 程序 的 主要 机 制 , 决 了类 的测 试 问题 也就 解 决面 向对 解
在 程 序 中 的基 本 单 元却 是 “ ”它 是对 象 的抽 象 描述 , 象 是 类 , 对
类 的 实例 , 同时 类 还具 有 封 装 、 承和 多 态等 特 性 。类 是 对象 继
的变动。针对这种模型, 结合传统的测试方法 , 可以建立一种
整个 软 件开 发过 程 中不 断进 行测 试 的面 向对象 软件 模 型 , 开 使
题 。因此 , 要深 入研 究 面 向对象 软件 的测 试 技术 。 需
翰入蠡据 翘 始 袄 态
图 2 类 测 试 模 型
2 .面向 对 象测 试 与传 统 测 试技 术 的 区别
面 向对象 软件 与 传统 软件 的测 试 目标 完全 相 同 , 是为 了 都
确 保 软件 能够 正确 的 执行 预定 功能 , 试过 程基 本都 包括 了测 测
靠性 的最基 本 和最 重 要 的手 段 17 年 , o d E o g 95 G o n u h等 首 次提 出了软 件 测 试理 论 , 同年 Hu n a g全 面讨 论 了 测试 过 程
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
withdraw
creditLimit close
2、划分测试
这种测试可以减少用完全相同的方式检查类测试 用例的数目。这很像传统软件测试中的等价类划分测 试。划分测试又可分三种: 基于状态的划分,按类操作是否改变类的状态来划分 (归类); 基于属性的划分,按类操作所用到的属性来划分(归 类); 基于类型的划分,按完成的功能划分(归类)。
从上列序列可以随机产生一系列不同的操作序列,例如:
测试用例 # r1
open deposit setup balance deposit summarize
close
withdraw
从上列序列可以随机产生一系列不同的操作序列,例如:
测试用例 # r2
open withdraw setup deposit deposit balance
例如,可以把account类中的操作分类为 初始化操作(open,setup), 计算操作(deposit, withdraw), 查询操作(balance), 终止操作(close)。 然后为每个类别设计测试序列。
3、基于故障的测试
基于故障的测试是首先推测软件中可能有的 错误,然后设计出最可能发现这些错误的测试用 例。 例如,软件工程师经常在问题的边界处犯错误, 因此,在测试SQRT操作时,应该着重检查边界 情况: 一个接近零的负数和零本身。
12.4 设计测试用例
一、测试类的方法
面向对象的单元就是类,类的测试又被称 之为单元测试。类测试的目的主要确保一个类 的代码能够完全满足类的说明所描述的要求。
1、随机测试
随机测试是没有书面测试用例、记录期望 结果、检查列表、脚本或指令的测试。 主要是根据测试者的经验对软件进行功能 和性能抽查。
举为0的情况进行限制 当字符串msg的长度加上a整数的位数超过20 时,会使dsp数组溢出

sprintf (dsp, ”%s %d”,msg,a);



举例

一个银行类Account: 属性:balance(账户余额)和creditLimit(透支额) 其操作有:



open()打开账户、 setup()建立、 deposit()存款、 withdraw()取钱、 balance()查询余额、 summarize()操作清单、 creaditLimit()透支限额 close()关闭账户
举例

基于状态划分就是根据它们改变类状态的能力 对类操作进行划分。




考虑Account类,状态操作包括deposit()、 withdraw(),非状态操作包括balance()、 summarize()、creaditLimit()。 将给改变状态的操作和不改变状态的操作分别进行 测试。因此: 测试用例a: open→setup→deposit→deposit→withdraw→wi thdraw→close 测试用例b: open→setup→deposit→summrize→creaditLimi t→balance→withdraw→close
}

void divide (int *a, int *b)
{
(*a)=(*a)/(*b); return ;
}
集成测试操作步骤

编写测试用例

因为测试策略是自底向上,所以先测试divide( int *a, int *b)函数 int *a int *b 预期结果
ID
1
2 …
4
0 …
2
3 …
2
0 …
把语句if(x>=0)calculate_square_root( ); 误写成if(x>0)calculate_square_root( );
例如: int i,a[10]; for(i=0;i<=10;i++) { a[i]=0; }
二、集成测试方法
集成测试,也叫组装测试或联合测试。 在单元测试的基础上,将所有模块按照设计 要求(如根据结构图〕组装成为子系统或系 统,进行集成测试。
集成测试的目的
1.各个子功能组合起来,能否达到预期要求的父 功能; 2.一个模块的功能是否会对另一个模块的功能产 生不利的影响; 3.全局数据结构是否有问题; 4.单个模块的误差积累起来,是否会放大,从而 达到不可接受的程度。
需求描述


被测试段代码实现的功能是:如果a>b,则返 回a,否则返回a/b 被测试段代码由两个函数实现,分别是

int max (int a, int b, char *msg) void divide (int *a, int *b)

divide函数实现a/b功能,max函数实现其他 对应功能,并进行结果输出

int max (int a, int b, char *msg)
{
char dsp[20]; /*声明一个大小为20的char型数组*/ if (a<0 || b<0) /*如果a和b中有一个数不是正数*/ return -1; /*则直接返回*/ if (a>b) /*如果a大于b,*/ ; /*什么也不做*/ else divide (&a, &b); sprintf (dsp, ”%s %d”,msg,a); printf (dsp); return a;

一个银行类Account: 属性:balance(账户余额)和creditLimit(透支额) 其操作有:



open()打开账户、 setup()建立、 deposit()存款、 withdraw()取钱、 balance()查询余额、 summarize()操作清单、 close()关闭账户
举例

基于属性划分就是根据它们所使用的属性进行划 分。


对于account类来说,可以使用属性balance来定义划 分,从而把操作划分成3个类别: 使用balance的操作; 修改balance的操作; 不使用也不修改balance的操作。
然后,为每个类别设计测试序列。
举例
基于功能的划分根据类操作所完成的功能来划分 类操作。
相关文档
最新文档