第六章系统实施.ppt

上传人:本田雅阁 文档编号:2583943 上传时间:2019-04-12 格式:PPT 页数:63 大小:252.01KB
返回 下载 相关 举报
第六章系统实施.ppt_第1页
第1页 / 共63页
第六章系统实施.ppt_第2页
第2页 / 共63页
第六章系统实施.ppt_第3页
第3页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第六章系统实施.ppt》由会员分享,可在线阅读,更多相关《第六章系统实施.ppt(63页珍藏版)》请在三一文库上搜索。

1、2019/4/12,信息系统开发 西南科技大学计算机学院,1,第六章 系统实施,2019/4/12,信息系统开发 西南科技大学计算机学院,2,本节主要内容,系统实施阶段的主要活动 领会系统实施在管理信息系统建设中的作用与地位。 领会系统实施的前提条件。 识记系统实施阶段的主要活动。,2019/4/12,信息系统开发 西南科技大学计算机学院,3,6.1 系统实施阶段的主要活动,系统实施阶段要继承此前各阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。 系统实施作为系统生命周期中的后期阶段,是把系统设计转化为可实际运行的物理系统的必然步骤,再好的系统设计,不通

2、过系统实施也只能是不能带来现实效益的空中楼阁。系统实施作为系统最后的物理实现阶段,对于系统的质量,可靠性和可维护性等有着十分重要的影响。 系统实施工作的前提条件是必须在系统分析和系统设计工作完成后,严格按照系统开发文档进行。 系统实施是以系统分析和设计文档资料为依据的。 在系统实施时,系统开发人员不但需要了解自己所承担的部分,同时还需要对整个系统的总体结构,彼此接口等相互联系的内容有一定的了解,以保证在系统实施工作中局部分散实施与系统整体协调的一致性。,2019/4/12,信息系统开发 西南科技大学计算机学院,4,6.1 系统实施阶段的主要活动,系统实施阶段 系统实施阶段主要由编码,系统测试,

3、系统安装和新旧系统转换等活动构成。 编码(程序设计):是指按照详细设计阶段产生的程序设计说明书用选定的程序设计语言编写源程序。 系统测试是系统质量可靠性保证的关键,也是对需求分析,系统设计和编码最终评审。 系统安装主要是指各种软,硬件设备的选型,论证,购置,安装以及整个系统调试运行。 新旧系统转换(也称系统切换与运行):是指以新开发的系统替换旧的系统,并使之投入使用的过程。包括系统交付前的准备工作,系统切换的方法和步骤等。,请与第5章中的代码设计加以区别!,2019/4/12,信息系统开发 西南科技大学计算机学院,5,本节主要内容,程序设计 领会程序设计的任务和作用。 深刻理解对程序设计的质量

4、要求。 识记程序设计的步骤。 程序设计语言的分类以及各类语言的基本特点。 识记结构化程序的基本控制结构。 熟练掌握结构化程序设计的方法和步骤。 掌握良好程序设计风格应达到的基本要求。,2019/4/12,信息系统开发 西南科技大学计算机学院,6,6.2 程序设计,程序设计(编码)的任务和作用 程序设计的任务主要是使用选定的程序设计语言,把经过概要设计和详细设计所得到的以程序设计说明书体现的信息处理过程描述后,转换成能在计算机系统上运行的程序源代码。 需要注意的是程序设计人员必须注意保证系统实施与系统设计的一致性,以保证功能的正确实现。 对程序设计的质量要求: 对于程序设计基本质量要求应该是程序

5、的正确性,主要体现在两个方面: 正确运用程序设计语言环境,避免语法错误。 程序所描述的过程和算法要满足系统设计的功能要求,以避免语义错误。,2019/4/12,信息系统开发 西南科技大学计算机学院,7,6.2 程序设计,程序的正确性是不是程序设计质量的唯一要求呢? 一个软件在源程序的其他方面都正确无误,只是不容易被人看懂的程序也不是一个好的程序。因为从系统的周期中可以看到一旦系统投入使用,必然会面临很多如维护,功能的扩充和性能的改善等问题,而这些问题必然涉及到程序的代码。 所以从软件维护的角度出发,程序设计人员在保证程序正确性的同时,还必须保证源程序的可读性。 保证源程序可读性的主要措施是进行

6、结构化程序设计,并在风格上遵守一些标准和原则。 从系统开发和应用角度来看,程序的编写和运行效率也是程序设计质量的一个考虑方面。,这里所说的效率是指程序的语句行数,对存储空间的要求,以及运行速度等。,2019/4/12,信息系统开发 西南科技大学计算机学院,8,6.2 程序设计,程序设计的步骤: 了解计算机系统的性能和软硬件环境,其中包括: 计算机系统的运算速度与存取速度; 内存和外存大小; 操作系统,程序设计语言以及开发工具; 外设连接及通讯能力等性能指标。 2. 充分理解系统概要设计和详细设计的文档准确把握系统的软件功能,模块间的逻辑关系,算法的详细方案以及输入输出要求。 根据设计要求和硬软

