Ch8-面向对象软件测试-STMT

合集下载

附1-软件测试方法-STMT-2

附1-软件测试方法-STMT-2

第三章 软件测试方法
5
在分析需求规格说明的基础上划分等价类,列出等价类表 有效等价类
对于程序的需求说明来说是合理的,有意义的输入数据
所构成的集合 可检查程序是否实现了规格说明中所规定的功能和性能 无效等价类 对于程序的需求说明来说是不合理的,没有意义的输入 i1 数据所构成的集合 i4 利用它可以检验程序对于无效数据的处理能力,可以测 i2 试程序/系统的容错性——对异常输入情况的处理。
软件测试的方法-2
第三章 软件测试方法 1
黑盒测试方法
也称为功能测试或数据驱动测试 检查系统功能是否按照需求规格说明书的规定正
常使用、是否能适当地接收输入数据而输出正确 的结果,检查相应的文档是否采用了正确的模板 、是否满足规范要求等。 1 等价类划分法 2 边界值分析法 3 判定表方法 4 因果图法 5 正交试验法 6 功能图法 7 错误推测法
第三章 软件测试方法
7
确定等价类的方法
1、在输入条件规定了取值范围或值的个数的情况下,则
可以确立一个有效等价类和两个无效等价类。

例如:程序输入条件为满足小于100大于10的整数x,
则有效等价类为10<X<100,两个无效等价类为x<=10和
x>=100。
less than range
in range

如果程序的规格说明给出的输入域或输出域是有序集合 ,则应选取集合的第一个元素和最后一个元素作为测试 用例。

如果程序中使用了一个内部数据结构,则应当选择这个
内部数据结构的边界上的值作为测试用例。

Test cases for ABS(x) :
class x < 0, arbitrary value:

面向对象的软件测试

面向对象的软件测试

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

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

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

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

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

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

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

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

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

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

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

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

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

面向对象的软件测试综述

面向对象的软件测试综述

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

面向对象的软件单元测试概述

面向对象的软件单元测试概述

End ‘Day constructor
33. Endif
23. setDay(pDay, pMonth)
End ‘increment
24. setCurrentPos(pDay)
25. m = pMonth
End ‘setDay
26. getDay()
27. return currentPos
End ‘getDay
➢例
Base::Redefined()含有如下语句:
If (value<0) message(“less”); else if (value==0) message(“equal”); else message(“more”);
……
面向对象的单元测试(续)
➢ 例(续) 在Derived::Redefined()中定义为: If (value<0) message(“less”); else if (value==0) message(“It is equal”); else { message(“more”); if (value==88) message(“luck”); } …… 在原有对父类Base的测试上,对Derived::Redefined()
End ‘CalendarUnit
a. setCurrentPos(pCurrnetPos) b. currentPos = pCurrnetPos
End ‘setCurrentPos
abstract protected boolean increment()
类:testlt
class testlt main() 1. Date testdate(testMonth,testDay,testYear) 2. testdate.increment() 3. testdate.printDate() End ‘testlt

软件测试教学PPT-面向对象的软件测试

软件测试教学PPT-面向对象的软件测试

面向对象地集成测试
在面向对象系统地集成测试需求注意以 下几点:
面向对象系统本质上是通过小地,可重 用地组件构成。因此,集成测试对于面 向对象系统来说更重要。
面向对象系统下组件地开发一般更具并 行,因此对频繁集成地要求更高。
由于并行提高,集成测试时需求考虑类 地完成顺序,也需求设计驱动器来模拟 外没有完成地类功能。
面向对象地软件测试案例
HelloWorld类地测试 每一种语言在其学用书地第一个例子通
面向对象编程对测试地影响
面向对象编程可能对测试有几种方式地 影响,依赖于面向对象编程地方法。
某些类型地故障变得就不可能(不值得 去测试);
某些类型地故障变得更加可能(值得行 测试);
出现某些新地故障类型。 测试面向对象地类操作类似于测试一段
代码,它设置了函数参数,然后调用该函 数。继承是一种方便地生产多态地方式, 在调用点,关心地不是继承,而是多态。
状态 状态图
功能模型
功能模型描述了系统地所有计算。功能 模型指出发生了什么,动态模型确定什 么时候发生,而对象模型确定发生地客 体。功能模型由多张数据流图组成。
处理 数据流 动作对象 数据存储对象

