面向对象软件测试.ppt

上传人:本田雅阁 文档编号:2613195 上传时间:2019-04-19 格式:PPT 页数:78 大小:1.14MB
返回 下载 相关 举报
面向对象软件测试.ppt_第1页
第1页 / 共78页
面向对象软件测试.ppt_第2页
第2页 / 共78页
面向对象软件测试.ppt_第3页
第3页 / 共78页
面向对象软件测试.ppt_第4页
第4页 / 共78页
面向对象软件测试.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《面向对象软件测试.ppt》由会员分享,可在线阅读,更多相关《面向对象软件测试.ppt(78页珍藏版)》请在三一文库上搜索。

1、IT Education char *p= “hiden“; class Visible public: int b=2; char *s= “visible“; Hiden pp; Visible *qq=(Visible *) 在上面的程序段中,pp的数据成员可以通过qq被随意 访问。 IT Education 该语句没有全面检查write()的返回值,无意中断然假设了只 有数据被完全写入和没有写入两种情况。当测试也忽略了 数据部分写入的情况,就给程序遗留了隐患。 按程序的设计,使用函数strrchr()查找最后的匹配字符, 但误程序中写成了函数strchr(),使程序功能实现时查找的 是

2、第一个匹配字符。 程序中将if (strncmp(str1,str2,strlen(str1)误写成了if (strncmp(str1,str2,strlen(str2)。如果测试用例中使用的数 据str1和str2长度一样,就无法检测出。 IT Education else if (value=0) message (“equal“); else message (“more“); Derived:Redfined()中定义为 If (value0) message (“less“); else if (value=0) message (“It is equal“); else messa

3、ge (“more“); if (value=88)message(“luck“); 在原有的测试上,对Derived:Redfined()的测试只 需做如下改动:将value=0的测试结果期望改动;增 加value=88的测试。 IT Education & Training 8.2 类测试 具体说类测试的方法有两种 代码检查 执行测试用例 代码检查 优点:同行走查,往往能查出5060以 上的比较明显的错误 不足:代码检查易受人为因素影响,代码检 查在回归测试方面明显需要更多的工作量, 常常和原始测试差不多 IT Education & Training 8.2 类测试 基于执行测试用例的方

4、法 优点:克服了代码检查的不足 缺点:确定测试用例和开发测试驱动程序也 需要很大的工作量。在某些情况下,构造一 个测试驱动程序的工作量比开发这个类的还 多,此时就应该评估在使用了这个类的系统 之外测试测试这个类所花的代价和带来的收 益。 IT Education & Training 8.2 类测试 构建测试用例:要对类进行测试,就必 须先确定和构建类的测试用例。类的描 述方法有OCL,自然语言,和状态图等方 法,可以根据类说明的描述方法构件类 的测试用例。 根据类说明(用OCL表示)确定测试用例 根据类的状态转换图来构建类的测试用例 IT Education & Training 8.2 类

5、测试 根据类的说明确定测试用例 用OCL表示的类的说明中描述了类的每一个 限定条件条件。在OCL条件下分析每个逻辑 关系,从而得到由这个条件的结构所对应的 测试用例。这种确定类的测试用例的方法叫 做根据前置条件和后置条件构建测试用例。 其总体思想是:为所有可能出现的组合情况 确定测试用例需求。在这些可能出现的组合 情况下,可满足前置条件,也能够到达后置 条件。根据这些需求,创建测试用例;创建 拥有特定输入值(常见值和特殊值)的测试 用例;确定它们的正确输出预期输出值 。 IT Education & Training 8.2 类测试 例如A、B、C代表用OCL表示的组件, 前置条件和后置条件列

6、表如下(下页) : IT Education & Training 8.2 类测试 IT Education & Training 8.2 类测试 IT Education & Training 8.2 类测试 根据前置条件和后置条件创建测试用例的 基本步骤如下: 1 确定在表1中与前置条件形成相匹配的各个项目 所指定的一系列前置条件的影响。 2 确定在表2中与后置条件形成相匹配的各个项目 所指定的一系列前置条件的影响。 3 根据影响到列表中各个项目的所有可能的组合情 况从而构造测试用例需求。一种简单的方法就是:用 第一个列表中的每一个输入约束来代替第二个列表中 每一个前置条件。 4 排除表中

7、生成的所有无意义的条件。 IT Education & Training 8.2 类测试 根据状态转换图构建测试用例 状态转换图以图例的形式说明了与一个类的 实例相关联的行为。状态转换图可用来补充 编写的类说明或者构成完整的类说明。状态 图中的每一个转换都描述了一个或多个测试 用例需求。因而,可以通过在转换的每一端 选择有代表性的值和边界来满足这些需求。 如果转换是受保护的,那么也应该为这些保 护条件选择边界。状态的边界值取决于状态 相关属性值的范围,可以根据属性值来定义 每一个状态。 IT Education & Training 8.2 类测试 两种构建测试用例方法的比较 和根据前置条件和

8、后置条件创建类的测试用例相比 ,根据状态转换图创建类的测试用例有非常大的优 势。在类的状态图中,类相关联的行为非常的明显 和直观,测试用例的需求直接来自于状态转换,因 而很容易确定测试用例的需求。 不过基于状态图的方法也有其不利的方面。如要完 全理解怎样根据属性值来定义状态;事件是如何在 一个给定的状态内影响特定值等。这都很难仅从简 单的状态图中确定。因此,在使用基于状态转换图 进行测试时,务必在生成的测试用例时检查每个状 态转换的边界值和预期值。 IT Education & Training 第8章 面向对象软件测试 8.1 面向对象测试的问题 8.2 类测试 8.3 面向对象的集成测试

9、8.4 GUI测试 8.5 面向对象的系统测试 IT Education & Training 8.3 面向对象的集成测试 面向对象设计(OOD)采用“造型的观点 “,以OOA为基础归纳出类,并建立类结 构或进一步构造成类库,实现分析结果 对问题空间的抽象。OOD 归纳的类,可 以是对象简单的延续,可以是不同对象 的相同或相似的服务。由此可见,OOD 不是在OOA上的另一思维方式的大动干 戈,而是OOA的进一步细化和更高层的 抽象。 IT Education & Training 8.3 面向对象的集成测试 ,OOD与OOA 的界限通常是难以严格区分的 。OOD确定类和类结构不仅是满足当前需求

10、 分析的要求,更重要的是通过重新组合或加以 适当的补充,能方便实现功能的重用和扩增, 以不断适应用户的要求。因此,对OOD的测 试,针对功能的实现和重用以及对OOA结果 的拓展,从如下三方面考虑: 对认定的类的测试 对构造的类层次结构的测试 对类库的支持的测试 IT Education & Training 8.3 面向对象的集成测试 1 对认定的类的测试 OOD认定的类可以是OOA中认定的对象 ,也可以是对象所需要的服务的抽象,对象所 具有的属性的抽象。认定的类原则上应该尽量 基础性,这样才便于维护和重用。测试认定的 类: 1.1 是否含盖了OOA中所有认定的对象。 1.2 是否能体现OOA

11、中定义的属性。 1.3 是否能实现OOA中定义的服务。 1.4 是否对应着一个含义明确的数据抽象 。 1.5 是否尽可能少的依赖其他类。 1.6 类中的方法(C+:类的成员函数) 是否单用途。 IT Education & Training 8.3 面向对象的集成测试 2 对构造的类层次结构的测试 为能充分发挥面向对象的继承共享特性,OOD的 类层次结构,通常基于OOA中产生的分类结构的原则 来组织,着重体现父类和子类间一般性和特殊性。两 者概念上的差异。在当前的问题空间,对类层次结构 的主要要求是能在解空间构造实现全部功能的结构框 架。为此,测试如下方面: 2.1 类层次结构是否含盖了所有定

12、义的类。 2.2 是否能体现OOA中所定义的实例关联。 2.3 是否能实现OOA中所定义的消息关联。 2.4 子类是否具有父类没有的新特性。 2.5 子类间的共同特性是否完全在父类中得以体现 。 IT Education & Training 8.3 面向对象的集成测试 3 对类库支持的测试 对类库的支持虽然也属于类层次结构的组 织问题,但其强调的重点是再次软件开发的重 用。由于它并不直接影响当前软件的开发和功 能实现,因此,将其单独提出来测试,也可作 为对高质量类层次结构的评估。测试点如下: 3.1 一组子类中关于某种含义相同或基本相同 的操作,是否有相同的接口(包括名字和参数表) 。 3.

13、2 类中方法(C+:类的成员函数)功能是 否较单纯,相应的代码行是否较少。 3.3 类的层次结构是否是深度大,宽度小。 IT Education & Training 8.3 面向对象的集成测试 传统的集成测试,是由底向上通过集成完成的功能模 块进行测试,一般可以在部分程序编译完成的情况下 进行。 对于面向对象程序,相互调用的功能是散布在程序的 不同类中,类通过消息相互作用申请和提供服务。类 的行为与它的状态密切相关,状态不仅仅是体现在类 数据成员的值,也许还包括其他类中的状态信息。由 此可见,类相互依赖极其紧密,根本无法在编译不完 全的程序上对类进行测试。面向对象的集成测试通常 需要在整个程

14、序编译完成后进行。 面向对象程序具有动态特性,程序的控制流往往无法 确定,因此也只能对整个编译后的程序做基于黑盒子 的集成测试。 IT Education & Training 8.3 面向对象的集成测试 面向对象的集成测试能够检测出相对独 立的单元测试无法检测出的那些类相互 作用时才会产生的错误。基于单元测试 对成员函数行为正确性的保证,集成测 试只关注于系统的结构和内部的相互作 用。面向对象的集成测试可以分成两步 进行:先进行静态测试,再进行动态测 试。 IT Education & Training 8.3 面向对象的集成测试 静态测试主要针对程序的结构进行,检 测程序结构是否符合设计要

15、求。现在流 行的一些测试软件都能提供一种称为“ 可逆性工程”的功能,即通过原程序得 到类关系图和函数功能调用关系图。 IT Education & Training 8.3 面向对象的集成测试 动态测试设计测试用例时,通常需要上述的功 能调用结构图、类关系图或者实体关系图为参 考,确定不需要被重复测试的部分,从而优化 测试用例,减少测试工作量,使得进行的测试 能够达到一定覆盖标准。测试所要达到的覆盖 标准可以是:达到类所有的服务要求或服务提 供的一定覆盖率;依据类间传递的消息,达到 对所有执行线程的一定覆盖率;达到类的所有 状态的一定覆盖率等。同时也可以考虑使用现 有的一些测试工具 来得到程序

16、代码执行的覆盖 率。 IT Education & Training 8.3 面向对象的集成测试 具体设计测试用例,参考下列步骤: 1. 先选定检测的类,参考OOD分析结果 ,仔细出类的状态和相应的行为,类或成员函 数间传递的消息,输入或输出的界定等。 2. 确定覆盖标准。 3. 利用结构关系图确定待测类的所有关联 。 4. 根据程序中类的对象构造测试用例,确 认使用什么输入激发类的状态、使用类的服务 和期望产生什么行为等。 IT Education & Training 七 面向对象的集成测试 注:设计测试用例时,不但要设计确认 类功能满足的输入,还应该有意识的设 计一些被禁止的例子,确认类

17、是否有不 合法的行为产生,如发送与类状态不相 适应的消息,要求不相适应的服务等。 根据具体情况,动态的集成测试,有时 也可以通过系统测试完成。 IT Education & Training 第8章 面向对象软件测试 8.1 面向对象测试的问题 8.2 类测试 8.3 面向对象的集成测试 8.4 GUI测试 8.5 面向对象的系统测试 IT Education & Training 8.4 GUI测试 图形用户界面( GUI )对软件测试提出 了有趣的挑战,因为 GUI 开发环境有可 复用的构件,开发用户界面更加省时而 且更加精确。同时, GUI 的复杂性也增 加了,从而加大了设计和执行测试用

18、例 的难度。 一般有许多自动化的GUI测试工具,如: jemmy,JFCunit等。 IT Education & Training 8.4 GUI测试 因为现在 GUI 设计和实现有了越来越多 的类似,所以也就产生了一系列的测试 标准。可按照标准进行GUI测试。 窗口的测试标准 菜单的测试标准 数据项的测试标准 IT Education & Training 8.4 GUI测试 窗口: 窗口是否基于相关的输入和菜单命令适当地打开? 窗口能否改变大小、移动和滚动? 窗口中的数据内容能否用鼠标、功能键、方向键和键盘访问? 当被覆盖并重新调用后,窗口能否正确地再生? 需要时能否使用所有窗口相关的功

19、能? 所有窗口相关的功能是可操作的吗? 是否有相关的下拉式菜单、工具条、滚动条、对话框、按钮、 图标和其他控制可为窗口使用,并适当地显示? 显示多个窗口时,窗口的名称是否被适当地表示? 活动窗口是否被适当地加亮? 如果使用多任务,是否所有的窗口被实时更新? 多次或不正确按鼠标是否会导致无法预料的副作用? 窗口的声音和颜色提示和窗口的操作顺序是否符合需求? 窗口是否正确地被关闭? IT Education & Training 8.4 GUI测试 菜单和鼠标操作: 菜单条是否显示在合适的语境中? 应用程序的菜单条是否显示系统相关的特性(如时钟显示)? 下拉式操作能正确工作吗? 菜单、调色板和工具

20、条是否工作正确? 是否适当地列出了所有的菜单功能和下拉式子功能? 是否可以通过鼠标访问所有的菜单功能? 文本字体、大小和格式是否正确? 是否能够用其他的文本命令激活每个菜单功能? 菜单功能是否随当前的窗口操作加亮或变灰? 菜单功能是否正确执行? 菜单功能的名字是否具有自解释性? 菜单项是否有帮助,是否语境相关? 在整个交互式语境中,是否可以识别鼠标操作? 如果要求多次点击鼠标,是否能够在语境中正确识别? 光标、处理指示器和识别指针是否随操作恰当地改变? IT Education & Training 8.4 GUI测试 数据项: 字母数字数据项是否能够正确回显, 并输入到系统中? 图形模式的数

21、据项(如滚动条)是否 正常工作? 是否能够识别非法数据? 数据输入消息是否可理解? 数据项的默认值是否需要,是否正确 ? IT Education & Training 8.4 GUI测试 测试例子: SATM客户可以选 择三种交易中的 任意一种:存款 、取款和查询余 额。这些交易可 以在信用帐户和 储蓄帐户上完成 。 IT Education & Training 8.4 GUI测试 测试覆盖要求 所有原子系统功能 所有端口输入 所有端口输出 IT Education & Training 第8章 面向对象软件测试 8.1 面向对象测试的问题 8.2 类测试 8.3 面向对象的集成测试 8.

22、4 GUI测试 8.5 面向对象的系统测试 IT Education & Training 8.5 面向对象的系统测试 面向对象分析(OOA)是“把E-R图和 语义网络模型,即信息造型中的概念, 与面向对象程序设计语言中的重要概念 结合在一起而形成的分析方法”,最后 通常是得到问题空间的图表的形式描述 。 通常是UML的描述 IT Education & Training 8.5 面向对象的系统测试 OOA对问题空间分析抽象的不完整,最 终会影响软件的功能实现,导致软件开 发后期大量可避免的修补工作;而一些 冗余的对象或结构会影响类的选定、程 序的整体结构或增加程序员不必要的工 作量。 IT

23、Education & Training 8.5 面向对象的系统测试 对OOA阶段的测试划分为以下五个方面 : 对认定的对象的测试 对认定的结构的测试 对认定的主题的测试 对定义的属性和实例关联的测试 对定义的服务和消息关联的测试 IT Education & Training 8.5 面向对象的系统测试 OOA直接映射问题空间,全面的将问题空间 中实现功能的现实抽象化。将问题空间中的实 例抽象为对象(不同于C+中的对象概念), 用对象的结构反映问题空间的复杂实例和复杂 关系,用属性和服务表示实例的特性和行为。 对一个系统而言,与传统分析方法产生的结果 相反,行为是相对稳定的,结构是相对不稳定

24、 的,这更充分反映了现实的特性。OOA的结 果是为后面阶段类的选定和实现,类层次结构 的组织和实现提供平台 IT Education & Training 8.5 面向对象的系统测试 1 对认定的对象的测试: OOA中认定的对象是对问题空间中的结构,其他系统 ,设备,被记忆的事件,系统涉及的人员等实际实例 的抽象。对它的测试可以从如下方面考虑: 1.1 认定的对象是否全面,是否问题空间中所有涉及到的实例 都反映在认定的抽象对象中。 1.2 认定的对象是否具有多个属性。只有一个属性的对象通常 应看成其他对象的属性,而不是抽象为独立的对象。 1.3 对认定为同一对象的实例是否有共同的,区别于其他实

25、例 的共同属性。 1.4 对认定为同一对象的实例是否提供或需要相同的服务,如 果服务随着不同的实例而变化,认定的对象就需要分解或利 用继承性来分类表示。 1.5 如果系统没有必要始终保持对象代表的实例的信息,提供 或者得到关于它的服务,认定的对象也无必要。 1.6 认定的对象的名称应该尽量准确,适用。 IT Education & Training 8.5 面向对象的系统测试 2 对认定的结构的测试 认定的结构指的是多种对象的组织方式 ,用来反映问题空间中的复杂实例和复 杂关系。认定的结构分为两种:分类结 构和组装结构。分类结构体现了问题空 间中实例的一般与特殊的关系,组装结 构体现了问题空间

26、中实例整体与局部的 关系。 IT Education & Training 8.5 面向对象的系统测试 2.1 对认定的分类结构的测试可从如下方面着手: 2.1.1 对于结构中的一种对象,尤其是处于高层的对 象,是否在问题空间中含有不同于下一层对象的特殊 可能性,即是否能派生出下一层对象。 2.1.2 对于结构中的一种对象,尤其是处于同一低层 的对象,是否能抽象出在现实中有意义的更一般的上 层对象。 2.1.3 对所有认定的对象,是否能在问题空间内向上 层抽象出在现实中有意义的对象 2.1.4 高层的对象的特性是否完全体现下层的共性 2.1.5 低层的对象是否有高层特性基础上的特殊性 IT E

27、ducation & Training 8.5 面向对象的系统测试 2.2 对认定的组装结构的测试从如下方面入手 : 2.2.1 整体(对象)和部件(对象)的组装 关系是否符合现实的关系。 2.2.2 整体(对象)的部件(对象)是否在 考虑的问题空间中有实际应用。 2.2.3 整体(对象)中是否遗漏了反映在问 题空间中有用的部件(对象)。 2.2.4 部件(对象)是否能够在问题空间中 组装新的有现实意义的整体(对象)。 IT Education & Training 8.5 面向对象的系统测试 3 对认定的主题的测试 主题是在对象和结构的基础上更高一层的抽象,是为 了提供OOA分析结果的可见性

28、,如同文章对各部分内 容的概要。对主题层的测试应该考虑以下方面: 3.1 贯彻George Miller 的“7+2”原则,如果主题个数超过7个,就 要求对有较密切属性和服务的主题进行归并。 3.2 主题所反映的一组对象和结构是否具有相同和相近的属性和 服务。 3.3 认定的主题是否是对象和结构更高层的抽象,是否便于理解 OOA结果的概貌(尤其是对非技术人员的OOA 结果读者)。 3.4 主题间的消息联系(抽象)是否代表了主题所反映的对象和 结构之间的所有关联。 IT Education & Training 8.5 面向对象的系统测试 4 对定义的属性和实例关联的测试 属性是用来描述对象或结

29、构所反映的实例的特性。而实例关 联是反映实例集合间的映射关系。对属性和实例关联的测试 从如下方面考虑: 4.1 定义的属性是否对相应的对象和分类结构的每个现实 实例都适用。 4.2 定义的属性在现实世界是否与这种实例关系密切。 4.3 定义的属性在问题空间是否与这种实例关系密切。 4.4 定义的属性是否能够不依赖于其他属性被独立理解。 4.5 定义的属性在分类结构中的位置是否恰当,低层对象 的共有属性是否在上层对象属性体现。 4.6 在问题空间中每个对象的属性是否定义完整。 4.7 定义的实例关联是否符合现实。 4.8 在问题空间中实例关联是否定义完整,特别需要注意 1-多和多-多的实例关联。

30、 IT Education & Training 8.5 面向对象的系统测试 5 对定义的服务和消息关联的测试 定义的服务,就是定义的每一种对象和结构在问题空间所 要求的行为。由于问题空中实例间必要的通信,在OOA 中相应需要定义消息关联。对定义的服务和消息关联的测 试从如下方面进行: 5.1 对象和结构在问题空间的不同状态是否定义了相应 的服务。 5.2 对象或结构所需要的服务是否都定义了相应的消息 关联。 5.3 定义的消息关联所指引的服务提供是否正确。 5.4 沿着消息关联执行的线程是否合理,是否符合现实 过程。 5.5 定义的服务是否重复,是否定义了能够得到的服务 。 IT Educa

31、tion & Training 8.5 面向对象的系统测试 通过单元测试和集成测试,仅能保证软件开发 的功能得以实现。但不能确认在实际运行时, 它是否满足用户的需要,是否大量存在实际使 用条件下会被诱发产生错误的隐患。为此,对 完成开发的软件必须经过规范的系统测试。 开发完成的软件仅仅是实际投入使用系统的一 个组成部分,需要测试它与系统其他部分配套 运行的表现,以保证在系统各部分协调工作的 环境下也能正常工作。 IT Education & Training 8.5 面向对象的系统测试 系统测试应该尽量搭建与用户实际使用 环境相同的测试平台,应该保证被测系 统的完整性,对临时没有的系统设备部

32、件,也应有相应的模拟手段。系统测试 时,应该参考OOA分析的结果,对应描 述的对象、属性和各种服务,检测软件 是否能够完全“再现“问题空间。系统测试 不仅是检测软件的整体行为表现,从另 一个侧面看,也是对软件开发设计的再 确认。 IT Education & Training 8.5 面向对象的系统测试 具体测试内容包括: 功能测试:测试是否满足开发要求,是否能够 提供设计所描述的功能,是否用户的需求都得 到满足。功能测试是系统测试最常用和必须的 测试,通常还会以正式的软件说明书为测试标 准。 强度测试:测试系统的能力最高实际限度,即 软件在一些超负荷的情况,功能实现情况。如 要求软件某一行为

33、的大量重复、输入大量的数 据或大数值数据、对数据库大量复杂的查询等 。 IT Education & Training 8.5 面向对象的系统测试 性能测试:测试软件的运行性能。这种测 试常常与强度测试结合进行,需要事先对被测 软件提出性能指标,如传输连接的最长时限、 传输的错误率、计算的精度、记录的精度、响 应的时限和恢复时限等。 安全测试:验证安装在系统内的保护机构确 实能够对系统进行保护,使之不受各种非常的 干扰。安全测试时需要设计一些测试用例试图 突破系统的安全保密措施,检验系统是否有安 全保密的漏洞。 IT Education & Training 8.5 面向对象的系统测试 恢复测

34、试:采用人工的干扰使软件出错 ,中断使用,检测系统的恢复能力,特 别是通讯系统。恢复测试时,应该参考 性能测试的相关测试指标。 可用性测试:测试用户是否能够满意使 用。具体体现为操作是否方便,用户界 面是否友好等。 安装/卸载测试(install/uninstall test) 等等。 IT Education & Training 8.5 面向对象的系统测试 系统测试需要对被测的软件结合需求分 析做仔细的测试分析,建立测试用例。 IT Education & Training 本章小结 结合传统的测试技术,针对面向对象技 术新特性在测试中所引发的问题,讲述 了面向对象的测试模型和方法。 依照传统的三个测试步骤:单元测试, 集成测试,系统测试,借鉴传统测试方 法有用的部分,讲述了如何有效的对面 向对象软件进行测试。 IT Education & Training Q & A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1