7、件环境条件,选定程序设计语言。 编写程序代码。 5. 程序的检查,编译与调试。,2019/4/12,信息系统开发 西南科技大学计算机学院,9,6.2 程序设计,程序设计语言: 程序设计语言的发展与分类,机器语言 第一代,汇编语言 第二代,高级语言 第三代,甚高级语言 第四代,是随计算机的发明而产生的第一代计算机语言,其指令代码由操作代码和操作数的绝对地址构成,指令无需翻译和解释,可以直接执行。不同的机器,语言不相同.它一般不用来进行程序设计。,属于低级程序设计语言。它的产生是为了改善机器语言的不直观性而发展起来的机遇助记符的语言。每个操作指令通过特定的助记符来表达。汇编语言与机器指令之间基本上

8、是一一对应的关系。,是指在符号,概念和语法上与人类思维和表达方式相近的第三代程序设计语言。,高级语言是面向数据处理的过程化语言,必须在程序设计中描述“怎么做”。而第四代语言是直接面向应用的,它只在程序设计中说明做什么,就可以了。,2019/4/12,信息系统开发 西南科技大学计算机学院,10,6.2 程序设计,汇编语言:第二代语言,属于低级程序设计语言。它的产生是为了改善机器语言的不直观性而发展起来的机遇助记符的语言。每个操作指令通过特定的助记符来表达。汇编语言与机器指令之间基本上是一一对应的关系。 汇编语言程序需要经过翻译转换成机器语言才能运行。 其具有无法移植,不易维护等特点,故在系统开发

9、中很少使用。 高级语言:是指在符号,概念和语法上与人类思维和表达方式相近的第三代程序设计语言。 具有可移植性的特点。 用高级语言写出来的源程序必须经解释或编译后才能够在计算机上运行。 因为高级语言编码速度快,并且引入了控制结构语句,函数功能,宏替换等使软件生产效率有了极大的提高,所以目前绝大多数系统都是用高级语言进行程序设计的。,2019/4/12,信息系统开发 西南科技大学计算机学院,11,6.2 程序设计,汇编语言代码片断 PULES2:MOV R3, #N MOV TMOD, #01H MOV TL0, #XL MOV TH0, #XH SETB TR0 SETB P1.0 LOOP1:

10、 JBC TF0, REP AJMP LOOP1 REP : MOV TL0, #XL MOV TH0, #XH CPL P1.0 DJNZ R3, LOOP1 RET,高级语言代码片断 void m(a,b,x) float a,b,x; if (a1) ,2019/4/12,信息系统开发 西南科技大学计算机学院,12,6.2 程序设计,高级语言可以按照用途和特征划分为以下几类: 基础语言:是人们最熟悉且应用很广泛的一类程序设计语言。主要的基础语言有下列几种: BASIC语言:具有人机对话功能,便于修改和调试,适用于简单的数值计算服务和事务处理.有BASIC,GWBASIC,TRUE BAS

11、IC等版本。 COBOL语言:是一种适用于商业及管理领域,面向事务和数据处理的程序设计语言。其主要功能是描述数据结构和分析处理大批量的数据,可对各种类型的数据进行收集,存储,传送,分类,排序,计算和打印报表等。 FORTRAN语言:是一种适合于工程与科学计算的程序设计语言,是最早的高级语言。,2019/4/12,信息系统开发 西南科技大学计算机学院,13,6.2 程序设计,结构化程序语言:其主要特点是直接支持结构化程序设计思想 ,具有很强的过程结构化特点和数据结构描述能力。结构化程序设计语言的主要代表有: PASCAL语言:是第一个系统的体现结构化程序设计概念的程序设计语言,它具有模块清晰,控

12、制结构完备,有丰富的数据结构和数据类型,以及表达能力强,移植容易等特点应用很广泛。 PL/1语言:具有ALGOL,FORTRAN,GOBOL等语言的共同特点,并引入了异常处理,多任务处理(即并发控制)等全新概念。使得它成为一种包含很多特征的大型通用语言。 C语言:C语言一方面具有高级语言的特点,具有先进性的控制结构和数据结构,丰富的数据类型,并且有很灵活方面的多种操作符,语句简洁,表达清晰,使得它容易阅读和编写。另一方面它同时具有汇编语言的功能,可以处理计算机直接操作的大多数数据直接完成硬件的算术或逻辑运算。 ADA语言:比较适合于实时并行处理。,2019/4/12,信息系统开发 西南科技大学

