软件工程理论及应用 教学课件 ppt 作者 周屹 第9章

上传人:E**** 文档编号:89336174 上传时间:2019-05-23 格式:PPT 页数:32 大小:733KB
返回 下载 相关 举报
软件工程理论及应用 教学课件 ppt 作者 周屹 第9章_第1页
第1页 / 共32页
软件工程理论及应用 教学课件 ppt 作者 周屹 第9章_第2页
第2页 / 共32页
软件工程理论及应用 教学课件 ppt 作者 周屹 第9章_第3页
第3页 / 共32页
软件工程理论及应用 教学课件 ppt 作者 周屹 第9章_第4页
第4页 / 共32页
软件工程理论及应用 教学课件 ppt 作者 周屹 第9章_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《软件工程理论及应用 教学课件 ppt 作者 周屹 第9章》由会员分享,可在线阅读,更多相关《软件工程理论及应用 教学课件 ppt 作者 周屹 第9章(32页珍藏版)》请在金锄头文库上搜索。

1、第9章 面向对象测试,尽管软件质量保证是贯穿软件开发全过程的活动,但最关键的步骤是软件测试,软件测试是对软件规格说明、软件设计和编码的最后复审,目的是在软件产品交付之前尽可能发现软件中潜伏的错误。测试(Testing)是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节。 大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其他步骤总成本的35倍。因此,必须高度重视软件测试工作,绝不要以为写出程序之后软件开发工作就接近完成了,实际上,大约还有同样多的开发工作量需要完成。,测试的原则:(1)

2、测试除了发现软件故障,还要检查软件是否满足了用户的需求。从用户的角度看,用户需求没有满足是最大的错误。(2)应该尽早准备测试计划,一般来说做完详细设计,就应该准备测试计划。(3)应该用不同的程序员进行测试。程序编写者只能算程序的调试者,程序员调试程序应看作编码的一部分,而不是真正的测试。(4)相信大部分软件错误集中在少数程序模块中,特别是那些难以理解的模块。(5)穷举测试是不可能的,因此在准备测试计划时要很好地设计测试用例。(6)严格执行测试计划,排除测试的随意性。(7)应当对每一个测试结果做全面检查。(8)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。,测试用例和测试场

3、景将根据这两种测试方法的特性制定。黑盒测试完全不考虑程序的内部结构和处理过程,测试仅在程序界面上进行。设计测试用例旨在说明:软件的功能是否可操作;程序能否适当地接收输入数据并产生正确的输出结果;在可能的场景中事件驱动的效果是否尽如人意;能否保持外部信息如数据文件的完整性。,9.1 OOA和OOD模型的正确性 9.2 OOA和OOD的测试 9.3 OO软件的测试案例设计的影响 9.3.1 OO概念的测试用例设计的含义 9.3.2 传统测试案例设计方法的可用性 9.3.3 基于故障的测试 9.4 在类级别可用的测试方法 9.4.1 对OO类的测试 9.4.2 系统测试,9.1 OOA和OOD模型的

4、正确性,面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间也称为问题域,与实现解法的解空间也称为求解域在结构上尽可能一致。 客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的。把客观世界中的实体抽象为问题域中的对象(object)。因为所要解决的问题具有特殊性,因此,对象是不固定的。一个雇员可以作为一个对象,一家公司也可以作为一个对象,到底应该把什么抽象为对象,由所要解决的问题决定。,从本质上说,用计算机解决客观世界的问题,是借助于某种程序设计语言的规定,对计算机中的实体施加某

5、种处理,并用处理结果去映射解。把计算机中的实体称为解空间对象。显然,解空间对象取决于所使用的程序设计语言。例如,汇编语言提供的对象是存储单元;面向过程的高级语言提供的对象,是各种预定义类型的变量、数组、记录和文件等等。一旦提供了某种解空间对象,就隐含规定了允许对该类对象施加的操作。,面向对象方法学所提供的“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合。应该使这些解空间对象与问题空间对象尽可能一致。这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。也就是说,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象

6、的集合。每个对象就像一个微型程序,有自己的数据、操作、功能和目的。这样做就向着减少语义断层的方向迈了一大步,在许多系统中解空间对象都可以直接模拟问题空间的对象,解空间与问题空间的结构十分一致,因此,这样的程序易于理解和维护。,1. 与人类习惯的思维方法一致 传统的程序设计技术是面向过程的设计方法,这种方法以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据。,2. 稳定性好 传统的软件开发方法以算法为核心,开发过程基于功能分析和功能分解。用传统方法所建立起来的软件系统的结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。

7、,3. 可重用性好 用已有的零部件装配新的产品,是典型的重用技术,例如,可以用已有的预制件建筑一幢结构和外形都不同于从前的新大楼。重用是提高生产率的最主要的方法。 传统的软件重用技术是利用标准函数库,也就是试图用标准函数库中的函数作为“预制件”来建造新的软件系统。,4. 较易开发大型软件产品 在开发大型软件产品时,组织开发人员的方法不恰当往往是出现问题的主要原因。用面向对象方法学开发软件时,构成软件系统的每个对象就像一个微型程序,有自己的数据、操作、功能和用途,因此,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理,这就不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易

8、多了。这就是为什么对于大型软件产品来说,面向对象范型优于结构化范型的原因之一。,5. 可维护性好 用传统方法和面向过程语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,是软件危机的突出表现。 由于下述因素的存在,使得用面向对象方法所开发的软件可维护性好: (1)面向对象的软件稳定性比较好。 如前所述,当对软件的功能或性能的要求发生变化时,通常不会引起软件的整体变化,往往只需对局部作一些修改。由于对软件所需做的改动较小且限于局部,自然比较容易实现。 (2)面向对象的软件比较容易修改。,(3)面向对象的软件比较容易理解。 在维护已有软件的时候,首先需要对原有软件与此次修改有关的部分有深入理