面向对象软件地测试策略
面向对象测试地目地与传统地结构化软件 测试相同,都是需求在现实与时间范围内 利用有限地时间与工作量尽可能多地发现 错误。
面向对象系统测试一般都包含以下主题: 单元测试 类地集成测试 系统测试 回归测试 面向对象测试地有关模型
面向对象地单元测试
当考虑到面向对象软件时,单元测试地概 念发生了变化。面向对象软件引入了封装 与类地概念,这意味着每个类地实例(对 象)包装有属(数据)与处理这些数据地 操作(函数)。封装地类常是单元测试地 重点,然而,类包含地操作是最小地可测试 单元。

04 面向对象的测试

04 面向对象的测试

Software Testing
Ultrawise
IBM Software Institute
2 类测试
面向对象软件产品的基本组成单位是类,从宏观上来看,面 向对象软件是各个类之间的相互作用。在面向对象系统中,系 统的基本构造模块是封装了的数据和方法的类和对象,而不再 是一个个能完成特定功能的功能模块。每个对象有自己的生 存周期,有自己的状态。消息是对象之间相互请求或协作的途 径,是外界使用对象方法及获取对象状态的惟一方式。对象的 功能是在消息的触发下,由对象所属类中定义的方法与相关对 象的合作共同完成。且在不同状态下对消息的响应可能完全 不同。工作过程中对象的状态可能被改变,产生新的状态。对 象中的数据和方法是一个有机的整体,测试过程中不能仅仅检 查输入数据产生的输出结果是否与预期的吻合,还要考虑对象 的状态,且在不同状态下对消息的响应可能完全不同。工作 过程中对象的状态可能被改变,产生新的状态。对象中的数据 和方法是一个有机的整体,测试过程中不能仅仅检查输入数据 产生的输出结果是否与预期的吻合,还要考虑对象的状态。
Software Testing
Ultrawise
IBM Software Institute
2 类测试
类函数成员的正确行为只是类能够实现要求的功能的基础 ,类成员函数间的作用和类之间的服务调用是单元测试 无法确定的。因此,需要进行面向对象的集成测试。 测试类的功能,不能仅满足于代码能无错运行或被测试类 能提供的功能无错,应该以所做的OOD结果为依据,检 OOD 测类提供的功能是否满足设计的要求,是否有缺陷。必 要时(如通过OOD结仍不清楚明确的地方)还应该参照 OOA的结果,以之为最终标准。
Software Testing
Ultrawise

9.面向对象的软件测试

9.面向对象的软件测试

13
面向对象的软件测试 - OOA Test
1)对认定的类的测试
OOA中认定的类是对问题空间中的结构,其他系统,设备,被记忆的事 件,系统涉及的人员等实际实例的抽象。对它的测试可以从如下方面考 虑: • 认定的类是否全面,是否问题领域中所有涉及到的对象都反映在 认定的类中。 • 认定的类是否具有多个属性。只有一个属性的类通常应看成其他 类的属性,而不是抽象为独立的类。 • 认定为同一个类的对象是否有共同的,区别于其他类对象的共同 属性。 • 对认定为同一类的对象是否提供或需要相同的服务,如果服务随 着不同的对象而变化,认定的对象就需要分解或利用继承性来分 类表示。 • 如果系统不需要始终保持类所代表的对象的信息,认定的类也无 必要存在。 • 认定的类的名称应该尽量准确,适用。
面向对象的软件测试
费飞辉(ffh) 中科大软件学院
面向对象的软件测试
• 1、面向对象测试的概述 • 2、开发前期的面向对象测试
2.1 面向对象分析的测试 2.2 面向对象设计的测试
2.3 面向对象编程的测试
• 3、开发后期的面向对象测试
3.1 3.2 3.3 3.4 面向对象的单元测试 面向对象的集成测试 面向对象的确认测试 面向对象的系统测试
16
面向对象的软件测试 - OOA Test
• 对认定的分类结构(泛化结构)测试可从如下方面着手:
• 对于结构中的一个类,尤其是处于高层的类,看是否能在问题 领域中派生出其下一层的类。 • 对于结构中的一个类,尤其是处于同一低层的类,看是否能抽 象出在现实世界中有意义的更一般的上层的类。 • 高层的对象的特性和服务是否完全体现下层的共性 • 低层的对象是否基于其上层类的属性和服务并具有自己的特殊性。