13、计算机学院,14,6.2 程序设计,专用语言:是指为某一特定的应用而专门设计的程序设计语言,一般具有与特定应用密切相关的特殊语义,语法形式,且每一种语言的应用范围都比较小。 程序设计工作是相当繁重的,故而寻求进一步提高编码效率的途径是第四代语言产生的背景。 第四代语言:高级语言是面向数据处理的过程化语言,必须在程序设计中描述”怎么做”而第四代语言是直接面向应用的,它只在程序设计中说明“做什么“就可以了。 4GL具有的特征: 语言的使用者是一般用户,而不是计算机专业技术人员。 能够提供一组高效,非过程化的命令基本语句,编码时用户只需用这些命令说明”做什么”,而不必描述实现的具体细节。 具有很强的

14、数据管理能力,能对数据库进行有效的存取,查询和相关操作。 是多功能,一体化的语言。除必须含有控制程序逻辑和数据库操作的语句外,还应有生成处理,报表处理,图象处理以及实现数据运算和统计分析功能的语句,以适应多种开发的需要。,2019/4/12,信息系统开发 西南科技大学计算机学院,15,6.2 程序设计,程序设计语言的选择 选择程序设计语言的时候应该综合考虑编码,测试和维护各个阶段来选择语言,避免将眼光仅仅局限在编写程序上。 在程序选择上主要应考虑以下几个方面问题: 应用领域。 过程与算法的复杂程度。 数据结构和数据类型的考虑。 编码及维护的工作量与成本。 兼容性和可移植性。 有多少可用的支撑软

15、件。 开发人员,用户知识水平和熟练程度。 程序设计语言的特性。 系统规模。 系统的效率要求。,可以看出:并没有那种语言绝对好或不好,每种语言都各有不同的特点,关键是要根据实际需要和困难,选择最适合的语言,以满足系统的要求。,2019/4/12,信息系统开发 西南科技大学计算机学院,16,6.2 程序设计,结构化程序设计 为什么以前的很多程序除了自己能看懂或明白外,其他的程序编写人员却无法弄清?你认为其中的原因会是什么呢?,最大的原因是:除了程序人员的观念问题外,还有一个很重要的原因就是当时的程序设计语言是非结构化的。 所以,为了提高软件生产率和降低软件维护费用创立一种新的程序设计思想,方法和风

16、格就变的越来越重要了。 而结构化程序设计思想就是在这样的背景下开始形成它主要是以自顶向下的方式,按照模块化和逐步细化的思想,用一组单口入单出口的基本控制结构及其反复嵌套来进行程序设计。,2019/4/12,信息系统开发 西南科技大学计算机学院,17,6.2 程序设计,程序设计的基本控制结构: 顺序结构:表示含有多个连续的处理步骤,按照书写的先后顺序执行。,A,B,C,入口,出口,代码示例: float x; int i; I = (int)x; printf(“x=%f, i=%d”,x,i); ,2019/4/12,信息系统开发 西南科技大学计算机学院,18,6.2 程序设计,程序设计的基本

17、控制结构: 选择结构(条件结构):由某个逻辑表达式的取值决定选择两个处理加工中的一个。,P,代码示例: if (year%4 !=0) leap = 1; else if (year%100 != 0) leap = 1; else if (year%400 != 0) leap = 0; else leap =1; ,2019/4/12,信息系统开发 西南科技大学计算机学院,19,6.2 程序设计,程序设计的基本控制结构: 循环结构或重复结构:它有两种类型。 一种为“当”循环结构(DOWHILE结构)。,代码示例: int i, sum =0; i=1; while(i=100) sum =

18、 sum +i; i+; ,2019/4/12,信息系统开发 西南科技大学计算机学院,20,6.2 程序设计,程序设计的基本控制结构: 循环结构或重复结构:它有两种类型。 一种为“直到”循环结构(DOUNTIL结构)。,代码示例: int i, sum =0; i=1; do sum = sum +i; i+; while(i=100),2019/4/12,信息系统开发 西南科技大学计算机学院,21,6.2 程序设计,程序设计的基本控制结构: 多种情况选择结构或多分支结构(结构), ,代码示例: switch(grade) case A: ; case B: ; case C: ; case

19、D: ; default : ; ,2019/4/12,信息系统开发 西南科技大学计算机学院,22,6.2 程序设计,程序设计的基本控制结构: 结构化程序设计中的GOTO语句 针对于GOTO语句需要注意的是不能滥用,但是也不必禁止,使用的时候一定要小心谨慎!如果一定要用GOTO语句,要注意将转移范围控制在一个控制结构内部。 可以使用GOTO语句的情况: 在没有基本控制结构语句的程序设计语言中,使用GOTO语句实现三种基本控制结构。 在结束检索、文件结束、发生错误等需进行特殊处理需要从过程出口退出时,GOTO语句可能比布尔变量和条件结构都要简洁明了。,2019/4/12,信息系统开发 西南科技大

