《gl第七章ppt.ppt》由会员分享,可在线阅读,更多相关《gl第七章ppt.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七章第七章 系统实施系统实施l系统实施阶段的任务系统实施阶段的任务l自顶向下的实现方法自顶向下的实现方法l编程技术编程技术l编程风格编程风格l系统测试系统测试l系统的交付使用系统的交付使用系统实施阶段的任务系统实施阶段的任务系统实施是开发信息系统的最后一个阶段。这个阶段系统实施是开发信息系统的最后一个阶段。这个阶段的任务,是实现系统设计阶段提出的物理模型,按实施方的任务,是实现系统设计阶段提出的物理模型,按实施方案完成一个可以实际运行的信息系统,交付用户使用案完成一个可以实际运行的信息系统,交付用户使用1.实施阶段的主要活动实施阶段的主要活动(1)硬件准备)硬件准备 硬件设备包括计算机主机、
2、输入输出设备、存储设备、硬件设备包括计算机主机、输入输出设备、存储设备、辅助设备辅助设备(稳压电源、空调设备等稳压电源、空调设备等)、通信设备等。、通信设备等。(2)软件准备)软件准备 软件设备包括系统软件、数据库管理系统以及一些应软件设备包括系统软件、数据库管理系统以及一些应用程序。这些软件有些需要购买,有些需要组织人力用程序。这些软件有些需要购买,有些需要组织人力编写。编写程序是这一阶段的主要任务之一。编写。编写程序是这一阶段的主要任务之一。(3)人员培训)人员培训 主要指用户的培训。用户包括主管人员和业务人员。主要指用户的培训。用户包括主管人员和业务人员。系统投入运行后,他们将在系统中工
3、作。为保证系统系统投入运行后,他们将在系统中工作。为保证系统调试和运行顺利进行,应根据他们的基础,提前进行调试和运行顺利进行,应根据他们的基础,提前进行培训,使他们适应并逐步熟悉新的操作方法。培训,使他们适应并逐步熟悉新的操作方法。(4)数据准备)数据准备 没有一定基础数据的准备系统调试就不能很好地进没有一定基础数据的准备系统调试就不能很好地进行。一般说来,确定数据库物理模型之后,就应进行行。一般说来,确定数据库物理模型之后,就应进行数据的整理、录入。这样既分散了工作量,又可以为数据的整理、录入。这样既分散了工作量,又可以为系统调试提供真实的数据。系统调试提供真实的数据。2.实施阶段的特点实施
4、阶段的特点与系统分析、系统设计阶段相比,系统实施阶段的特与系统分析、系统设计阶段相比,系统实施阶段的特 点是工作量大,投入的人力、物力多。因此,这一阶点是工作量大,投入的人力、物力多。因此,这一阶 段的组织管理工作也很繁重。对于这样一个多工种、段的组织管理工作也很繁重。对于这样一个多工种、多任务的综合项目,合理的调度安排就十分重要。多任务的综合项目,合理的调度安排就十分重要。自顶向下的实现方法自顶向下的实现方法系统的实施中就程序的编写和数据库实现而言,下层系统的实施中就程序的编写和数据库实现而言,下层 模块执行具体功能,上层模块是控制性的。传统方法模块执行具体功能,上层模块是控制性的。传统方法
5、 是先实现下层模块,实现一部分就调试一部分。这是先实现下层模块,实现一部分就调试一部分。这 种方法往往造成返工。单个模块调试通过了,系统联种方法往往造成返工。单个模块调试通过了,系统联 调却可能不通过,原因是模块间的接口可能有问题。调却可能不通过,原因是模块间的接口可能有问题。结构化方法主张自顶向下实现,尽量先实现上层模结构化方法主张自顶向下实现,尽量先实现上层模 块,逐步向下,最后实现下层最基本的模块。即首先块,逐步向下,最后实现下层最基本的模块。即首先 调试整个系统的结构及各模块间的接口,确保系统结调试整个系统的结构及各模块间的接口,确保系统结 构和各模块接口的正确性构和各模块接口的正确性
6、自顶向下实现的过程是:自顶向下实现的过程是:实现系统的轮廓或框架实现系统的轮廓或框架在此基础上不断添加新的功能,逐步完善,最后达到在此基础上不断添加新的功能,逐步完善,最后达到物理模型所要求的全部功能物理模型所要求的全部功能在实现上层模块时,与这些模块有直接调用关系的下在实现上层模块时,与这些模块有直接调用关系的下 层模块只作为层模块只作为“树桩树桩”出现,只有它的名字及有关出现,只有它的名字及有关参参 数传递关系。这样,虽然这些数传递关系。这样,虽然这些“树桩树桩”的内部功能还的内部功能还没没 有实现,但可以测试系统结构的正确性,保证接口的有实现,但可以测试系统结构的正确性,保证接口的 通畅
7、通畅版本的划分需要考虑以下几个方面:版本的划分需要考虑以下几个方面:(1)总的原则是,先实现控制部分,后实现执行部分,)总的原则是,先实现控制部分,后实现执行部分,先上层后下层。先上层后下层。(2)每个版本实现多少模块、实现哪些模块要根据开发)每个版本实现多少模块、实现哪些模块要根据开发 力量、设备、培训等方面的情况确定。力量、设备、培训等方面的情况确定。(3)复杂的模块分散在几个版本中逐步实现)复杂的模块分散在几个版本中逐步实现(4)兼顾功能模块和数据库的实现。)兼顾功能模块和数据库的实现。(5)兼顾硬件、软件、人员培训方面的情况)兼顾硬件、软件、人员培训方面的情况与传统的方法相比,与传统的
8、方法相比,首先,这种自顶向下的实现方法有效地解决了接口问首先,这种自顶向下的实现方法有效地解决了接口问题。接口解决不好,往往不得不对调试过的程序反复题。接口解决不好,往往不得不对调试过的程序反复修改,甚至推倒重来,造成返工。修改,甚至推倒重来,造成返工。其次,这种方法便于对系统的设计方案进行校正,保其次,这种方法便于对系统的设计方案进行校正,保证系统切实符合用户的要求。证系统切实符合用户的要求。第三,便于控制进度,保证研制工作按时完成。第三,便于控制进度,保证研制工作按时完成。编程技术与风格编程技术与风格1.好程序的标准好程序的标准能够工作最基本的。一个根本不能够工作的程能够工作最基本的。一个
9、根本不能够工作的程 序当然谈不上序当然谈不上“好好”,即使谈执行速,即使谈执行速 度、程序长度等指标也毫无意义度、程序长度等指标也毫无意义调试代价低花在调试上的时间少。这一条是衡调试代价低花在调试上的时间少。这一条是衡 量程序好坏,也是衡量程序员水平量程序好坏,也是衡量程序员水平 的一个重要标志的一个重要标志易于维护,易于修改,设计不复杂可读性强易于维护,易于修改,设计不复杂可读性强效率高效率高2.程序的可读性程序的可读性在相当长的一个时期里,程序员中存在严重的低估编在相当长的一个时期里,程序员中存在严重的低估编程方法、不注意程序风格的倾向,认为可以随意编写程方法、不注意程序风格的倾向,认为可
10、以随意编写 程序,只要结果正确就行了程序,只要结果正确就行了可读性是可读性是20世纪世纪70年代提出的,主张程序应使人们易年代提出的,主张程序应使人们易于阅读,编程的目标是编出逻辑上正确而又易于阅读于阅读,编程的目标是编出逻辑上正确而又易于阅读的程序的程序.程序可读性好,易于理解、易于维护,并将大大降低程序可读性好,易于理解、易于维护,并将大大降低隐含错误的可能性,从而提高程序的可靠性。隐含错误的可能性,从而提高程序的可靠性。要使程序的可读性好,程序员应有一定的写作能力,要使程序的可读性好,程序员应有一定的写作能力,应能写出结构良好、层次分明、思路清晰的文章应能写出结构良好、层次分明、思路清晰
11、的文章要使程序可读性好。总的要求是使程序简单、清晰。要使程序可读性好。总的要求是使程序简单、清晰。方法包括:方法包括:(1)用结构化方法进行详细设计;用结构化方法进行详细设计;(2)程序中包含说明性材料;程序中包含说明性材料;(3)良好的程序书写格式;良好的程序书写格式;(4)良好的编程风格。良好的编程风格。3.结构化程序设计结构化程序设计(1)通常认为结构化程序设计包括以下四方面的内容:)通常认为结构化程序设计包括以下四方面的内容:限制使用限制使用GOTO语句。不用语句。不用GOTO语句,程序易于阅语句,程序易于阅 读、易于验证。使用读、易于验证。使用GOTo语句,将使程序结构杂乱无语句,将
12、使程序结构杂乱无 章、难以阅读、难以理解,其中容易隐含一些错误章、难以阅读、难以理解,其中容易隐含一些错误逐步求精的设计方法。在一个程序模块内,先从该模逐步求精的设计方法。在一个程序模块内,先从该模块功能描述出发,一层层地逐步细化,直到最后分解、块功能描述出发,一层层地逐步细化,直到最后分解、细化成语句为止。细化成语句为止。自顶向下的设计、编码和调试。这是把逐步求精的方自顶向下的设计、编码和调试。这是把逐步求精的方法推广到一个系统的设计与实现。法推广到一个系统的设计与实现。主程序员制的组织形式。主程序员制的组织形式。一个主程序员组的固定成员是主程序员一人、辅助程序一个主程序员组的固定成员是主程
13、序员一人、辅助程序员一人、程序资料员员一人、程序资料员(或秘书或秘书)一人,其他技术人员按一人,其他技术人员按需要随时加入组内。需要随时加入组内。主程序员负责整体的开发,并负责关键部分的设计、编主程序员负责整体的开发,并负责关键部分的设计、编码和调试,辅助程序员在细节上给主程序员以充分的码和调试,辅助程序员在细节上给主程序员以充分的支持。支持。主程员、辅助程序员必须在程序技术方面和项目管理方主程员、辅助程序员必须在程序技术方面和项目管理方面具有经验和才能,必须完全熟悉该项目的开发工作面具有经验和才能,必须完全熟悉该项目的开发工作好处在于显著减少了通信和接口方面的问题,把设计的好处在于显著减少了
14、通信和接口方面的问题,把设计的责任集中在少数人身上,有利于提高质量责任集中在少数人身上,有利于提高质量4.程序的内部文档程序的内部文档(1)程序的)程序的“内部文档内部文档”,指程序内部带有的说明材料。,指程序内部带有的说明材料。内部文档可以用注释语句书写。程序适当加注释后,内部文档可以用注释语句书写。程序适当加注释后,提高了程序可阅读性。提高了程序可阅读性。(2)程序的)程序的“内部文档内部文档”需要注意以下几点:需要注意以下几点:每个文件的开始部分应指明程序编写者、最后修改日每个文件的开始部分应指明程序编写者、最后修改日期等信息,以利于管理期等信息,以利于管理注释必须与程序一致,否则毫无价
15、值,甚至让人感到注释必须与程序一致,否则毫无价值,甚至让人感到莫名其妙。所以修改程序时,要对注释进行相应的修莫名其妙。所以修改程序时,要对注释进行相应的修改。改。所有过程的开始部分都应有描述其功能的简要注释。所有过程的开始部分都应有描述其功能的简要注释。这些注释并不描述细节信息这些注释并不描述细节信息(如何实现功能如何实现功能),细节信,细节信息由代码本身及必要的内部注释来描述。息由代码本身及必要的内部注释来描述。对程序段作注释,而不是对每个语句作注释,注释不对程序段作注释,而不是对每个语句作注释,注释不是重复程序语句,而应提供从程序本身难以得到的信是重复程序语句,而应提供从程序本身难以得到的
16、信息。息。4.程序的结构程序的结构(1)简单、直接地反映意图)简单、直接地反映意图(2)表达式的书写应该一气呵成)表达式的书写应该一气呵成或或(3)嵌套不易过深)嵌套不易过深过深的嵌套使程序变得难读,实际上这反映设计者过深的嵌套使程序变得难读,实际上这反映设计者 思路不清楚。循环、分支层次建议不要超过五层,思路不清楚。循环、分支层次建议不要超过五层,多路分支使用多路分支使用case语句实现,尽量不采用递归模语句实现,尽量不采用递归模 式。式。(4)合理使用)合理使用GOTO语句语句按照结构化程序设计的原则,程序中可以不用按照结构化程序设计的原则,程序中可以不用 GOTO语句。但是,在某些情况下
17、,使用语句。但是,在某些情况下,使用GOTO语语 句还是更为直截了当。主要注意三条原则:句还是更为直截了当。主要注意三条原则:在一个程序中不要多用在一个程序中不要多用GOTO语句。一定要避免使用语句。一定要避免使用 不必要的不必要的GOTO语句。语句。在其他结构形式难以控制程序流向的情况下才使用在其他结构形式难以控制程序流向的情况下才使用 GOTO语句。例如,在循环体内遇到例外情况需要跳语句。例如,在循环体内遇到例外情况需要跳 出时使用。出时使用。不要使不要使GOTO语句相互交叉。语句相互交叉。(5)尽量使用局部变量)尽量使用局部变量5.规范化规范化(1)文件名、过程名、变量名应规范化)文件名
18、、过程名、变量名应规范化理解变量的含义是理解程序逻辑的关键。在编写程序理解变量的含义是理解程序逻辑的关键。在编写程序之前,应对名字作出统一的规范标准。之前,应对名字作出统一的规范标准。结构化编程方法中主模块用结构化编程方法中主模块用Main表示,第一层模表示,第一层模块分别为块分别为M1,M2,第二层模块为第二层模块为M11,M12,M21,M22,等等。等等。函数和过程的名称最好使用动宾词组,第二个单函数和过程的名称最好使用动宾词组,第二个单词的第一位采用大写,像词的第一位采用大写,像createDatabase等都等都是符合规范的过程名,能够让读者见名知义。是符合规范的过程名,能够让读者见
19、名知义。(2)规范化的书写格式)规范化的书写格式缩进的空格数在一个编程小组中也应该统一起来,这缩进的空格数在一个编程小组中也应该统一起来,这 对于组内的代码重用有好处。此外,虽然很多语言允对于组内的代码重用有好处。此外,虽然很多语言允 许一行多条语句,但为了方便程序的跟踪调试,以及许一行多条语句,但为了方便程序的跟踪调试,以及 提高可读性、最好一行一句提高可读性、最好一行一句(3)不要直接使用数字)不要直接使用数字初学者以为直接书写数字既简洁又易懂,但这种方式初学者以为直接书写数字既简洁又易懂,但这种方式会带来变更性的降低,如果多处出现关于某数字的处理,会带来变更性的降低,如果多处出现关于某数
20、字的处理,维护也变得烦琐,容易出错。因此不要直接使用数字,可维护也变得烦琐,容易出错。因此不要直接使用数字,可以使用常量定义。以使用常量定义。系统测试系统测试1.测试的概念测试的概念一个较好的程序员、在他交付的程序中,错误率为一个较好的程序员、在他交付的程序中,错误率为 1,而一个水平低的程序员编写的程序,可能每个语,而一个水平低的程序员编写的程序,可能每个语 句都含有一两个错误。问题的关键是尽早发现并纠正这句都含有一两个错误。问题的关键是尽早发现并纠正这 些错误,减少错误造成的损失,避免重大损失些错误,减少错误造成的损失,避免重大损失检验软件有三种手段:动态检查、静态检查和正确性检验软件有三
21、种手段:动态检查、静态检查和正确性证明证明(1)静念检查指人工评审软件文档或程序,发现其中的)静念检查指人工评审软件文档或程序,发现其中的 错误。这种方法手续简单是一种行之有效的检验错误。这种方法手续简单是一种行之有效的检验 手段。据统计,手段。据统计,30一一70的错误是通过评审发现的错误是通过评审发现 的,而且这些错误往往影响很大。的,而且这些错误往往影响很大。(2)程序正确性证明技术目前还处于初级阶段,)程序正确性证明技术目前还处于初级阶段,近期近期 内还不可能适用于大型系统。例如一个内还不可能适用于大型系统。例如一个433行的程行的程 序,其证明长达序,其证明长达46页。怎样页。怎样“
22、证明证明”这这46页中没页中没有有 错误错误?尽管如此,正确性证明仍是一个诱人的课尽管如此,正确性证明仍是一个诱人的课 题,对未来的软件可能产生深远影响题,对未来的软件可能产生深远影响。(3)动态检查就是测试,即有控制地运行程序,从多种)动态检查就是测试,即有控制地运行程序,从多种 角度观察程序运行时的行为,发现其中的错误。也角度观察程序运行时的行为,发现其中的错误。也 就是说,测试是为了发现错误而执行程序。测试只就是说,测试是为了发现错误而执行程序。测试只 能证明程序有错误,而不可能证明程序没有错误。能证明程序有错误,而不可能证明程序没有错误。测试的目的是为了发现程序的错误。因此,测试的关测
23、试的目的是为了发现程序的错误。因此,测试的关 键问题是如何设计测试用例,即设计一批测试数据,键问题是如何设计测试用例,即设计一批测试数据,通过有限的测试,在有限的研制时间、研制经费的约通过有限的测试,在有限的研制时间、研制经费的约 束下,尽可能多地发现程序中的错误束下,尽可能多地发现程序中的错误测试有模块测试、联合测试、验收测试、系统测试四测试有模块测试、联合测试、验收测试、系统测试四 种类型种类型模块测试是对一个模块进行测试,根据模块的功能说模块测试是对一个模块进行测试,根据模块的功能说 明,检验模块是否有错误。模块测试一般由编程人明,检验模块是否有错误。模块测试一般由编程人 员自己进行,模
24、块测试有以下项目:员自己进行,模块测试有以下项目:模块界面。调用参数模块界面。调用参数(流入数据流入数据)数目、顺序、类型。数目、顺序、类型。内部数据结构。如初始值对不对,变量名称是否一致,内部数据结构。如初始值对不对,变量名称是否一致,共用数据是否有误共用数据是否有误独立路径。是否存在不正确的计算、不正确的循环及判独立路径。是否存在不正确的计算、不正确的循环及判断控制断控制错误处理。预测错误的产生及处理,看是否和运行一致错误处理。预测错误的产生及处理,看是否和运行一致边界条件。对数据大小界限和判断条件的边界进行跟踪边界条件。对数据大小界限和判断条件的边界进行跟踪 运行。运行。联合测试即通常说
25、的联调。联合测试可以发现总体设联合测试即通常说的联调。联合测试可以发现总体设 计中的错误。联合测试方法有两种,即根据模块结构图计中的错误。联合测试方法有两种,即根据模块结构图 由上到下或由下到上进行测试。由上到下或由下到上进行测试。由上到下。设置下层模块为桩模块,检查控制流,较由上到下。设置下层模块为桩模块,检查控制流,较早发现错误,而不至于影响到下层模块。早发现错误,而不至于影响到下层模块。由下到上。先设置上层模块为驱动模块,测试下层模由下到上。先设置上层模块为驱动模块,测试下层模块执行的正确性,然后逐步向上推广块执行的正确性,然后逐步向上推广验收测试检验系统说明书的各项功能与性能是否实现,
26、验收测试检验系统说明书的各项功能与性能是否实现,是否满足要求。是否满足要求。验收测试的方法一般是列出一张清单,左边是需求的功验收测试的方法一般是列出一张清单,左边是需求的功 能,右边是发现的错误或缺陷能,右边是发现的错误或缺陷 常见的验收测试有所谓的常见的验收测试有所谓的测试和测试和测试,前者由使用测试,前者由使用 者在应用系统开发所在地与开发者一同进行观察记录,者在应用系统开发所在地与开发者一同进行观察记录,后者由用户在使用环境中独立进行。后者由用户在使用环境中独立进行。系统测试是对整个系统的测试,将硬件、软件、操作人系统测试是对整个系统的测试,将硬件、软件、操作人 员看做一个整体,检验它是
27、否有不符合系统说明书的地员看做一个整体,检验它是否有不符合系统说明书的地 方。这种测试可以发现系统分析和设计的错误。方。这种测试可以发现系统分析和设计的错误。2.测试的原则测试的原则(1)严格执行测试计划,排除测试的随意性。)严格执行测试计划,排除测试的随意性。(2)测试用例应包括输入数据和预期的输出结果。)测试用例应包括输入数据和预期的输出结果。(3)不仅要选用合理的输入数据作为测试用例,而且)不仅要选用合理的输入数据作为测试用例,而且 应选用不合理的输入数据作为测试应选用不合理的输入数据作为测试(4)既要检查程序是否完成了它应做的工作,又要检查)既要检查程序是否完成了它应做的工作,又要检查
28、 它是否还做了它不应做的事情。它是否还做了它不应做的事情。(5)测试用例应长期保留,直到这个程序被废弃。)测试用例应长期保留,直到这个程序被废弃。(6)充分注意测试中的群集现象。)充分注意测试中的群集现象。3.测试的方法测试的方法白箱测试把测试对象看做一个透明的盒子,它允许测白箱测试把测试对象看做一个透明的盒子,它允许测 试人员利用程序内部的逻辑结构及有关信息,设计或试人员利用程序内部的逻辑结构及有关信息,设计或 选择测试用例,对程序所有逻辑路径进行测试。选择测试用例,对程序所有逻辑路径进行测试。黑箱测试是把测试对象看做一个黑盒子,测试人员完黑箱测试是把测试对象看做一个黑盒子,测试人员完 全不
29、考虑程序内部的逻辑结构和内部特性,只依据程全不考虑程序内部的逻辑结构和内部特性,只依据程 序模块的详细说明,检查程序的功能是否符合它的功序模块的详细说明,检查程序的功能是否符合它的功 能说明能说明4.测试用例的设计测试用例的设计测试工作不可能采用穷举法,因此测试用例的选择就测试工作不可能采用穷举法,因此测试用例的选择就 是测试的关键问题。好的测试用例应以尽量少的测试是测试的关键问题。好的测试用例应以尽量少的测试 数据发现尽可能多的错误数据发现尽可能多的错误(1)语句覆盖法)语句覆盖法程序的某次运行并不一定执行其中的所有语句。因程序的某次运行并不一定执行其中的所有语句。因 此,如果某个含有错误的
30、语句在测试中并没有执此,如果某个含有错误的语句在测试中并没有执 行,这个错误便不可能发现。语句覆盖法就是要选行,这个错误便不可能发现。语句覆盖法就是要选 择测试用例,使得程序中的每个语句至少执行一次择测试用例,使得程序中的每个语句至少执行一次该方法发现错误的能力比较弱该方法发现错误的能力比较弱A2B0X3(2)判断覆盖)判断覆盖判断覆盖是指设计测试用例使程序中的每个判断的取判断覆盖是指设计测试用例使程序中的每个判断的取 “真真”值和取值和取“假假”值的每一个分支至少通过一次。值的每一个分支至少通过一次。在上面例子中,若取测试用例为在上面例子中,若取测试用例为A3,B0,x1 和和A2,B1,x
31、3,则可以使得两个判断语句的则可以使得两个判断语句的 四个分支都得到覆盖。四个分支都得到覆盖。判断覆盖比语句覆盖更严格一些,但判断覆盖还是很判断覆盖比语句覆盖更严格一些,但判断覆盖还是很 不够的。例如,当程序沿路径不够的。例如,当程序沿路径abd执行时,执行时,x的值应的值应 保持不变。若发生了这方面的错误,上面的测试用例保持不变。若发生了这方面的错误,上面的测试用例 都发现不了。都发现不了。(3)条件覆盖)条件覆盖条件覆盖是指执行足够的测试用例,使得判断中的每条件覆盖是指执行足够的测试用例,使得判断中的每 个条件获得各种可能的结果。个条件获得各种可能的结果。在上面例子中,有四个条件在上面例子
32、中,有四个条件 A1,对应对应A1或或A1,对应对应X1或或X 1设计用例为:设计用例为:(1)A2,B0 x4 (2)A1Bl,x1条件覆盖比判断覆盖要求严格,因为判断覆盖的对象条件覆盖比判断覆盖要求严格,因为判断覆盖的对象是每个判断结果,而条件覆盖考虑每个判断中的每个是每个判断结果,而条件覆盖考虑每个判断中的每个条件。但是,测试用例有可能满足条件覆盖的要求,条件。但是,测试用例有可能满足条件覆盖的要求,但不满足判断覆盖的要求。比如:但不满足判断覆盖的要求。比如:A1,B0,x3 A2,Bl,x1(4)条件组合覆盖)条件组合覆盖设计测试用例时,要使得判断中每个条件的所有可能设计测试用例时,要
33、使得判断中每个条件的所有可能 取值至少出现一次,并且每个判断本身的判定结果取值至少出现一次,并且每个判断本身的判定结果 也至少出现一次。也至少出现一次。条件组合覆盖综合了判断覆盖条件覆盖的要求,因条件组合覆盖综合了判断覆盖条件覆盖的要求,因 此,比单纯的判断覆盖或条件覆盖都要强。但是,有此,比单纯的判断覆盖或条件覆盖都要强。但是,有 时却没有覆盖路径时却没有覆盖路径(1)A1,B0(2)A1,B0(3)A1,B0(4)A1,B0(5)A2,x1(6)A2,x 1(7)A2,X1(8)A2X1下面的四个测试用例可以满足条件组合覆盖的要求:下面的四个测试用例可以满足条件组合覆盖的要求:(a)A2,
34、B0,X4,使,使(1)和和(5)两种情况出现;两种情况出现;(b)A2,B1,x1,使,使(2)和和(6)两种情况出现;两种情况出现;(c)A1,B0,X2,使,使(3)和和(7)两种情况出现;两种情况出现;(d)A1,B1,X1,使,使(4)和和(8)两种情况出现两种情况出现(5)路径覆盖)路径覆盖设计测试用例,使它覆盖程序中所有可能的路径设计测试用例,使它覆盖程序中所有可能的路径路径覆盖的测试功能很强。但对于实际问题,即使一路径覆盖的测试功能很强。但对于实际问题,即使一 个不太复杂的程序,其路径数也可能相当庞大而且又个不太复杂的程序,其路径数也可能相当庞大而且又 不可能完全覆盖。不可能完
35、全覆盖。(1)A2,B0,x3(2)A1,B0,X1(3)A2,B1,x1(4)A3,B0,x1(6)等价类划分)等价类划分对于某个输入域的子集合,如果该集合中的各个输入对于某个输入域的子集合,如果该集合中的各个输入 数据对于揭露程序中的错误都是等效的,则称这个集数据对于揭露程序中的错误都是等效的,则称这个集 合为等价类。测试某等价类的代表值就等价于对这一合为等价类。测试某等价类的代表值就等价于对这一 类其他值的测试。类其他值的测试。使用这一方法设计测试用例要经历划分等价类使用这一方法设计测试用例要经历划分等价类(列出列出 等价类表等价类表)和选取测试用例两步。和选取测试用例两步。等价类的划分
36、有两种不同的情况:有效等价类,无效等价类的划分有两种不同的情况:有效等价类,无效 等价类等价类在设计测试用例时,要同时考虑有效等价类和无效等在设计测试用例时,要同时考虑有效等价类和无效等 价类的设计。等价类的划分原则有价类的设计。等价类的划分原则有 如果输入条件规定了取值范围或值的个数,则可以确如果输入条件规定了取值范围或值的个数,则可以确定一个有效等价类和两个无效等价类定一个有效等价类和两个无效等价类 例如:例如:在程序的规格说明中,对输入条件有一句话,在程序的规格说明中,对输入条件有一句话,“一次取一次取款不得少于款不得少于50元,最多可取元,最多可取2000元元”则则有效等价类是有效等价
37、类是“50所得额所得额2000”,两个无效等价类是两个无效等价类是“所得额所得额50”或或“所得额所得额2000”。如果输入条件规定了输入值的集合,或者是规定了如果输入条件规定了输入值的集合,或者是规定了“必必 须如何须如何”的条件,这时可确立一个有效等价类和一个无的条件,这时可确立一个有效等价类和一个无 效等价类。效等价类。例如:例如:在在c语言中对变量标识符规定为语言中对变量标识符规定为“以字母打头的以字母打头的串串”,则,则所有以字母打头的构成有效等价类,所有以字母打头的构成有效等价类,不以字母打头的归于无效等价类不以字母打头的归于无效等价类 如果输入条件是一个布尔量、则可以确定一个有效
38、等如果输入条件是一个布尔量、则可以确定一个有效等价类和一个无效等价类。价类和一个无效等价类。如果规定了输入数据的一组值,而且程序要对每个输如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理,这时可为每一个输入值确立一个入值分别进行处理,这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。它是所有不允许的输入值的集合。例如:例如:在教师奖酬金方案中规定对教授、副教授、讲师和助教的在教师奖酬金方案中规定对教授、副教授、讲师和助教的课时分别折算工作量。则课时分别折算工作量。则四个有效等价类为
39、教授、副教授、讲师和助教,四个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是不符合以上身份的人员的的集合一个无效等价类,它是不符合以上身份的人员的的集合如果规定了输入数据必须遵守的规则,则可以确立一如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类个有效等价类(符合规则符合规则)和若干个无效等价类和若干个无效等价类(从不同从不同角度违反规则角度违反规则)在确立了等价类之后,建立等价类表,列出所有划在确立了等价类之后,建立等价类表,列出所有划 分出的等价类。最后确定测试用例分出的等价类。最后确定测试用例(7)边界值测试)边界值测试程序往往在处理边缘情况时犯错误,因此检查边缘情
40、程序往往在处理边缘情况时犯错误,因此检查边缘情 况的测试用例效率比较高况的测试用例效率比较高使用边界值分析方法设计测试用例,首先应确定边界使用边界值分析方法设计测试用例,首先应确定边界 情况。应当选取正好等于、刚刚大于或刚刚小于边界情况。应当选取正好等于、刚刚大于或刚刚小于边界 的值作为测试数据,而不是选取等价类中的典型值或的值作为测试数据,而不是选取等价类中的典型值或 任意值作为测试数据任意值作为测试数据边界值的概念可以扩大边界值的概念可以扩大这种方法表面上看起来很简单,但许多程序的边界情这种方法表面上看起来很简单,但许多程序的边界情 况极为复杂,要找出适当的测试均例,需要有一定况极为复杂,
41、要找出适当的测试均例,需要有一定 经验和创造性。经验和创造性。新记录新记录(1)在文件第一个记录之前加一个记录。在文件第一个记录之前加一个记录。(2)在文件最后一个记录之后加一个记录。在文件最后一个记录之后加一个记录。(3)插入的新记录对应实体是实际不可能存在的插入的新记录对应实体是实际不可能存在的(4)记录的域不全记录的域不全记录删除记录删除 (1)删去文件的第一个记录删去文件的第一个记录 (2)删去文件的最后一个记录删去文件的最后一个记录 (3)试图删去不存在的记录试图删去不存在的记录 (4)连续删去多个记录连续删去多个记录 (5)删去一个记录,并试图处理这个记录删去一个记录,并试图处理这
42、个记录处理业务。处理业务。(1)处理文件的第一个记录处理文件的第一个记录(2)处理文件的最后一个记录处理文件的最后一个记录(3)处理中间的一个记录处理中间的一个记录(4)处理同一程序刚建立的记录处理同一程序刚建立的记录(5)连续处理相邻记录连续处理相邻记录(6)试图处理一个不存在的记录试图处理一个不存在的记录(7)处理业务使某个数值超过常规(如库存数为负)处理业务使某个数值超过常规(如库存数为负)(8)对某些关键数据输入有错误的数据。对某些关键数据输入有错误的数据。(9)同一业务处理过程中造成多重例外和出错同一业务处理过程中造成多重例外和出错试验逻辑试验逻辑(1)检查所有能产生最大值、最小值、
43、平均值的计算检查所有能产生最大值、最小值、平均值的计算(2)除式中除数为零除式中除数为零(3)数据域放最小数或最大数数据域放最小数或最大数(4)数据域填入允许值之外的数数据域填入允许值之外的数报告程序报告程序(1)负号是否全打印出来负号是否全打印出来(2)全全9是否打全是否打全(列全列全0看高位压缩情况看高位压缩情况(4)交叉结算平衡结果是否有报告交叉结算平衡结果是否有报告5.排错排错测试是为了发现程序存在的错误,排错是确定错误的测试是为了发现程序存在的错误,排错是确定错误的 位置和性质,并改正错误。位置和性质,并改正错误。(1)试探法)试探法 分析错误的外在表现形式,猜想程序故障的大概位分析
44、错误的外在表现形式,猜想程序故障的大概位置,采用一些简单的纠错技术,获得可疑区域的有关置,采用一些简单的纠错技术,获得可疑区域的有关信息,判断猜想是否正确。经过多次试探,找到错误信息,判断猜想是否正确。经过多次试探,找到错误的根源。的根源。(2)跟踪法)跟踪法 对于小型程序,可采用跟踪法。跟踪法分正向跟踪对于小型程序,可采用跟踪法。跟踪法分正向跟踪和反向跟踪。正向跟踪是沿着程序的控制流从头开和反向跟踪。正向跟踪是沿着程序的控制流从头开始跟踪,逐步检查中间结果,找到最先出错的地方。始跟踪,逐步检查中间结果,找到最先出错的地方。反向跟踪是从发现错误症状的地方开始回溯,人工沿反向跟踪是从发现错误症状
45、的地方开始回溯,人工沿着校制流往回追踪程序代码,直到确定错误根源着校制流往回追踪程序代码,直到确定错误根源(3)对分查找法)对分查找法 若已知程序中的变量在中间某点的预期正确值,则可若已知程序中的变量在中间某点的预期正确值,则可以用赋值语句把变量置成正确值,运行程序看输出结以用赋值语句把变量置成正确值,运行程序看输出结果是否正确。若输出结果没有问题,说明程序错误在果是否正确。若输出结果没有问题,说明程序错误在前半部分,否则在后半部分。然后对有错误的部分再前半部分,否则在后半部分。然后对有错误的部分再用这种方法,逐步缩小查错的范围。用这种方法,逐步缩小查错的范围。(4)归纳法)归纳法 从错误征兆
46、的线索出发。分析这些线索之间的关系从错误征兆的线索出发。分析这些线索之间的关系确定错误的位置。首先要收集、整理程序运行的有确定错误的位置。首先要收集、整理程序运行的有关数据,分析出错的规律,在此基础上提出关于错误关数据,分析出错的规律,在此基础上提出关于错误的假设,若假设能解释原始测试结果,说明假设得到的假设,若假设能解释原始测试结果,说明假设得到证实;合则重新分析,提出新的假设,直到最终发现证实;合则重新分析,提出新的假设,直到最终发现错误原因。错误原因。(5)演绎法)演绎法 分析已有的测试结果,设想所有可能的错误原因,分析已有的测试结果,设想所有可能的错误原因,排除不可能的、互相矛盾的原因
47、。对余下的原因,按排除不可能的、互相矛盾的原因。对余下的原因,按可能性的大小,逐个作为假设解释测试结果,直至找可能性的大小,逐个作为假设解释测试结果,直至找到错误原因。必要时,对列出的原因加以补充修正。到错误原因。必要时,对列出的原因加以补充修正。系统的交付使用系统的交付使用系统的交付使用即系统的转换,包括把旧系统的文件系统的交付使用即系统的转换,包括把旧系统的文件 转换成新系统的文件,数据的整理和录入,也包括人转换成新系统的文件,数据的整理和录入,也包括人 员、设备、组织机构的改造和调整,有关资料档案的员、设备、组织机构的改造和调整,有关资料档案的 建立和移交。系统转换的最后形式是将全部控制
48、权移建立和移交。系统转换的最后形式是将全部控制权移 交给用户单位。交给用户单位。(1)直接转换方式。这种方式是新系统直接替换老系)直接转换方式。这种方式是新系统直接替换老系 统。这种方式的优点是转换简单、费用最省。但是统。这种方式的优点是转换简单、费用最省。但是 由于新系统还没有承担过正常的工作,可能出现意由于新系统还没有承担过正常的工作,可能出现意 想不到的情况,因而风险大想不到的情况,因而风险大(2)试运行方式;这种方式是一种平行运行方式。在试)试运行方式;这种方式是一种平行运行方式。在试 运行期间,老系统照常运行新系统承担部分工作,运行期间,老系统照常运行新系统承担部分工作,二者可以进行
49、对照比较,等试运行感到满意时再全二者可以进行对照比较,等试运行感到满意时再全 面运行新系统,停止老系统的运行。面运行新系统,停止老系统的运行。(3)逐步转换方式。这种方式是新系统一部分一部分地)逐步转换方式。这种方式是新系统一部分一部分地 替代老系统,直到全部代替老系统替代老系统,直到全部代替老系统。这种方式避免这种方式避免 了直接转换方式的危险性,但是这种方式接口复了直接转换方式的危险性,但是这种方式接口复 杂,必须事先充分考虑、当新、老系统差别太大杂,必须事先充分考虑、当新、老系统差别太大 时,不宜采用这种方式时,不宜采用这种方式实际工作中,这几种方式可以混合使用:例如,系统实际工作中,这几种方式可以混合使用:例如,系统 中不很重要的部分采用直接转换方式,重要部分采用中不很重要的部分采用直接转换方式,重要部分采用 试运行方式。试运行方式。