Ch软件测试方法STMT

Ch软件测试方法STMT

value
greater than value
第26页/共81页
确定等价类的方法(2)
• 在输入条件规定了输入值的集合或者规定了“必须如何”的条 件的情况下,可以确立一个有效等价类和一个无效等价类。
not member of set
member of set
• 在输入条件是一个布尔量的情况下,可确定一个有效等价类和
• 分为有效等价类和无效等价类。有效等价类是有意义的、合理的输入数据,可 检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价 类的意义相反
• 在分析需求规格说明的基础上划分等价类,列出等价类表
i1
设计测试用例时,要同时考虑这两
种等价类。因为软件不仅要能接收 合理的数据,也要能经受意外的考
第23页/共81页
3.2 黑盒测试方法
3.2.1 等价类划分法 3.2.2 边界值分析法 3.2.3 判定表方法 3.2.4 因果图法 3.2.5 正交试验法 3.2.6 功能图法 3.2.7 错误推测法
第24页/共81页
3.2.1 等价类划分方法
• 将程序可能的输入数据分成若干个子集,从每个子集选取一个代表性的数据作 为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是 等效的
一个判定往往代表着程序的一个分支, 所以判定覆盖也被称为分支覆盖。
第5页/共81页
分支覆盖 - example
1
PROGRAM som ( maxint, N : INT )
2
INT result := 0 ; i := 0 ;
3
IF N < 0
4
THEN N := - N ;
5
WHILE ( i < N ) AND ( result <= maxint )

面向对象软件测试-STMT

面向对象软件测试-STMT

面向对象(object-oriented)
面向对象(object-oriented) = 对象 + 分类 + 继承 + 通信 面向对象
面向对象(object-oriented)
可重用性.从一开始对象的产生就是为了重复利用, 可重用性.从一开始对象的产生就是为了重复利用, 完成的对象将在今后的程序开发中被部分或全部地 重复利用. 重复利用. 可靠性.由于面向对象的应用程序包含了通过测试 可靠性. 的标准部分,因此更加可靠. 的标准部分,因此更加可靠.由于大量代码来源于 成熟可靠的类库, 成熟可靠的类库,因而新开发程序的新增代码明显 减少,这是程序可靠性提高的一个重要原因. 减少,这是程序可靠性提高的一个重要原因.
8.4 面向对象的集成测试
主要是两个方面: 类的线性测试,交互测试. 类的独立性测试(跨平台)方面测试.
面向对象的程序是由若干对象组成的,这些对象互相协作以解决某 些问题.对象的协作方式 对象的协作方式决定了程序能做什么,从而决定了这个程 对象的协作方式 序执行的正确性.因此,一个程序中对象的正确协作----即交互 交互----对 交互 于程序的正确性是非常关键的.
8.4 面向对象的集成测试—常用方法 面向对象的集成测试—
抽样测试 正交阵列测试
例如,假设有3个因素----即A,B,C,每个因素有3 个级别----即1,2, 和3,那么这些值就有27种可能的组合情况----A的3 种组合情况×C的3 种 组合情况.
8.4 面向对象的集成测试—分布式对象测试 面向对象的集成测试—
面向对象层次结构测试重点
对认定的对象的测试
OOA(面向对象分析)中认定的对象是对问题空间中的结构,其他 系统,设备,被记忆的事件,系统涉及的人员等实际实例的抽象. 对它的测试可以从如下方面考虑: 认定的对象是否全面,其名称应该尽量准确,适用,是否问题空间 认定的对象是否全面 中所涉及到的实例都反映在认定的抽象对象中. 认定的对象是否具有多个属性.只有一个属性的对象通常应看作其 认定的对象是否具有多个属性 他对象的属性而不是抽象为独立的对象 对认定为同一对象的实例是否有共同的,区别于其他实例的共同属 共同属 是否提供或需要相同的服务,如果服务随着不同的实例而变化, 性,是否提供或需要相同的服务 认定的对象就需要分解或利用继承性来分类表示. 如果系统没有必要始终保持对象代表的实例信息 实例信息,提供或者得到关 实例信息 于它的服务,认定的对象也无必要.

面向对象的软件测试