20、学计算机学院,23,6.2 程序设计,自顶向下的模块化设计方法 1. 自顶向下的模块化设计 在系统开发设计中,对应系统结构图中的每个模块,都有一份模块说明书,内容主要包括模块名称,程序名称,输入数据,输出数据转换过程等,这是程序员进行程序设计的主要文档和依据。 设计步骤: 按照自顶向下的模块化设计原则,先将程序高度抽象。 分析这个功能的组成部分并划分下层模块。 对划分出来的下层模块按照第二步进行划分,直到能够容易的用程序语句实现为止。,2019/4/12,信息系统开发 西南科技大学计算机学院,24,6.2 程序设计,2019/4/12,信息系统开发 西南科技大学计算机学院,25,6.2 程序设

21、计,自顶向下的模块化设计方法 2. 逐步细化 对每个模块的细化应包括功能细化,数据细化和逻辑细化三个方面. 功能细化应对本模块的功能进行分析,力图分解为若干个更为简单的子功能。 数据细化应列出本模块涉及到的数据项名称和数据类型。 逻辑细化确定所构成的子模块之间的结构关系。,2019/4/12,信息系统开发 西南科技大学计算机学院,26,6.2 程序设计,程序设计风格: 结构化程序设计为程序员提供了编码的基本思路和方法,使程序的结构性得到了很大的改善.但是为了能让程序结构清晰,易读易懂,便于修改和扩充,需有一些规则和共同的约定.即好的程序风格。 良好的程序设计风格包括: 标知符的命名应作到见名知

22、意。 标识符是作为文件名、变量名、常量名、函数名、程序名、段名和程序标号等用户定义的名字统称。 命名规则要在整个程序中前后一致,不能中途变化,给阅读和理解带来困难。 命名是一定要避开程序设计语言的保留字,否则在运行的时候会出现莫名其妙的错误。 尽量避免使用意义容易混淆的标识名,如VALUE和VALUES这样的变量命名。,2019/4/12,信息系统开发 西南科技大学计算机学院,27,6.2 程序设计,良好的程序设计风格包括: 程序中的注释 适当的注释包括以下两种: 序言性注释:在每个程序或模块的开头的一段说明,对于理解程序本身有引导作用,比较严格规范,包含以下内容: 程序的标识、名称及版本号。

23、 程序的功能概述。 接口及界面描述,包括调用及被调用的关系,调用形式、参数含义及相互调用的程序名。 输入/输出数据说明,重要变量和参数的说明。 开发历史,包括原作者、审核者、修改者、编程日期、编译日期、审查日期、修改日期等。 与运行环境有关的信息,包括使用的机型、对硬件资源的要求,使用的操作系统,程序设计语言的种类和版本号、编译命令的格式、程序的存储和运行方式等。,2019/4/12,信息系统开发 西南科技大学计算机学院,28,6.2 程序设计,良好的程序设计风格包括: 程序中的注释 解释性注释:一般嵌在程序之中,与所注释的部分相匹配。功能性注释(不直观的算法、重要的循环等)放在语句之前;状态

24、性注释一般是对数据(变量)进行说明,放在相应语句之后。 一般要注意以下几点: 注释一定要在程序编制中书写,不要在程序完成之后进行补写。 解释性注释不是简单直接翻译程序语句,而是要说明程序段的动机和原因,提供的是从程序本身难以得到的信息,说明“做什么”。 一定要保证注释与程序的一致性,程序修改后,注释也要及时作相应的修改。不正确的注释比不做注释更加糟糕。,2019/4/12,信息系统开发 西南科技大学计算机学院,29,6.2 程序设计,良好的程序设计风格包括: 程序的布局格式 充分利用空格、空行和右缩格等方式来改善程序的布局,以取得较好的视觉效果。 比如说:,int i, sum =0; i=1

25、; while(i=100) sum = sum +i; i+; , int i, sum =0; i=1; while(i=100) sum = sum +i; i+; , int i, sum =0; i=1; while(i=100) sum = sum +i; i+; ,2019/4/12,信息系统开发 西南科技大学计算机学院,30,6.2 程序设计,良好的程序设计风格包括: 数据说明 将对数据结构说明语句的内容和次序固定,一般按照从简到繁,按常量、简单变量、数组变量、公用数据区、文件的顺序说明;在类型说明时,可依照应用的频率按整型、实型、复型、逻辑进行说明;在一个说明语句中,数据名按