9、解,才能正确地完成维护工作。传统软件之所以难于维护,在很大程度上是因为修改所涉及的部分分散在软件各个地方,需要了解的面很广,内容很多,而且传统软件的解空间与问题空间的结构很不一致,更增加了理解原有软件的难度和工作量。 面向对象的软件技术符合人们习惯的思维方式,用这种方法所建立的软件系统的结构与问题空间的结构基本一致。因此,面向对象的软件系统比较容易理解。 (4)易于测试和调试。,9.2 OOA和OOD的测试,测试软件的经典策略是,从“小型测试”开始,逐步过渡到“大型测试”。用软件测试的专业术语描述,就是从单元测试开始,逐步进入集成测试,最后进行确认测试和系统测试。对于传统的软件系统来说,单元测

10、试集中测试最小的可编译的程序单元(过程模块),一旦把这些单元都测试完之后,就把它们集成到程序结构中去;在集成过程中还应该进行一系列的回归测试,以发现模块接口错误和新单元加入到程序中所带来的副作用;最后,把软件系统作为一个整体来测试,以发现软件需求错误。,9.3 OO软件的测试案例设计的影响,面向对象程序的特点对软件测试的影响:信息隐蔽对测试的影响、封装和继承对测试的影响、单元和集成测试策略必须有很大的改变、测试用例的设计必须考虑OO软件的特征。 设计测试用例,并记录软件运行性能,与性能要求比较,检验是否达到性能要求规格。继承的成员函数需要测试,子类的测试用例可以参照父类。类测试用例设计:基于故

11、障的测试用例设计、基于用例的测试用例设计。,9.3.1 OO概念的测试用例设计的含义 对象类,作为在语法上独立的构件,应当允许用在不同的应用中。每个类都应是可靠的,并且不需了解任何实现的细节就能复用。因此,对象类应尽可能孤立地进行测试。 设计操作的测试用例时需要注意:首先定义测试对象的各操作的测试用例。对于一个单独的操作,可通过该操作的前置条件选择测试用例,产生输出,让测试者能够判断后置条件是否能够得到满足。 各个操作的测试与传统对函数过程定义的测试基本相同。,9.3.2 传统测试案例设计方法的可用性 白盒测试方法可用于类定义的操作的测试,对具有简洁结构的类,白盒测试最好用于类级别的测试,黑盒

12、测试方法也适合OO系统。,9.3.3 基于故障的测试 人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误猜测法。 错误推测法的基本思想是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试方案。,9.4 在类级别可用的测试方法,9.4.1 对OO类的测试 在设计对象类的规格说明测试时需要注意:把对象类当做一个黑盒,确认类的实现是否遵照它的定义。对于多数的对象类,主要检验在类声明的public域中的那些操作。对于子类,要检查继承父类的public域和protected域的那些操作。检查所有public域,protected域及

13、private域中的操作以完全检查对象中定义的操作。,生成多个类随机测试用例: 1.对每个客户类,使用类操作列表来生成一系列随机测试序列,这些操作发送消息给服务器类; 2.对生成的每个消息,确定在服务器对象中的协作者类和对应的操作; 3.对服务器对象中的每个操作(已经被来自客户对象的消息调用),确定传递的消息; 4.对每个消息,确定下一层被调用的操作,并把这些操作结合进测试序列中。 类间测试的方法:类间测试主要测试类之间的交互和协作。在UML中通常用顺序图和通信图来描述对象之间的交互和协作。可以根据顺序图或通信图,设计作为测试用例的消息序列,来检查对象之间的协作是否正常。,9.4.2 系统测试

14、 系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。 系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。,在确认测试或系统测试层次,不再考虑类之间相互连接的细节。和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出。为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本,以确定最可能发现用户交互需求错误的情景。当然,传统的黑盒测试方法也可用于设计确认测试用例

15、,但是,对于面向对象的软件来说,主要还是根据动态模型和描述系统行为的脚本来设计确认测试用例。,系统测试是由一系列不同的测试组成。主要目的是对以计算机为基础的系统进行充分的测试。 (1)功能测试,功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。 (2)可靠性测试,如果系统需求说明书中有对可靠性的要求,需进行可靠性测试。平均失效间隔时间MTBF(MeanTime Between Failures)是否超过规定时限,因故障而停机的时间MTTR(MeanTime To Repairs)在一年中应不超过多少时间。 (3)强度测试,强度测试是要检查在系统运行环境不正常乃

16、至发生故障的情况下,系统可以运行到何种程度的测试。,(4)性能测试,性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。 性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。 通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度等。 (5)恢复测试,恢复测试是要证实在克服硬件故障包括掉电、硬件或网络出错等后,系统能否正常地继续进行工作,并不对系统造成任何损害。,(6)启动停止测试 这类测试的目的是验证在机器启动及关机阶段,软件系统正确处理的能力。这类测试包括反复启动软件系统例如,操作系统自举、网络的启动、应用程序的调用等。在尽可能多的情况下关机。 (7)配置测试,这类测试是要检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。 它主要包括以下几种:配置命令测试:验证全部配置命令的可操作性;特别对最大配置和最小配置要进行测试。软件配置和硬件配置都要测试。循环配置测试:证明对每个设备物理与逻辑的,逻辑与功能的每次

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号