面向对象的软件测试
04
持续改进软件测试过程
分析测试结果
分析测试结果,找出可能的问题和改进点。
提升技能和知识
持续学习新的软件测试技术和方法,提升团 队技能和知识水平。
改进测试用例
根据分析结果,改进或补充测试用例,以提 高测试覆盖率。
引入自动化
引入更多的自动化测试,提高测试效率和质 量。
THANKS FOR WATCHING
系统测试可以使用自动 化测试工具进行,如 Selenium、JMeter等 ,这些工具支持对整个 系统的全面测试和性能 监控。
验收测试
01
总结词
验收测试是在软件开发完成后 进行的最终测试阶段,以确认 软件是否满足用户需求并可交 付使用。
02
详细描述
验收测试关注的是软件的最终 质量和用户满意度,验证软件 是否符合用户期望和需求。它 通常在系统测试之后进行,以 确保软件可以交付给用户使用 。
详细描述
集成测试关注的是模块之间的交互和通信,验证 各个模块在组合后能否协同工作。它通常在单元 测试之后进行,以确保模块之间的集成不会引入 新的错误。
工具
集成测试可以使用自动化测试框架进行,如 TestLink、FitNesse等,这些工具支持对多个模 块的集成测试和断言。
系统测试
总结词
详细描述
测试方法
Mockito
总结词
Mockito是一个流行的Java模拟框架,用于 模拟对象和创建测试场景。
详细描述
Mockito能够帮助开发者创建模拟对象,模 拟被测对象的行为,以便在单元测试中隔离 依赖关系。它提供了简洁的注解和API,使得 模拟对象的使用和管理变得简单。Mockito 还支持对接口、类和私有方法的模拟,提供

面向对象软件测试中的自动化测试技术研究

面向对象软件测试中的自动化测试技术研究

面向对象软件测试中的自动化测试技术研究一、引言随着软件工程的发展,软件开发的过程越来越重视软件测试,因为测试是保证软件质量的最好方式之一。

在软件测试过程中,自动化测试技术越来越受到人们的关注。

传统的测试方式需要手工执行测试用例,时间成本高,效率低下。

自动化测试技术可以提高测试效率,节省测试时间和成本。

二、面向对象软件测试的基本概念在面向对象软件测试中,主要采用基于对象的测试方法。

对象是软件的基本构建单元,包含数据和方法。

软件测试的目的是通过运行测试用例证明软件的正确性。

面向对象软件测试的基本概念包括:类、对象、方法、继承、多态等。

三、自动化测试技术自动化测试技术是指利用工具或脚本执行测试用例,自动化执行测试过程,自动产生测试报告和测试结果。

自动化测试可以提高测试效率,加快测试速度,节省测试成本。

常见的自动化测试技术包括:单元测试、接口测试、功能测试、性能测试、安全测试等。

1.单元测试单元测试是指对软件中的最小功能模块(通常是方法)进行测试。

单元测试使用被测试单元的源代码或二进制代码作为测试输入,输出测试结果。

单元测试的好处在于它可以帮助程序员检测到潜在的程序错误,以及在代码中的调试过程中提供反馈。

2.接口测试接口测试是测试软件与其它系统进行互联的接口。

接口测试主要针对协议的完整性、数据的正确性等进行测试,以确保系统之间的通讯是正确的。

接口测试可以通过手工测试或自动化测试进行。

3.功能测试功能测试是指对软件的功能进行测试,以确认软件在各种条件下都能够正常运行。

功能测试需要根据软件需求规格说明书中列出的功能点,编写测试用例进行测试。

测试用例既可以手工编写,也可以自动化生成。

4.性能测试性能测试是指对软件的性能进行测试,包括软件的并发性、响应时间等。

性能测试可以帮助软件开发人员了解软件的性能瓶颈,为软件的性能优化提供依据。

性能测试既可以手工进行,也可以通过自动化测试工具进行。

5.安全测试安全测试是指对软件的安全性进行测试,主要是测试软件的漏洞和安全性问题。

CHAM在面向对象类测试中的应用

CHAM在面向对象类测试中的应用
s a e f h d n mi t a s o ma i n L a a e n i t t o t e y a c r n f r t . TS s s ma t mo e o v ro s o maie l n u g c n x r s t e y a c o c d l f a i u f r l d a g a e a e p e s h d n mi z c a a t r tc f t e c a s UM L t t c a t De c i e y CHAM ,g n r t d LTS b h r c e i is o h l s . s s a e h r s rb d b e e ae y CHAM , g n r t d t s i g s q e c s b e e a e e tn e u n e y
由C HAM 的 良好 动态 特 性来 描 述类 状 态 的 动 态
软件 测 试技 术 的研究 必然 是 面 向对 象 开发方 法重 要 的