26、字母顺序排列。 程序语句的结构 一般原则:语句应写得简明、直观,直截了当反映程序设计意图,避免程序语言的技巧性,不能为追求效率而忽视程序的简明与清晰。 每句写一行,不要将多句写在一行。 避免使用复杂的条件判断。 尽量减少使用否定的逻辑条件进行测试。 尽量减少循环嵌套和条件嵌套的层数。 用空格、括号使复杂表达式的运算层次清晰直观。,2019/4/12,信息系统开发 西南科技大学计算机学院,31,6.2 程序设计,良好的程序设计风格包括: 输入和输出 程序的输入输出与用户的使用直接相关,应通过输入输出格式和方式的设计实现友好的用户界面。应注意以下几点: 应针对用户的不同对象、特点和要求设计人机交互

27、方式。 程序在运行过程中应有表明当前状态的标注说明信息,以使用户对进程有了解,不至于面对静止的、无内容的屏幕不知所措。 交互式输入的请求应有明确提示,输入格式应简洁,且与用户习惯或熟悉的方式接近;对于要求输入的内容,应标明可用的选择和边界条件,可能的话辅之以在线帮助功能;对用户的输入应进行有效性检验,防止无效数据的输入。 对于输出的格式和方式,应允许用户进行选择和应答,对于所有输出都应有明确的标志和说明。 应设计完备的错误检测和恢复功能,以防程序非正常运行或终止,使用户无所适从,又无从下手。,2019/4/12,信息系统开发 西南科技大学计算机学院,32,6.2 程序设计,良好的程序设计风格包

28、括: 程序的运行效率 效率主要指计算机运行时间和存储器空间两个方面,要在保证程序可读性的基础上,提高效率。注意如下: 写程序之前,尽量简化算术和逻辑表达式,且尽量使用逻辑表达式,因为逻辑运算比算术运算速度快。 尽量选用好的算法。 仔细研究循环嵌套,确定是否有语句可以从内层移到循环体外。 尽量避免使用多维数组。 尽量避免使用指针和复杂的表。 充分利用语言环境提供的函数。 使用具有良好优化特性的编译程序,以生成高效的目标代码。,2019/4/12,信息系统开发 西南科技大学计算机学院,33,本节主要内容,系统测试 领会系统测试的作用和意义。 识记系统测试的对象与目的。 识记系统测试中的错误种类。

29、领会系统测试应遵守的基本原则。 掌握人工测试与机器测试的方法。 掌握系统测试的步骤和各步的工作内容。 掌握测试用例设计技术。 了解系统测试中排错方法。,2019/4/12,信息系统开发 西南科技大学计算机学院,34,6.3 系统测试,系统测试的作用和意义: 系统测试是管理信息系统开发周期中一个十分漫长的阶段。 其作用与重要性主要体现在它是保证系统质量与可靠性的最后关口,是对在整个系统开发过程包括系统分析,系统设计和系统实现的最终审查。 系统测试的工作量大约占整个软件开发工作的40-50%,甚至更多。 系统测试的对象和目的: 系统测试的对象不仅仅是源程序,而对应的是整个软件。它把需求分析、概要设

30、计、详细设计以及程序设计各阶段的开发文档,包括规格说明、概要设计说明、详细设计说明以及源程序,都作为测试的对象。 系统测试的目的:不是证明程序无错,而是要选取易于发生错误的测试数据,证明程序存在错误。,2019/4/12,信息系统开发 西南科技大学计算机学院,35,6.3 系统测试,系统测试中的错误按范围和性质可以划分为: 功能错误:由于功能规格说明书不够完整或叙述不够确切,致使编码时对功能理解有误而产生的错误。 系统错误:主要是与外部接口的错误,子程序调用错误,参数调用错误,输入/输出地址错误,以及资源管理错误等。 过程错误:主要是指运算错误,初始过程错误,逻辑错误等。 数据错误:数据结构,

31、内容,属性错误,动态数据与静态数据混淆,参数与控制数据混淆等。 编码错误:主要是指变量名错误,局部变量与全局变量混淆,语法错误,程序逻辑错误和编码书写错误等。,2019/4/12,信息系统开发 西南科技大学计算机学院,36,6.3 系统测试,系统测试的基本原则: 测试工作应避免由原开发软件的个人或小组来承担。 设计方案时,不仅要包括确定的输入数据,还应包括从系统功能出发预期的测试结果。 测试用例不仅要包括合理的,有效的输入数据还应包括无效的或不合理的输入数据。 不仅要检查程序是否做了该做的事,还应检查程序是否同时做了不该 做的事。 软件中存在的错误的概率和已经发现错误的个数是成正比的。 保留测

32、试用例,作为软件文档组成部分。,2019/4/12,信息系统开发 西南科技大学计算机学院,37,6.3 系统测试,测试与调试: 测试:发现系统程序中存在的错误。 调试(排错或者纠错):在测试发现问题后,还必须诊断错误,改正错误,这就是调试。这就要求必须准确判定错误位置以及具体的出错情况,继而进行改正以排除错误。,改正错误以后,应及时对系统文档中相关的内容进行修改,以保证程序与文档的一致性。,穷举测试与选择测试 如果说找出的错误越多,测试越成功,那能不能找出所有的隐藏错误呢? 通过简单的数学计算我们就会发现,所谓的穷举法测试是无法实现的,而且也是没有必要的,所以为了节省时间和资源,提高效率,使用

33、精心设计的测试用例,以较少的测试数据发现最多的错误! 结论:测试能够发现程序的错误却不能够发现程序的全部错误,不能证明程序无错。我们所做的程序测试工作不能够完全发现错误,只能够将遗留错误减到最低程度!,2019/4/12,信息系统开发 西南科技大学计算机学院,38,6.3 系统测试,软件测试的方法,软件测试,一般程序通过编译以后,先进行人工测试,然后再进行机器测试。,又称代码复审,主要有三种方法。,源代码编完以后,直接由程序员自己进行检查。,一般由3-5人组成测试小组,测试小组应是从未介入过该软件的设计工作的有经验的程序设计人员。,测试小组的成员与走查相似,要求测试人员在会审前仔细阅读软件有关

34、资料,根据错误类型清单,填写检测表,列出根据错误类型要提问的问题。,通过直接在计算机上运行被测程序来发现程序中的错误。,也称为功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序的输入和输出特性来测试是否满足设定的功能。,也称为结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符。,2019/4/12,信息系统开发 西南科技大学计算机学院,39,6.3 系统测试,系统测试的步骤 一般有四个步骤:单元测试、组装测试、确认测试和系统测试

35、。,测后模块,测后软件,确认后软件,系统测试的步骤,2019/4/12,信息系统开发 西南科技大学计算机学院,40,6.3 系统测试,系统测试的步骤: 单元测试 单元测试中采用白盒测试方法,往往发现编码和详细设计的错误。 主要从五个方面去检验模块。 模块接口:测试信息能否正确无误地流入、流出模块。 模块内部之数据结构:测试内部数据的完整性,包括内容、形式和相互关系。 逻辑路径:测试应覆盖模块中关键的逻辑路径。 出错处理:测试模块中队错误及产生错误的条件的预见能力,并且检验其出错处理是否适当。 边界条件:软件往往容易在边界条件上发生问题,利用边界值分析方法,检查这类错误。 测试中可采用辅助模块:

36、 驱动模块:用以模拟被测模块的上级调用模块。 桩模块:用以模拟被测模块的下级被调用模块。,所谓单元是指程序中一个模块或一个子程序,是程序运行的最小单元,或是程序最小的独立编译单位。因此单元测试也称为模块测试。,2019/4/12,信息系统开发 西南科技大学计算机学院,41,6.3 系统测试,系统测试的步骤: 组装测试:组装测试主要以系统详细设计和程序设计为依据,通常采用黑盒测试方法。组装的策略分为非增式测试和增式测试两大类. 增式测试又分为:自顶向下、自底向上以及混合方式。 非增式测试:在对所有模块分别进行了基于辅助模块的单元测试后,按程序结构图,将所有模块连接起来,把联结后的程序作为一个整体

37、来进行测试。 增式测试:把单元测试和组装测试结合起来,每次测试把下一个待测试的模块与已经测试过的那些模块结合起来测试。 自顶向下测试:按照程序模块结构图,从顶层模块开始自上而下地组装,每次只增加一个模块,每增加一个新模块,要加上与之接口的桩模块,去掉上次测试中本模块的替身桩模块。 自底向上测试:先从一个最底层模块开始,从下向上逐步添加模块,组成程序的一个分支,最每一个分支重复该过程,直到所有分支组装完成。 前两种方法各有优缺点,因此可采用将两者结合起来的混合测试方法。对于上层模块采用自顶向下测试;而对于某些具有输入/输出功能或含有复杂算法的关键分支,则采用自底向上测试。,对每个模块完成了单元测

38、试以后,需要按照设计时做出的层次模型图把它们连结起来,进行组装测试,也称为组合测试或综合测试。,优点: 1.测试软件少;2.错误容易找到; 3.测试彻底。,特点是较早地显现整个程序的轮廓,辅助模块只有桩模块,而无驱动模块,但不容易设计测使用例。,不能在测试早期显现程序轮廓,总体结构只有加上最后一个才能体现;辅助模块只有驱动模块,而无桩模块;由于每个分支的测试均从下层模块开始,所以较容易设计测使用例,数据由已测试过的真实的下级模块提供。,2019/4/12,信息系统开发 西南科技大学计算机学院,42,6.3 系统测试,系统测试的步骤: 确认测试:经过组装测试,软件已经装配完毕,接下来进行的确认测