环 。面 向对象 开发 技术 被视 为解 决软 件危 机 的一种
重要 技 术 , 在代 码 的可 重用 性 、 据 的安 全性 、 其 数 软件
的体 系 结构 等方 面都 有 了很大 的改 进与 提高 。但 是面
T re u n r和 Ro sn最早 提 出 了基 于状 态 的测试 方 bo
法。 该方 法使 用 的是实 现状 态 , 过对 对象 数据 成员 的 通
值进 行 跟踪监 视来 检验 类 中方法 是否 正确 执行 。 目前 基 于 UML状 态 图 的测 试 方法 已成 为 一 个 热 点 , 内 国 外 的研 究 也 已取 得 了一 系 列 的成果 。S ea i Gn s, tfna ei D e oL tl i ael g a和 Mik sik2 出了 将 UML 状 e eMasn [ 给 态 图转换 为 I T OL s生 成测 试用 例 的形 式 化定 义 。

第六章面向对象测试

第六章面向对象测试

二、面向对象软件测试内容及方法
(2) 对认定的结构的测试
对认定的分类结构的测试可从如下方面着手: 对于结构中的一种对象,尤其是处于高层的对象,是 否在问题空间中含有不同于下一层对象的特殊可能性, 即是否能派生出下一层对象。 对于结构中的一种对象,尤其是处于同一低层的对象, 是否能抽象出在现实中有意义的更一般的上层对象。 对所有认定的对象,是否能在问题空间内向上层抽象 出在现实中有意义的对象 高层的对象的特性是否完全体现下层的共性 低层的对象是否有高层特性基础上的特殊性
二、面向对象软件测试内容及方法
对认定的组装结构的测试从如下方面入手: 整体(对象)和部件(对象)的组装关系是否符合 现实的关系。 整体(对象)的部件(对象)是否在考虑的问题空 间中有实际应用。 整体(对象)中是否遗漏了反映在问题空间中有用 的部件(对象)。 部件(对象)是否能够在问题空间中组装新的有现 实意义的整体(对象)。
二、面向对象软件测试内容及方法
对定义的属性和实例关联的测试
在问题空间中每个对象的属性是否定义完整。
定义的实例关联是否符合现实。 在问题空间中实例关联是否定义完整,特别需要注意
1-多和多-多的实例关联。
二、面向对象软件测试内容及方法
对定义的服务和消息关联的测试





对定义的服务和消息关联的测试从如下方面进行: 对象和结构在问题空间的不同状态是否定义了相应 的服务。 对象或结构所需要的服务是否都定义了相应的消息 关联。 定义的消息关联所指引的服务提供是否正确。 沿着消息关联执行的线程是否合理,是否符合现实 过程。 定义的服务是否重复,是否定义了能够得到的服务。
1、数据成员是否满足数据封装的要求

面向对象的软件测试技术

面向对象的软件测试技术

面向对象的软件测试技术
吴国强
【期刊名称】《湖州职业技术学院学报》
【年(卷),期】2005(003)004
【摘要】面向对象软件测试技术的研究是面向对象开发方法不可缺少的一环,传统的测试技术已经无法有效地进行测试.因此在对面向对象软件测试技术进行了综合分析的基础上,提出了面向对象的测试模型,给出了模型中的各种测试方法.
【总页数】3页(P84-86)
【作者】吴国强
【作者单位】湖州职业技术学院,理工分院,浙江,湖州,313000
【正文语种】中文
【中图分类】TP311.56
【相关文献】
1.面向对象软件测试技术研究 [J], 郭滔
2.关于面向对象软件测试技术分析 [J], 陈文其
3.关于面向对象软件测试技术的研究 [J], 余先荣;罗婷婷
4.面向对象软件测试技术及应用实践 [J], 赵丽辉;
5.关于面向对象软件测试技术的研究 [J], 张迎春
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Zhu.Kerry@
分层与增量 -测试用例选择
Zhu.Kerry@
新操作引入了新的功能/代码,需要测试。 在D中改变那些在C中声明的操作规范,需要添加新的基
于规范的测试用例——符合其前置条件的新输入,检查 加强的后置条件导致的新的期望结果
在C中实现了某个操作并且被D继承了的方法,可复用于
类层次与类结构
http://fle3.uiah.fi/uml/
对认定的对象的测试
Zhu.Kerry@
认定的对象是否全面,其名称准确、适用?问题空间中 所涉及到的实例是否都反映在认定的抽象对象中? 认定的对象是否具有多个属性。只有一个属性的对象通 常应看作其他对象的属性而不是抽象为独立的对象 对认定为同一对象的实例是否有共同的、区别于其他实 例的共同属性,是否提供或需要相同的服务,如果服务 随着不同的实例而变化,认定的对象就需要分解或利用 继承性来分类表示 如果系统没有必要始终保持对象代表的实例信息,提供 或者得到关于它的服务,认定的对象也无必要
面向对象(object-oriented) = 对象 + 分类 + 继承 + 通信
Zhu.Kerry@
类与子类的测试
Zhu.Kerry@
分层与增量
所有的用于C的基于规范的测试用例也都适用于D “继承的测试用例”来代 表从父类测试用例中选取 出来的、用于子类的测试 用例。 通过增量变化分析来确定 继承的测试用例中哪些必 须执行 合理的分析,有利于找 出更有价值的测试用例。
Biz逻辑事务层的单元测试
有效的单元测试必须隔离测试对象和外部依赖,以便 管理测试对象的状态和行为。 使用DbUnit,开发人员可以控制测试数据库的状态, 包括准备好初始化数据以及将数据库状态恢复到测试 前的状态。 DbUnit是为数据库驱动、对JUnit 扩展的解决方法
Zhu.Kerry@
Zhu.Kerry@
调用方法:
BussinessObject bo = (BussinessObject) applicationContext.getBean("BussinessObject");
用HSQLDB对Hibernate进行单元测试
a) 下载hsqldb.jar放在web-inf/lib目录下 。 b) 编写test.script文件,创建数据库结构,如create table…… c) 编写test.properties文件,配置hsqldb数据属性。 d) 在spring中配置sessionFactory bean,其中 dataSource配置成hsqldb,hibernate方言为 org.hibernate.dialect.HSQLDialect
8.4.4 ~ 8.4.6 P.170~P.172
8.5 基于程序角度的Jห้องสมุดไป่ตู้va测试
Zhu.Kerry@
Action层的单元测试 (mork StrutsTestCase) Biz逻辑事务层的单元测试 (DbUnit) Servlet的单元测试 (httpUnit) 流行框架Struts+Spring+Hibernate的测试
字符串或数组越界案例分析
Zhu.Kerry@
其它示例
指定的页面找不到的错Error404或Error 500案例分析 没有合理的关闭资源导致系统性能下降或最终崩溃 不当使用synchronized导致系统性能下降或最终崩溃 调用不当方法导致结果出错
Zhu.Kerry@
Zhu.Kerry@
Spring的测试机制 用Spring Mock对Spring进行单元测试 用HSQLDB对Hibernate进行单元测试
Struts+Spring+Hibernate的测试
Zhu.Kerry@
Struts: MVC Framework,用于快速开发Java Web应用 Spring:轻型容器,其核心是Bean Factory),用以构 造所需的Model Hibernate:对象关系映射框架,对JDBC使用进行了封 装,这样可以随心所欲使用对象编程思维来操纵数据库
Zhu.Kerry@
认定的组装结构测试
整体(对象)和部件(对象)是否在考虑的问题空间 中有实际应用,其组装关系是否符合现实的关系。 整体(对象)中是否遗漏了反映在问题空间中的有用 部件(对象)。 部件(对象)是否能够在空间中组装新的有现实意义 的整体(对象)。 实例的整体与局部的关系 “与”关系、 “has a”关系
Action层的单元测试
Mork就是模型,模拟被测试对象关联的对象及测试数据 StrutsTestCase 是Junit TestCase类的扩展,提供基于 Struts框架的代码测试。
Zhu.Kerry@
用MockStrutsTestCase测试举例
见 P.173 ~ P.174
类测试系列的充分性
Zhu.Kerry@