39、试和系统测试将是以整个软件作为测试对象,且采用黑盒测试的方法。 确认测试是要进一步检查软件是否符合软件需求规格说明书的全部要求,因此又称为合格性测试或验收测试。 确认测试主要包括以下几部分: 功能测试:检测软件需求规格说明书的内容是否全部实现了,是否有功能遗漏。 性能测试:检查软件的可移植性,兼容性,错误恢复能力以及可维护性等性能指标,以检查软件功能实现程度。 配置审查:检查被检测软件的全部构成成分是否齐全,质量是否合乎要求,应有维护阶段所需的全部细节,并且是否编好目录。 由于确认测试是面向用户需求的,因此应让用户参与.测试采用的测试用例应以实际应用数据为基础,不再使用模拟数据。,软件的构成:

40、 1.用户资料:用户手册、操作手册。 2.系统分析资料:需求说明书、系统分析说明书等。 3.系统设计资料:概要设计说明书、详细设计说明书。 4.源程序与测试资料:源程序清单、测试说明书、测试报告等。,2019/4/12,信息系统开发 西南科技大学计算机学院,43,6.3 系统测试,系统测试的步骤: 系统测试:系统测试是将信息系统的所有组成部分包括软件,硬件,用户以及环境等综合在一起进行测试,以保证系统的各组成部分协调运行。 它是面向集成的整体系统的,主要有: 集成功能测试 可靠性与适应性测试 系统自我保护及恢复能力的测试 安全性测试 强度测试 由于系统测试中采用的方法,标准和技巧在很大程度上依

41、赖于具体的被测系统,因此要根据被测系统的实际特点和环境,以及用户的特殊需求进行系统测试,以使系统真正满足用户的需求.,2019/4/12,信息系统开发 西南科技大学计算机学院,44,6.3 系统测试,系统测试的四个步骤为单元测试,组装测试,确认测试和系统测试,不同的测试步骤所针对的对象目标不同,方法也不相同。见图:,2019/4/12,信息系统开发 西南科技大学计算机学院,45,6.3 系统测试,测试用例设计技术 测试的关键问题就是选取少量而又有效的测试用例。设计测试用例的目的就是避免选择测试用例的盲目性,选择最有可能发现错误的测试用例。 好的测试用例就是最有可能发现迄今为止尚未发现的错误的测

42、试用例。 逻辑覆盖法:逻辑覆盖法是一种白盒测试方法,是从程序内部的逻辑结构出发选取的用例。覆盖级别由低向高可以划分为语句覆盖,条件覆盖,判定覆盖,判定条件覆盖和路径覆盖五种。,2019/4/12,信息系统开发 西南科技大学计算机学院,46,6.3 系统测试,语句覆盖:设计测试用例,使程序中的每个执行语句至少执行一次。 语句覆盖的例子:,测使用例: a=2,b=0,x=4,语句覆盖是最弱的逻辑覆盖。,则可以看到通过的路径是ACE,使程序的四个语句都执行了一次,达到了语句覆盖。,2019/4/12,信息系统开发 西南科技大学计算机学院,47,6.3 系统测试,判断覆盖:使程序中每个判断的取真分支和

43、取假分支至少经历一次,即使得每个判断获得各种可能的结果。 判断覆盖的例子:,测使用例: a=2,b=0,x=4 a=1,b=0,x=1,则可以看到通过的路径是ACE和ABD,使两个判断的四个分支都得到了覆盖,达到了判断覆盖。,同理,选择路径ACD和ABE也可以做到判断覆盖。,2019/4/12,信息系统开发 西南科技大学计算机学院,48,6.3 系统测试,条件覆盖:使每个判断的每个条件的可能取值至少满足一次。 条件判断的例子:,测使用例: a=2,b=0,x=4 a=1,b=1,x=1,由于判断覆盖的对象是每个判断,而条件覆盖的对象是每个判断中的每个条件,因此一般来说条件覆盖比判断覆盖要严格。

44、但并不绝对。,则可以看到通过的路径是ACE和ABD,使两个判断的四个分支都得到了覆盖,达到了判断覆盖。,2019/4/12,信息系统开发 西南科技大学计算机学院,49,6.3 系统测试,判断条件覆盖:设计测试用例,使得判断中每个条件的所有可能取值至少出现一次,并且使每个判断本身的判定结果也至少出现一次。 判断条件覆盖的例子:,判断条件覆盖比单纯的判断覆盖和条件覆盖都要强。,测使用例: 请同学自行设计。,2019/4/12,信息系统开发 西南科技大学计算机学院,50,6.3 系统测试,路径覆盖:设计测试用例,以覆盖程序中所有可能的路径。 路径覆盖的例子:,测使用例: 请同学自行设计。,对于实际问

45、题,往往不太现实,因为其路径的数量可能相当庞大。,2019/4/12,信息系统开发 西南科技大学计算机学院,51,6.3 系统测试,测试用例设计技术 等价类划分法:它属于黑盒测试方法。它是在完全不考虑内部结构情况下,只根据程序的规格说明设计程序设计用例。它是把程序的输入范围划分成若干部分,然后从每一部分中选取少量代表性数据作为测试用例。 有效等价类:是指对程序的功能要求来讲是有意义的,合理的输入数据所构成的集合。 无效等价类:是指那些不合理的或非法的输入数据所构成的集合。 等价类划分原则请参考教材。,2019/4/12,信息系统开发 西南科技大学计算机学院,52,6.3 系统测试,测试用例设计

46、技术 边值分析法:它是针对如下标,数据结构,标量和循环变量取最大值,最小值等容易发生错误的区域而设计测试用例的方法。边值分析法也是一种黑盒测试方法。 遵循的原则: 若输入条件规定了取值范围,则应选择恰好落在边界上,以及处在边界内、外边上的测试值。 如规定了输入数据的个数,则可选择最小个数,最大个数,比最小个数多1、少1等等情况作为测试输入的个数。 如输入数据为有序集合数据,则应特别注意选取有序集中的第一个和最后一个元素以及空元素作为测使用例。 边值分析法与等价类分析方法的区别在于: 它不是从等价类中任选一个例子,而是在等价类的边界及其附近选一个或几个例子。 边值分析法不仅注意输入条件的边值,还

47、应根据输出条件的边值设计测试用例。,2019/4/12,信息系统开发 西南科技大学计算机学院,53,6.3 系统测试,测试用例设计技术 错误猜测法:主要是依靠测试人员的经验直觉来推测软件中可能存在的各种错误,并针对这些可能的错误设计测试用例子。 其基本思想是列举出程序中可能有的错误和容易发生错误的特殊情况,并据此选择测试用例。 综合测试方法:将各种方法结合起来综合使用,使之互补设计出完整而又全面的测试用例。 一般来说先用黑盒法设计出基本的测试用例,然后再用白盒补充一些必要的测试用例。具体步骤: 用边值分析法设计出一组测试用例。考虑输入输出数据的边界情况。 必要时用等价划分法补充测试方案。 用错

48、误猜测法补充一些测试用例。 检查上面测试用例对程序逻辑的覆盖程度,并根据系统的可靠性要求采用不同的逻辑覆盖标准,然后在补充测试用例。,2019/4/12,信息系统开发 西南科技大学计算机学院,54,6.3 系统测试,工程上一般用来考察测试工作进行程度的方法主要有: 规定测试的方法和应该达到的条件。 规定至少要查出的错误数。 根据发现错误的趋势来停止测试.。 具体采用什么方法结束测试都要以测试的最佳效果为标准的。需要说明的是最佳效果是:通过较小的测试成本把未暴露的错误降到最低。 排错 测试的目的是为了发现程序存在的错误。 排错的目的:找到错误所在并改正错误。 排错的任务: 确定错误的位置和性质(

49、约占工作量的95%)。 改正错误。,2019/4/12,信息系统开发 西南科技大学计算机学院,55,6.3 系统测试,排错的步骤: 从错误的外部表现形式入手,确定程序中出错的位置。 研究相关的部分源程序,找出错误的内在原因。 修改设计和编码。 重复进行暴露这个错误的原始测试或某些相关测试,以确定错误是否排除,以及是否引入了新的错误。 如果所做的修改无效,则撤消这次修改,重复以上过程直到找到一个有效的解决方法为止。 根据排错所产生的变化,对系统开发文档中的相关部分进行修改。,2019/4/12,信息系统开发 西南科技大学计算机学院,56,6.3 系统测试,排错方法: 试探法:适用于结构比较简单的程序。 跟踪法:对于小型程序比较有效。 反向跟踪:从发现错误症状的地方开始回溯,人工沿着程序的控制流程往回追踪程序代码,直到错误根源。 正向跟踪:沿着程序的控制流,从头开始正向跟踪,检查中间结果,找到最先出错的地方。 对比查找法:主要用于缩小错误的范围。 归纳法:从错误征兆的线索出发,通过分析这些线索之间的关系而找出错误。 其步

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

当前位置:首页 > 其他


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