基于状态的覆盖率,测试覆盖了多少个状态转换为依据 基于约束的覆盖率,有多少对前置/后置条件被覆盖
基于代码的覆盖率。当所有的测试用例都执行结束时, 确定实现一个类的每一行代码或代码通过的每一条路径至 少执行了一次
8.3 面向对象的集成测试
Zhu.Kerry@
示例见: P.177 ~ P.178
Struts+Spring+Hibernate的测试
Struts: MVC Framework,用于快速开发Java Web应用 Spring:轻型容器,其核心是Bean Factory),用以构 造所需的Model Hibernate:对象关系映射框架,对JDBC使用进行了封 装,这样可以随心所欲使用对象编程思维来操纵数据库
认定的分类结构测试
处于高层的对象,是否在问题空间中含有不同于下一 层对象的特殊可能性,即是否能派生出下一层对象? 处于同一低层的对象,是否能抽象出在现实中有意义 的更一般的上层对象? 对所有认定的对象,是否能在问题空间内向上层抽象 出在现实中有意义的对象? 高层的对象的特性是否完全体现下层的共性,低层的 对象是否有高层特性基础上的特殊性? 实例的一般与特殊的关系 “或”关系、 “is a”关系
Zhu.Kerry@
前置条件和后置条件
前置条件示例: Contract.Requires( x != null ); 后置条件示例: Contract.EnsuresOnThrow<T>( this.F > 0 ); Contract. Result<T>()
/zhcn/library/dd264808.aspx
示例见: P.175 ~ P.176
Servlet的单元测试
HttpUnit 可提供一个模拟的Servlet容器,让Servlet代码不 需要发布到Servlet容器(如tomcat)就可以直接测试 使用HttpUnit测试Servlet时,先创建一个ServletRunner 的实例,负责模拟Servlet容器环境。 如果只测试单个Servlet,可直接使用registerServlet方法 注册其Servlet, 如果需要配置多个Servlet,需编写自己的web.xml,然 后在初始化ServletRunner时将其作为参数传给 ServletRunner的构造器
对Spring进行单元测试
Spring从Web端为每个关键接口提供了 Mock类 Spring对JUnit框架扩展 使用Spring-mock.jar: 创建BaseTestCase来继承 AbstractTransactionalDataSourceSpringContextTest s ,其他测试用例继承BaseTestCase类
Zhu.Kerry@
类的线性测试,交互测试 类的独立性(跨平台方面)测试 分布式对象测试
交互测试的重点是确保对象之间的消息传送能够正确进行
8.3.1 对象交互性测试
汇集类测试:可以使用测试原始类的方法来测试汇集
类,创建一些实例,确保实例作为消息中的参数被传递 给正在测试的集合: 存放这些对象的引用(对象之间一对多的关系) 创建、删除这些对象的实例 协作类测试: 集中测试对象之间调用关系,包括对象在被 使用过程中属性是否按定义的要求被正确使用、或被修改
Zhu.Kerry@
分布式对象测试注意事项

Zhu.Kerry@
局部故障
超时 结构的动态性 线程 同步
8.4 基于客户角度的Java 测试
空指针保护案例分析
Zhu.Kerry@
格式化数字错误案例分析
Zhu.Kerry@
Zhu.Kerry@
面向类层次结构测试重点
类层次结构是否涵盖了所有定义的类? 是否能体现所定义的实例关联、消息关联? 子类是否具有父类没有的新特性? 子类间的共同特性是否完全在父类中得以体现?
类层次结构:基于OOA中产生的分类结构的原则来组织, 着重体现父类和子类间的一般性和特殊性
该方法的所有继承来的基于规范的测试用例 。
D中添加新的实例变量来实现更多的状态和/或属性,最
有可能与新的操作和/或重载方法中代码有关,需要测试
面向对象层次结构测试重点
Zhu.Kerry@
认定的对象 认定的结构 构造的类层次结构
认定的结构:多种对象的 组织方式,反映问题空间 中的复杂实例和关系
Zhu.Kerry@
Q&A
Zhu.Kerry@
Zhu.Kerry@
8.2 面向对象的单元测试
类测试的方法 代码检查 设计测试用例有效地执行测试
Zhu.Kerry@
类测试的组成部分
类在系统中的作用,尤其是与之相关联的风险程度。 类的复杂性(根据状态个数、操作个数以及关联其他类 的程度等进行衡量) 开发这个类测试驱动程序所需的工作量。
相关文档
最新文档