《系统实施测试评价和维护.ppt》由会员分享,可在线阅读,更多相关《系统实施测试评价和维护.ppt(235页珍藏版)》请在金锄头文库上搜索。
1、下页下页末页末页上页上页首页首页目录目录1信息系统的开发思路信息系统的开发思路系统分析系统分析系统设计系统设计系统实施系统实施1下页下页末页末页上页上页首页首页目录目录本章主要内容本章主要内容 : 6 6 6 6.1.1.1.1 系统实施的概念、任务、特点及步骤系统实施的概念、任务、特点及步骤 6.26.26.26.2 系统软硬件、网络购置和系统的准备系统软硬件、网络购置和系统的准备 6.36.36.36.3 程序编制程序编制6.46.46.46.4 测试测试6.56.56.56.5 系统试运行与切换系统试运行与切换6.66.66.66.6 系统评价和维护系统评价和维护2下页下页末页末页上页上
2、页首页首页目录目录 系统设计说明书审核通过后,研制工作进系统设计说明书审核通过后,研制工作进入实施阶段。入实施阶段。这一阶段要把物理模型转换为这一阶段要把物理模型转换为实际可运行的实际可运行的信息系统,交付用户使用。也信息系统,交付用户使用。也就是在系统分析、系统设计的基础上,完成就是在系统分析、系统设计的基础上,完成程序的程序的编码、测试、数据库系统的建立,系编码、测试、数据库系统的建立,系统的试运行和系统的转换,统的试运行和系统的转换,将系统设计付诸将系统设计付诸实现,形成目标系统的运行环境。实现,形成目标系统的运行环境。3构建系统运行平台构建系统运行平台程序编制程序编制代码实现代码实现数
3、据准备数据准备程序的调试和测试程序的调试和测试系统转换系统转换用户培训用户培训系统实施报告系统实施报告系统的物理模型系统的物理模型4下页下页末页末页上页上页首页首页目录目录具体地讲,这一阶段的任务包括以下几个方面:具体地讲,这一阶段的任务包括以下几个方面:(1 1)硬件、系统的准备)硬件、系统的准备根据系统分析和系统设计方案的要求,选择与安根据系统分析和系统设计方案的要求,选择与安装符合新系统运行环境要求的硬件及系统。装符合新系统运行环境要求的硬件及系统。(2 2)数据准备)数据准备按照数据库设计方案的要求,安装调试系统所需按照数据库设计方案的要求,安装调试系统所需要的数据库管理系统。收集和整
4、理信息系统运行要的数据库管理系统。收集和整理信息系统运行所需的基础数据,建立数据库。所需的基础数据,建立数据库。5下页下页末页末页上页上页首页首页目录目录(3 3)程序设计)程序设计制定编程的规范约定;采用结构化程序设制定编程的规范约定;采用结构化程序设计方法;选择合适的程序设计语言进行编计方法;选择合适的程序设计语言进行编程,包括程序的设计、测试、运行和调试。程,包括程序的设计、测试、运行和调试。6下页下页末页末页上页上页首页首页目录目录(4 4)系统测试与调试)系统测试与调试系统测试系统测试是为了发现系统中所存在的错误是为了发现系统中所存在的错误而运行系统的过程,其目的就是在系统投而运行系
5、统的过程,其目的就是在系统投入运行之前,尽可能多发现系统中的错误,入运行之前,尽可能多发现系统中的错误,以保证系统可靠地、高质量地实现设计功以保证系统可靠地、高质量地实现设计功能;能;系统调试系统调试是将测试出的错误做进一步是将测试出的错误做进一步的诊断和改正。的诊断和改正。7下页下页末页末页上页上页首页首页目录目录(5 5)系统转换)系统转换系统经过测试、试运行之后,就可以选择系统经过测试、试运行之后,就可以选择适当的方式,在适宜的时间进行新老的替适当的方式,在适宜的时间进行新老的替换工作,使新系统进入实际运行。换工作,使新系统进入实际运行。8下页下页末页末页上页上页首页首页目录目录 与系统
6、分析、系统设计阶段相比与系统分析、系统设计阶段相比较,系统实施阶段的较,系统实施阶段的特点特点是:是:时间短、时间短、难度小、工作量大,投入的人力、物力难度小、工作量大,投入的人力、物力多。多。9下页下页末页末页上页上页首页首页目录目录硬件获取硬件获取系统编程系统编程用户准备用户准备人员:聘用和培训人员:聘用和培训机房、场所准备机房、场所准备数据准备数据准备安装安装测试测试试运行试运行系统切换系统切换用户验收用户验收10下页下页末页末页上页上页首页首页目录目录6.2.16.2.1系统软硬件、网络购置系统软硬件、网络购置1 1)硬件的获取)硬件的获取根据系统设计的指标要求制作采购的标书根据系统设
7、计的指标要求制作采购的标书邀请硬件供应商进行技术交流邀请硬件供应商进行技术交流选择资质好的厂商发放标书选择资质好的厂商发放标书评标评标开标及商务谈判开标及商务谈判签订合同签订合同执行合同执行合同11下页下页末页末页上页上页首页首页目录目录2 2)网络的获取)网络的获取局域网络的建设和改造局域网络的建设和改造新建网络新建网络改造网络改造网络自建或外包自建或外包广域网络的建设广域网络的建设传输网络的取得(传输方式的选择、线路的租赁)传输网络的取得(传输方式的选择、线路的租赁)网络设备的获取(与硬件同)网络设备的获取(与硬件同)自建与承包给系统集成商自建与承包给系统集成商12下页下页末页末页上页上页
8、首页首页目录目录3)系统工具的选取)系统工具的选取选择开发方法选择开发方法选择开发工具及数据库产品选择开发工具及数据库产品13下页下页末页末页上页上页首页首页目录目录1 1)用户准备)用户准备用户准备主要是指准备好用户准备主要是指准备好信息系统的管理人员、信息系统的管理人员、使用人员等。使用人员等。用户的培训用户的培训(内部培训与外部培训(内部培训与外部培训)。)。信息系统的信息系统的ITIT人员的招聘和培训。人员的招聘和培训。2 2)场所准备)场所准备新系统的工作场所(空调、电力、办公家具)。新系统的工作场所(空调、电力、办公家具)。14下页下页末页末页上页上页首页首页目录目录3 3)数据准
9、备)数据准备将原来的手工数据文件转化成计算机文件。将原来的手工数据文件转化成计算机文件。将原来的不同格式的数据文件转换成新系统的将原来的不同格式的数据文件转换成新系统的格式。格式。4 4)安装)安装将计算机设备、网络设备在信息系统场所安装、将计算机设备、网络设备在信息系统场所安装、使其运转。使其运转。15下页下页末页末页上页上页首页首页目录目录6.3.1 6.3.1 程序设计语言的分类程序设计语言的分类 6.3.2 6.3.2 结构化程序设计结构化程序设计6.3.3 6.3.3 程序设计风格程序设计风格6.3.4 6.3.4 程序效率程序效率16下页下页末页末页上页上页首页首页目录目录 随着计
10、算机技术的发展,目前已经出现随着计算机技术的发展,目前已经出现了数百种程序设计语言,但被广泛应用的只有了数百种程序设计语言,但被广泛应用的只有几十种几十种。由于不同种类的语言适用于不同的问由于不同种类的语言适用于不同的问题域和系统环境,题域和系统环境,因此了解程序设计语言的分因此了解程序设计语言的分类可以帮助我们选择出合适的语言。通常可将类可以帮助我们选择出合适的语言。通常可将程序设计语言分为程序设计语言分为机器语言、汇编语言,高级机器语言、汇编语言,高级语言和第四代语言语言和第四代语言4类类。17下页下页末页末页上页上页首页首页目录目录 结构化程序设计主要包括两方面:结构化程序设计主要包括两
11、方面:在编写程序时,强调在编写程序时,强调使用几种基本控制结构使用几种基本控制结构,通过组合嵌套,形成程序的控制结构。通过组合嵌套,形成程序的控制结构。尽可能尽可能避免使用避免使用GOTOGOTO语句。语句。在程序设计过程中,尽量采用自顶向下在程序设计过程中,尽量采用自顶向下和逐步细化的原则,和逐步细化的原则,由粗到细,一步步由粗到细,一步步展开展开。18下页下页末页末页上页上页首页首页目录目录使用语言中的使用语言中的顺序顺序、选择选择、循环循环等有限的基本控等有限的基本控制结构表示程序逻辑。制结构表示程序逻辑。选用的控制结构只准许有选用的控制结构只准许有一个入口一个入口和和一个出口一个出口。
12、程序语句组成程序语句组成容易识别的块容易识别的块,每块只有,每块只有一个入口一个入口和和一个出口一个出口。复杂结构应该用基本控制结构进行组合嵌套来实复杂结构应该用基本控制结构进行组合嵌套来实现。现。19下页下页末页末页上页上页首页首页目录目录自顶向下,逐步求精自顶向下,逐步求精在详细设计和编码在详细设计和编码阶段,应当采取阶段,应当采取自自顶向下,逐步求精顶向下,逐步求精的的方法。方法。把一个模块的功能把一个模块的功能逐步分解,细化为逐步分解,细化为一系列具体的步骤,一系列具体的步骤,进而翻译成一系列进而翻译成一系列用某种程序设计语用某种程序设计语言写成的程序。言写成的程序。逐逐步步细细化化2
13、0下页下页末页末页上页上页首页首页目录目录例,用筛选法求例,用筛选法求100100以内的素数以内的素数筛选法就是从筛选法就是从2 2到到100100中去掉中去掉2,3,52,3,5,7 7的倍的倍数,剩下的就是数,剩下的就是100100以内的素数。以内的素数。为了解决这个问题,可先按程序功能写出为了解决这个问题,可先按程序功能写出一个框架。一个框架。21下页下页末页末页上页上页首页首页目录目录mainmain ( ) / ( ) /程序框架程序框架 建立建立2 2到到100100的数组的数组A A ,其中,其中A A i i i i; -1 1 建立建立2 2到到1010的素数数组的素数数组
14、B B ,其中存放,其中存放2 2 到到1010以内的素数;以内的素数;-2-2 若若A A i i i i是是B B 中任一数的倍数,则中任一数的倍数,则 剔除剔除A A i i ;-3-3 输出输出A A 中所有没有被剔除的数;中所有没有被剔除的数; -4 4 22下页下页末页末页上页上页首页首页目录目录mainmain ( ) ( ) /*/*建立建立2 2到到100100的数组的数组A A ,其中,其中A A i i i i*/*/for ( for ( i i = 2 = 2;i i = 100 = 100;i i+ ) + ) A A i i = = i i;/* /* 建立建立2
15、 2到到1010的素数数组的素数数组B B ,其中存放,其中存放2 2到到 1010以内的素数以内的素数* */ /B B1= 21= 2;B B2= 32= 3;B B3= 53= 5;B B4= 74= 7;/*/*若若A A i i i i是是B B 中任一数的倍数,则剔中任一数的倍数,则剔 除除A A i i*/*/for ( for ( j j = 1 = 1;j j = 4 = 4;j j+ )+ ) 检查检查A A 所有的数能否被所有的数能否被B B j j 整除并将整除并将 能被整除的数从能被整除的数从A A 中剔除;中剔除; -3.1-3.1 /*/*输出输出A A 中所有没
16、有被剔除的数中所有没有被剔除的数* */ / for ( for ( i i = 2 = 2;i i = 100 = 100;i i+ )+ ) 若若A A i i 没有被剔除,则输出之没有被剔除,则输出之 -4.1-4.1 对框架中的局部再做细化,得到整个程序。对框架中的局部再做细化,得到整个程序。23下页下页末页末页上页上页首页首页目录目录mainmain ( ) ( ) /*/*建立建立2 2到到100100的数组的数组A A ,其中,其中A A i i i i*/*/for ( for ( i i = 2 = 2;i i = 100 = 100;i i+ ) + ) A A i i =
17、 = i i;/* /* 建立建立2 2到到1010的素数表的素数表B B ,其中存放,其中存放2 2到到 1010以内的素数以内的素数* */ /B B1= 21= 2;B B2= 32= 3;B B3= 53= 5;B B4= 74= 7;/*/*若若A A i i i i是是B B 中任一数的倍数,则剔除中任一数的倍数,则剔除 A A i i*/*/for ( for ( j j = 1 = 1;j j = 4 = 4;j j+ )+ ) /*/*检查检查A A 所有的数能否被所有的数能否被B B j j 整除并将能整除并将能 被整除的数从被整除的数从A A 中剔除中剔除* */ / f
18、or ( for ( i i = 2 = 2;i i = 100 = 100;i i+) if ( if ( A A i i B B j j * * B B j j = = A A i i ) ) A A i i = 0 = 0; /*/*输出输出A A 中所有没有被剔除的数中所有没有被剔除的数* */ / for ( for ( i i = 2 = 2; i i = 100 = 100;i i+) /*/*若若A A i i 没有被剔除,则输出之没有被剔除,则输出之* */ / if ( if ( A Aii != 0 != 0 ) printfprintf ( ( “A A%d%d % %
19、dndn”, , I, I, A A i i ) ); 24下页下页末页末页上页上页首页首页目录目录自顶向下,逐步求精方法的优点自顶向下,逐步求精方法的优点符合人们解决复杂问题的普遍规律。可提高系统开发符合人们解决复杂问题的普遍规律。可提高系统开发的成功率和生产率。的成功率和生产率。用先全局后局部,先整体后细节,先抽象后具体的逐用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有步求精的过程开发出来的程序具有清晰的层次结构,清晰的层次结构,程序容易阅读和理解。程序容易阅读和理解。程序自顶向下,逐步细化,分解成一个树形结构。在程序自顶向下,逐步细化,分解成一个树形结构。在
20、同一层的节点上的细化工作相互独立。同一层的节点上的细化工作相互独立。有利于编码、有利于编码、测试和集成。测试和集成。每一步工作仅在上层节点的基础上做不多的设计扩展,每一步工作仅在上层节点的基础上做不多的设计扩展,便于检查。便于检查。有利于设计的分工和组织工作。有利于设计的分工和组织工作。25下页下页末页末页上页上页首页首页目录目录程序实际上也是一种供人阅读的文章,有程序实际上也是一种供人阅读的文章,有一个一个文章的风格文章的风格问题。应该使程序具有良问题。应该使程序具有良好的风格。好的风格。1. 1. 源程序文档化源程序文档化2. 2. 数据说明数据说明3. 3. 语句结构语句结构4. 4.
21、输入输出方法输入输出方法26下页下页末页末页上页上页首页首页目录目录1 1)标识符的命名)标识符的命名2 2)安排注释)安排注释3 3)程序的视觉组织)程序的视觉组织27下页下页末页末页上页上页首页首页目录目录符号名即标识符,包括符号名即标识符,包括模块名模块名、变量名变量名、常量名常量名、标号名标号名、子程序名子程序名、 、数据区名数据区名以及以及缓冲区名缓冲区名等。等。这些名字应能反映它所代表的实际东西,这些名字应能反映它所代表的实际东西,应有一定实际意义应有一定实际意义。例如,表示次数的量用例如,表示次数的量用TimesTimes,表示总量的用,表示总量的用TotalTotal,表示平,
22、表示平均值的用均值的用AverageAverage,表示和的量用,表示和的量用SumSum等。等。名字不是越长越好名字不是越长越好,应当选择精炼的意义明确的名字。,应当选择精炼的意义明确的名字。必要必要时可使用缩写名字时可使用缩写名字,但这时要注意缩写规则要一致,并且要,但这时要注意缩写规则要一致,并且要给每一个名字加注释给每一个名字加注释。同时,在一个程序中,一个变量只应。同时,在一个程序中,一个变量只应用于一种用途。用于一种用途。28下页下页末页末页上页上页首页首页目录目录夹在程序中的注释是夹在程序中的注释是程序员与日后的程序读程序员与日后的程序读者之间通信的重要手段。者之间通信的重要手段
23、。注释决不是可有可无的。注释决不是可有可无的。一些正规的程序文本中,注释行的数量占到一些正规的程序文本中,注释行的数量占到整个源程序的整个源程序的1 13 3到到1 12 2,甚至更多。,甚至更多。注释分为注释分为序言性注释序言性注释和和功能性注释功能性注释。29下页下页末页末页上页上页首页首页目录目录通常置于每个程序模块的开头部分,通常置于每个程序模块的开头部分,它应当给出程序的整体说明它应当给出程序的整体说明,对,对于理解程序本身具有引导作用。有些系统开发部门对序言性注释做了于理解程序本身具有引导作用。有些系统开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。明确而严格的规
24、定,要求程序编制者逐项列出。有关项目包括:有关项目包括: 程序标题程序标题;有关本模块有关本模块功能和目的功能和目的的的说明说明; 主要算法主要算法; 接口说明接口说明:包括调用形式,参数描述,子程序清单;:包括调用形式,参数描述,子程序清单; 有关数据描述有关数据描述:重要的变量及其用途,约束或限制条件,以及其:重要的变量及其用途,约束或限制条件,以及其它有关信息;它有关信息; 模块位置模块位置:在哪一个源文件中,或隶属于哪一个系统包;:在哪一个源文件中,或隶属于哪一个系统包; 开发简历开发简历:模块设计者,复审者,复审日期,修改日期及有关说:模块设计者,复审者,复审日期,修改日期及有关说明
25、等。明等。30下页下页末页末页上页上页首页首页目录目录功能性注释嵌在源程序体中,功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样。么工作,或是执行了下面的语句会怎么样。而不要解释下面怎么做。而不要解释下面怎么做。例:例: /* ADD AMOUNT TO TOTAL */* ADD AMOUNT TO TOTAL */ TOTAL = AMOUNT TOTAL = AMOUNTTOTALTOTAL不好。不好。如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:如果注明把月销售额计入年度总额,便使读者理解
26、了下面语句的意图: /* ADD MONTHLY-SALES TO ANNUAL-TOTAL */* ADD MONTHLY-SALES TO ANNUAL-TOTAL */TOTAL = AMOUNTTOTAL = AMOUNTTOTALTOTAL要点要点 描述一段程序,描述一段程序,而不是每一个语句;而不是每一个语句; 用缩进和空行,用缩进和空行,使程序与注释容易区别;使程序与注释容易区别; 注释要正确。注释要正确。31下页下页末页末页上页上页首页首页目录目录恰当地利用恰当地利用空格空格,可以,可以突出运算的优先性突出运算的优先性,避免发生运算的错误。避免发生运算的错误。例如例如 ,将表达
27、式,将表达式( (A A16)16)ANDNOTANDNOT( (B B49)49)ORCORC写成写成( (A A16) 16) AND NOTAND NOT ( (B B49) 49) OR COR C自然的程序段之间可用自然的程序段之间可用空行空行隔开。隔开。32下页下页末页末页上页上页首页首页目录目录移行移行也叫做也叫做向右缩格向右缩格。它是指程序中的各行不。它是指程序中的各行不必都在左端对齐,都从第一格起排列。这样做必都在左端对齐,都从第一格起排列。这样做使程序完全分不清层次关系。使程序完全分不清层次关系。对于对于选择语句选择语句和和循环语句循环语句,把其中的程序段语,把其中的程序段
28、语句向右做句向右做阶梯式移行阶梯式移行。使程序的逻辑结构更加。使程序的逻辑结构更加清晰。清晰。例如,例如,两重选择结构嵌套,写成下面的移行形两重选择结构嵌套,写成下面的移行形式,层次就清楚得多。式,层次就清楚得多。33下页下页末页末页上页上页首页首页目录目录 IF() THEN IF() THEN ELSE ENDIF ELSE ENDIF34下页下页末页末页上页上页首页首页目录目录在设计阶段已经确定了数据结构的组织及其在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说复杂性。在编写程序时,则需要注意数据说明的风格。明的风格。为了使程序中数据说明更易于理解和维护,为了
29、使程序中数据说明更易于理解和维护,必须注意以下几点。必须注意以下几点。 1 1)数据说明的次序应当规范化)数据说明的次序应当规范化 2 2)说明语句中变量安排有序化)说明语句中变量安排有序化 3 3)使用注释说明复杂数据结构)使用注释说明复杂数据结构35下页下页末页末页上页上页首页首页目录目录数据说明次序规范化,使数据属性容易查找,也有利于测试,数据说明次序规范化,使数据属性容易查找,也有利于测试,排错和维护。排错和维护。原则上,数据说明的次序与语法无关,其次序是任意的。但原则上,数据说明的次序与语法无关,其次序是任意的。但出于阅读、理解和维护的需要,最好使其规范化,使说明的出于阅读、理解和维
30、护的需要,最好使其规范化,使说明的先后次序固定。先后次序固定。例如,在例如,在FORTRANFORTRAN程序中数据说明次序程序中数据说明次序 常量说明常量说明 简单变量类型说明简单变量类型说明 数组说明数组说明 公用数据块说明公用数据块说明 所有的文件说明所有的文件说明在类型说明中还可进一步要求。例,在类型说明中还可进一步要求。例, 可按如下顺序排列:可按如下顺序排列: 整型量说明整型量说明 实型量说明实型量说明 字符量说明字符量说明 逻辑量说明逻辑量说明36下页下页末页末页上页上页首页首页目录目录当当多个变量名在一个说明语句中说明多个变量名在一个说明语句中说明时,应当对这些变量时,应当对这
31、些变量按按字母的顺序排列字母的顺序排列。带标号的全程数据。带标号的全程数据( (如如FORTRANFORTRAN的公用块的公用块) )也应当按字母的顺序排列。也应当按字母的顺序排列。例如,把例如,把integer integer sizesize, , lengthlength, , width width, , costcost, , priceprice写成写成 costcost , , integer, integer, lengthlength, , price price , , size size, , widthwidth 37下页下页末页末页上页上页首页首页目录目录如果设计了一
32、个复杂的数据结构,应当使用注如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据结构的固有特释来说明在程序实现时这个数据结构的固有特点。点。例如例如, , 对数据结构的对数据结构的链表结构链表结构和和VB VB 中用户自定中用户自定义的数据类型,都应当在注释中做必要的补充义的数据类型,都应当在注释中做必要的补充说明。说明。38下页下页末页末页上页上页首页首页目录目录 在设计阶段确定了系统的逻辑流结构,但构造单在设计阶段确定了系统的逻辑流结构,但构造单个语句则是编码阶段的任务。语句构造力求个语句则是编码阶段的任务。语句构造力求简单,简单,直接直接,不能为了片面追求效率而使语句复杂
33、化。,不能为了片面追求效率而使语句复杂化。1) 1) 在一行内只写一条语句在一行内只写一条语句在一行内只写一条语句,并且采取适当的移行格在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和功能变得更加明确。式,使程序的逻辑和功能变得更加明确。许多程序设计语言允许许多程序设计语言允许在一行内写多个语句在一行内写多个语句。但。但这种方式这种方式会使程序可读性变差会使程序可读性变差。因而不可取。因而不可取。39下页下页末页末页上页上页首页首页目录目录例如,例如,有一段排序程序有一段排序程序FOR I:=1 TO NFOR I:=1 TO N1 DO BEGIN T:=I1 DO BEGIN
34、T:=I;FOR J:=IFOR J:=I1 TO N DO IF AJ1 TO N DO IF AJAT THEN T:=JAT THEN T:=J;IF TI IF TI THEN BEGIN WORK:=ATTHEN BEGIN WORK:=AT;AT:=AIAT:=AI;AI:=WORKAI:=WORK;END END ENDEND;由于一行中包括了多个语句,掩盖了程序的由于一行中包括了多个语句,掩盖了程序的循环循环结构结构和和条件结构条件结构,使其可读性变得很差。,使其可读性变得很差。40下页下页末页末页上页上页首页首页目录目录FOR I:=1 TO N-1 DO FOR I:=1
35、TO N-1 DO /改进布局改进布局 BEGINBEGIN T:=I T:=I; FOR J:=IFOR J:=I1 TO N DO1 TO N DO IF AJ IF AJAT THEN T:=JAT THEN T:=J; IF TI THENIF TI THEN BEGIN BEGIN WORK:=AT WORK:=AT; AT:=AIAT:=AI; AI:=WORKAI:=WORK; ENDEND ENDEND41下页下页末页末页上页上页首页首页目录目录程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编写得过于紧凑。程序编写得过于
36、紧凑。例,例,有一个用有一个用 C C 语句写出的程序段:语句写出的程序段: AI = AIAI = AIATAT;AT = AIAT = AIATAT;AI = AIAI = AIATAT;此段程序可能不易看懂,有时还需用实际数据试验一下。此段程序可能不易看懂,有时还需用实际数据试验一下。实际上,这段程序的功能就是实际上,这段程序的功能就是交换交换AIAI和和ATAT中中的内容。的内容。目的是为了节省一个工作单元。如果改一下:目的是为了节省一个工作单元。如果改一下: WORK = ATWORK = AT; AT = AIAT = AI; AI = WORKAI = WORK;就能让读者一目了
37、然了。就能让读者一目了然了。42下页下页末页末页上页上页首页首页目录目录程序编写得要简单,写清楚,直截了当地说程序编写得要简单,写清楚,直截了当地说明程序员的用意。例如,明程序员的用意。例如, for ( for ( i i = 1; = 1; i i = = n n; ; i i+ )+ ) for ( for ( j j = 1; = 1; j j = = n n; ; j j+ )+ ) V V i ij j ( ( i ij j ) * ( ) * ( j ji i ) )除法运算()在除数和被除数都是除法运算()在除数和被除数都是整型量整型量时,时,其结果只取整数部分,而得到整型量。
38、其结果只取整数部分,而得到整型量。43下页下页末页末页上页上页首页首页目录目录 当当 i ij j 时时, , i / j = 0i / j = 0 当当 j ji i 时时, , j / i = 0j / i = 0 得到的数组得到的数组 当当ijij 时时 VijVij = ( i = ( ij ) * ( jj ) * ( ji ) = 0i ) = 0 当当i ij j 时时 VijVij = ( i = ( ij ) * ( jj ) * ( ji ) = 1i ) = 1这样得到的结果这样得到的结果 V V 是一个单位矩阵。是一个单位矩阵。44下页下页末页末页上页上页首页首页目录目
39、录写成以下的形式,就能让读者直接了解程序编写写成以下的形式,就能让读者直接了解程序编写者的意图。者的意图。 for ( for ( i i1; 1; i i = = n n; ; i i+ )+ ) for ( for ( j j1; 1; j j = = n n; ; j j+ )+ ) if ( if ( i = ji = j ) ) V V i ij j 1.0;1.0; ELSE ELSE V V i ij j 0.0;0.0;45下页下页末页末页上页上页首页首页目录目录46下页下页末页末页上页上页首页首页目录目录4)4)除非对效率有特殊的要求除非对效率有特殊的要求, , 程序编写要程
40、序编写要做到做到清晰第一,效率第二。清晰第一,效率第二。不要为了追不要为了追求效率而丧失了清晰性。事实上,求效率而丧失了清晰性。事实上,程序程序效率的提高主要应通过选择高效的算法效率的提高主要应通过选择高效的算法来实现。来实现。5)5)首先要保证首先要保证程序正确程序正确, , 然后才要求然后才要求提提高速度。高速度。反过来说,在使程序高速运行反过来说,在使程序高速运行时,首先要保证它是正确的。时,首先要保证它是正确的。47下页下页末页末页上页上页首页首页目录目录6)6)避免避免使用临时变量使用临时变量而使可读性下降。而使可读性下降。例,例,有有的程序员为了追求效率,往往喜欢把表达式的程序员为
41、了追求效率,往往喜欢把表达式 AIAI1 1AI;AI; 写成写成 AIAIAI; AI; X XAIAI1 1AI;AI; 这样将一句分成两句写,会产生意想这样将一句分成两句写,会产生意想不到的问题。不到的问题。48下页下页末页末页上页上页首页首页目录目录7)7)让编译程序做简单的优化。让编译程序做简单的优化。8)8)尽可能尽可能使用库函数使用库函数9) 9) 避免避免不必要的转移。不必要的转移。同时如果能保持程同时如果能保持程序可读性,则不必用序可读性,则不必用GOTOGOTO语句。语句。 例,例,有一个求三个数中最小值的程序:有一个求三个数中最小值的程序: 49下页下页末页末页上页上页首
42、页首页目录目录 IF ( XIF ( X Y ) GOTO 30Y ) GOTO 30 IF (Y IF (Y Z) GOTO 50Z) GOTO 50 SMALL SMALLZ Z GOTO 60 GOTO 6030 IF ( X 30 IF ( X Z Z)GOTO 60GOTO 60 SMALL SMALLZ Z GOTO 60 GOTO 6050 SMALL50 SMALLY Y GOTO 60 GOTO 6060 SMALL60 SMALLX X70 CONTINUE70 CONTINUE50下页下页末页末页上页上页首页首页目录目录 程序只需编写成:程序只需编写成: smallsma
43、llx x; ; if ( if ( y y smallsmall ) ) smallsmally y; ; if ( if ( z z = = a a ) ) ifif ( ( charchar = = z z ) ) coutcout “This is a letter.This is a letter.”; ; else else coutcout = 0if ( char = 0 & char = 9 & char 1)and(B=0)(A=2)or(X1)X=X/AX=X+1T TT TF FF Fabdce101下页下页末页末页上页上页首页首页目录目录L1(ace)=(A1)and
44、(B=0)and(A=2)or(X/A1)=(A1)and(B=0)and(A=2)or(A1)and(B=0)and(X/A1)=(A=2)and(B=0)or(A1)and(B=0)and(X/A1) 102下页下页末页末页上页上页首页首页目录目录L2(abd)=not(A1)and(B=0)andnot(A=2)or(X1)=not(A1)ornot(B=0)andnot(A=2)andnot(X1)=not(A1)andnot(A=2)andnot(X1)ORnot(B=0)andnot(A=2)andnot(X1)103下页下页末页末页上页上页首页首页目录目录L3(abe)=not(
45、A1)and(B=0)and(A=2)or(X1)=not(A1)ornot(B=0)and(A=2)or(X1)=not(A1)and(A=2)ornot(A1)and(X1)ornot(B=0)and(A=2)ornot(B=0)and(X1)104下页下页末页末页上页上页首页首页目录目录105L4(acd)=(A1)and(B=0)andnot(A=2)or(X/A1)=(A1)and(B=0)andnot(A=2)andnot(X/A1)105下页下页末页末页上页上页首页首页目录目录语句覆盖语句覆盖语句覆盖就是设计若干个测试用例,运行语句覆盖就是设计若干个测试用例,运行被测程序,使得被
46、测程序,使得每一可执行语句至少执行每一可执行语句至少执行一次一次。在图例中,正好所有的可执行语句都在在图例中,正好所有的可执行语句都在路路径径L1L1上,所以选择上,所以选择路径路径 L1L1设计测试用例,设计测试用例,就可以覆盖所有的可执行语句。就可以覆盖所有的可执行语句。106下页下页末页末页上页上页首页首页目录目录测试用例的设计格式如下测试用例的设计格式如下【输入的输入的( (A A, , B B, , X X) ),输出的,输出的( (A A, , B B, , X X) )】为图例设计满足为图例设计满足语句覆盖语句覆盖的测试用例是的测试用例是: :【(2, 0, 4)(2, 0, 4
47、),(2, 0, 3)(2, 0, 3)】 覆盖覆盖 aceace【L1L1】(A=2)and(B=0)or(A1)and(B=0)and(X/A1) 107下页下页末页末页上页上页首页首页目录目录 判定覆盖判定覆盖判定覆盖就是设计若干个测试用例,运行判定覆盖就是设计若干个测试用例,运行被测程序,使得被测程序,使得程序中每个判断的取真分程序中每个判断的取真分支和取假分支至少经历一次支和取假分支至少经历一次。判定覆盖又称为判定覆盖又称为分支覆盖分支覆盖。对于图例,如果选择对于图例,如果选择路径路径L1L1和和L2L2,就可得,就可得满足要求的测试用例满足要求的测试用例: :108下页下页末页末页
48、上页上页首页首页目录目录【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】【(1, 1, 1),(1, 1, 1)】覆盖 abd【L2】(A=2)and(B=0)or(A1)and(B=0)and(X/A1) not(A1)andnot(A=2)andnot(X1)ornot(B=0)andnot(A=2)andnot(X1)109下页下页末页末页上页上页首页首页目录目录如果选择路径如果选择路径L3L3和和L4L4,还可得另一组可用,还可得另一组可用的测试用例的测试用例: :【(2, 1, 1)(2, 1, 1),(2, 1, 2)(2, 1, 2)】覆盖覆盖 abeabe【L3L
49、3】【(3, 0, 3)(3, 0, 3),(3, 0, 1)(3, 0, 1)】覆盖覆盖 acdacd【L4L4】not(A1)and(X1)ornot(B=0)and(A=2)ornot(B=0)and(X1)(A1)and(B=0)andnot(A=2)andnot(X/A1)110下页下页末页末页上页上页首页首页目录目录条件覆盖条件覆盖条件覆盖就是设计若干个测试用例,运行条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中被测程序,使得程序中每个判断的每个判断的每个条每个条件的可能取值件的可能取值至少执行一次至少执行一次。在图例中,在图例中,我们事先可对所有条件的取值加以标记。我们
50、事先可对所有条件的取值加以标记。例如:例如:对于第一个判断:对于第一个判断: 条件条件 A A1 1 取真为取真为 ,取假为,取假为 条件条件 B B0 0 取真为取真为 ,取假为,取假为111下页下页末页末页上页上页首页首页目录目录对于第二个判断:对于第二个判断: 条件条件A A2 2 取真取真 取假为取假为 条件条件X X1 1 取真取假为取真取假为 测试用例测试用例 覆盖分支覆盖分支 条件条件取值取值【(2, 0, 4)(2, 0, 4),(2, 0, 3)(2, 0, 3)】 L1(c, e)L1(c, e) 【(1, 0, 1)(1, 0, 1),(1, 0, 1)(1, 0, 1)
51、】 L2(b, d) L2(b, d) 【(2, 1, 1)(2, 1, 1),(2, 1, 2)(2, 1, 2)】 L3(b, e)L3(b, e)或或【(1, 0, 3),(1, 0, 4)】 L3(b, e)L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e)L3(b, e) 112下页下页末页末页上页上页首页首页目录目录 判定条件覆盖就是设计足够的测试用例,判定条件覆盖就是设计足够的测试用例,使得使得判断中每个条件的所有可能取值至少判断中每个条件的所有可能取值至少执行一次执行一次,每个判断中的每个分支至少执每个判断中的每个分支至少执行一次行一次。判定条件覆盖
52、判定条件覆盖113下页下页末页末页上页上页首页首页目录目录 测测 试试 用用 例例 覆盖分支覆盖分支 条件取值条件取值【(2, 0, 4)(2, 0, 4),(2, 0, 3)(2, 0, 3)】L1(c, e)L1(c, e)【(1, 1, 1)(1, 1, 1), (1, 1, 1) (1, 1, 1) 】L2(b, d) L2(b, d) (A=2)and(B=0)or(A1)and(B=0)and(X/A1) not(A1)andnot(A=2)andnot(X1)ornot(B=0)andnot(A=2)andnot(X1)114下页下页末页末页上页上页首页首页目录目录 andorA
53、1T TB=0T TX=X/AT TF FF FA=2T TF FX1F FX=X+1115下页下页末页末页上页上页首页首页目录目录条件组合覆盖条件组合覆盖条件组合覆盖就是设计足够的测试用例,运行被条件组合覆盖就是设计足够的测试用例,运行被测程序,使得测程序,使得每个判断的所有可能的条件取值组每个判断的所有可能的条件取值组合至少执行一次合至少执行一次。 记记 A A1, B1, B0 0 作作 A A1, B0 1, B0 作作 A1, BA1, B0 0 作作 A1, B0 A1, B0 作作116下页下页末页末页上页上页首页首页目录目录 A A2, X2, X1 1 作作 A A2, X1
54、 2, X1 作作 A2, XA2, X1 1 作作 A2, X1 A2, X1 作作 测测 试试 用用 例例 覆盖条件覆盖条件 覆盖组合覆盖组合【(2, 0, 4), (2, 0, 3)(2, 0, 4), (2, 0, 3)】(L1)(L1) , , 【(2, 1, 1), (2, 1, 2)(2, 1, 1), (2, 1, 2)】(L3)(L3) , , 【(1, 0, 3), (1, 0, 4)(1, 0, 3), (1, 0, 4)】(L3)(L3) , , 【(1, 1, 1), (1, 1, 1)(1, 1, 1), (1, 1, 1)】(L2)(L2) , , 117下页下页
55、末页末页上页上页首页首页目录目录路径覆盖路径覆盖路径测试就是设计足够的测试用例,路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径覆盖程序中所有可能的路径。 测测 试试 用用 例例 通过路径通过路径 覆盖条件覆盖条件【(2, 0, 4), (2, 0, 3)(2, 0, 4), (2, 0, 3)】 ace (L1)ace (L1) 【(1, 1, 1), (1, 1, 1)(1, 1, 1), (1, 1, 1)】 abdabd (L2)(L2) 【(1, 1, 2), (1, 1, 3)(1, 1, 2), (1, 1, 3)】 abeabe (L3)(L3) 【(3, 0, 3),
56、 (3, 0, 1)(3, 0, 3), (3, 0, 1)】 acdacd (L4)(L4) 118下页下页末页末页上页上页首页首页目录目录黑盒测试的测试用例设计黑盒测试的测试用例设计 1 1 等价类划分等价类划分 2 2 边界值分析边界值分析 3 3 错误推测法错误推测法 4 4 因果图因果图119下页下页末页末页上页上页首页首页目录目录等价类划分是一种典型的等价类划分是一种典型的黑盒测试黑盒测试方法,使用这一方法方法,使用这一方法时,时,完全不考虑程序的内部结构完全不考虑程序的内部结构,只依据程序的规格说只依据程序的规格说明来设计测试用例明来设计测试用例。等价类划分方法等价类划分方法把所
57、有可能的输入数据把所有可能的输入数据,即程序的输入,即程序的输入域域划分成若干部分划分成若干部分,然后,然后从每一部分中选取少数有代表从每一部分中选取少数有代表性的数据做为测试用例性的数据做为测试用例。使用这一方法设计测试用例要经历使用这一方法设计测试用例要经历划分等价类划分等价类(列出等(列出等价类表)和价类表)和选取测试用例选取测试用例两步。两步。划分等价类划分等价类等价类是指某个输入域的子集合。在该子集合中,等价类是指某个输入域的子集合。在该子集合中,各个各个输入数据对于揭露程序中的错误都是等效的。输入数据对于揭露程序中的错误都是等效的。测试某等测试某等价类的价类的代表值代表值就等价于对
58、这一类其它值的测试。就等价于对这一类其它值的测试。120下页下页末页末页上页上页首页首页目录目录等价类的划分有两种不同的情况:等价类的划分有两种不同的情况: 有效等价类有效等价类:是指对于程序的规格说明来:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集说,是合理的,有意义的输入数据构成的集合。合。 无效等价类无效等价类:是指对于程序的规格说明:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成来说,是不合理的,无意义的输入数据构成的集合。的集合。在设计测试用例时,要同时考虑有效等价类在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。和无效等价类的设计。121下
59、页下页末页末页上页上页首页首页目录目录划分等价类等价类的原则(划分等价类等价类的原则(5 5个)。个)。(1) (1) 如果输入条件规定了取值范围,或如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类值的个数,则可以确立一个有效等价类和两个无效等价类。和两个无效等价类。 122下页下页末页末页上页上页首页首页目录目录例如,例如,在程序的规格说明中,对输入条在程序的规格说明中,对输入条件有一句话:件有一句话: “ 项数可以从项数可以从1 1到到999 999 ” 则有效等价类是则有效等价类是“11项数项数999999”两个无效等价类是两个无效等价类是“项数项数1 1”或或“项项数数
60、999999”。在数轴上表示成。在数轴上表示成: :123下页下页末页末页上页上页首页首页目录目录(2) (2) 如果输入条件规定了输入值的集合,如果输入条件规定了输入值的集合,或者是规定了或者是规定了“必须如何必须如何”的条件,这时的条件,这时可确立一个有效等价类和一个无效等价类。可确立一个有效等价类和一个无效等价类。例如,例如,在在PASCALPASCAL语言中对语言中对变量标识符变量标识符规定规定为为“以字母打头的以字母打头的串串”。那么所有以。那么所有以字母字母打头的构成有效等价类,而不在此集合内打头的构成有效等价类,而不在此集合内(不以(不以字母字母打头)的归于无效等价类。打头)的归
61、于无效等价类。124下页下页末页末页上页上页首页首页目录目录(3) (3) 如果输入条件是一个布尔量,则可以确如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。定一个有效等价类和一个无效等价类。(4)如果规定了输入数据的一组值,而且程序要对如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。每个输入值分别进行处理。这时可为这时可为每一个输入值每一个输入值确立一个有效等价类,此外针对这组值确立一个无确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。效等价类,它是所有不允许的输入值的集合。125下页下页末页末页上页上页首页首页目录目录
62、例如,在教师上岗方案中规定对教授、副教授、讲例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以师和助教分别计算分数,做相应的处理。因此可以确定确定4 4个有效等价类为教授、副教授、讲师和助教个有效等价类为教授、副教授、讲师和助教; ;一个无效等价类,一个无效等价类,它是所有不符合以上身分的人员它是所有不符合以上身分的人员的输入值的集合。的输入值的集合。(5)如果规定了输入数据必须遵守的规则,则如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(可以确立一个有效等价类(符合规则符合规则)和若)和若干个无效等价类(干个无效等价类(从不同角度违反规则从不
63、同角度违反规则)。)。126下页下页末页末页上页上页首页首页目录目录例如,例如,C C语言规定语言规定 “一个语句必须以分号一个语句必须以分号; ;结结束束”。这时,可以确定一个有效等价类。这时,可以确定一个有效等价类“以以; ;结束结束”; ; 若干个无效等价类若干个无效等价类 “以以: :结束结束”、“以以, ,结束结束”、“以以 结束结束”、“以以 END IFEND IF结束结束”等。等。确立测试用例确立测试用例 在确立了等价类之后,建立等价类表,列出所有划分在确立了等价类之后,建立等价类表,列出所有划分出的等价类。出的等价类。127下页下页末页末页上页上页首页首页目录目录再从划分出的
64、等价类中按以下原则选择测试再从划分出的等价类中按以下原则选择测试用例:用例:a.a. 为每一个等价类规定一个唯一编号;为每一个等价类规定一个唯一编号;b.b. 设计一个新的测试用例,使其设计一个新的测试用例,使其尽可能多地尽可能多地覆盖尚未被覆盖的有效等价类覆盖尚未被覆盖的有效等价类,重复这一步,重复这一步,直到所有的有效等价类都被覆盖为止;直到所有的有效等价类都被覆盖为止;c.c. 设计一个新的测试用例,使其设计一个新的测试用例,使其仅覆盖一个仅覆盖一个尚未被覆盖的无效等价类,尚未被覆盖的无效等价类,重复这一步,直重复这一步,直到所有的无效等价类都被覆盖为止。到所有的无效等价类都被覆盖为止。
65、128下页下页末页末页上页上页首页首页目录目录用等价类划分法设计测试用例的用等价类划分法设计测试用例的实例实例 在一在一PASCALPASCAL语言版本中规定:语言版本中规定:“标识标识符是由字母开头符是由字母开头,后跟字母或数字的任意组后跟字母或数字的任意组合构成合构成。有效字符数为有效字符数为8 8个个,最大字符数为最大字符数为8080个个。”并且规定:并且规定:“标识符必须先说明标识符必须先说明,再使用再使用。”; ; “在同一说明语句中在同一说明语句中,标识标识符至少必须有一个符至少必须有一个。”129下页下页末页末页上页上页首页首页目录目录用等价类划分方法,建立输入等价类表用等价类划
66、分方法,建立输入等价类表: :接下来选取几个测试用例,使得它们覆盖了所有的接下来选取几个测试用例,使得它们覆盖了所有的等价类。等价类。130下页下页末页末页上页上页首页首页目录目录边界值分析也是一种边界值分析也是一种黑盒测试黑盒测试方法,是对等价方法,是对等价类划分方法的补充。类划分方法的补充。人们从长期的测试工作经验得知,人们从长期的测试工作经验得知,大量的错误大量的错误是发生在输入或输出范围的是发生在输入或输出范围的边界上,边界上,而不是而不是在输入范围的内部在输入范围的内部。因此针对各种边界情况。因此针对各种边界情况设计测试用例,设计测试用例,可以查出更多的错误可以查出更多的错误。131
67、下页下页末页末页上页上页首页首页目录目录比如,在做三角形计算时,要输入三角形的三个边比如,在做三角形计算时,要输入三角形的三个边长:长:A A、B B和和C C。 我们应注意到这三个数值应当满足我们应注意到这三个数值应当满足 A A0 0、B B0 0、C C0 0、A AB BC C、A AC CB B、B BC CA A,才能构成三角形。但如果把六个不等式中的任才能构成三角形。但如果把六个不等式中的任何一个大于号何一个大于号“”错写成大于等于号错写成大于等于号“”,那,那就不能构成三角形。就不能构成三角形。问题恰出现在容易被疏忽的边问题恰出现在容易被疏忽的边界附近。界附近。132下页下页末
68、页末页上页上页首页首页目录目录这里所说的这里所说的边界边界是指,相当于输入等价类和是指,相当于输入等价类和输出等价类而言,输出等价类而言,稍高于其边界值及稍低于稍高于其边界值及稍低于其边界值的一些特定情况。其边界值的一些特定情况。使用使用边界值边界值分析方法设计测试用例,首先应分析方法设计测试用例,首先应确定边界情况。确定边界情况。应当选取正好等于,刚刚大应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据于,或刚刚小于边界的值做为测试数据,而,而不是选取等价类中的典型值或任意值做为测不是选取等价类中的典型值或任意值做为测试数据。试数据。 133下页下页末页末页上页上页首页首页目录目录人
69、们也可以靠人们也可以靠经验和直觉经验和直觉推测程序中推测程序中可能存在的各种错误,从而有针对性可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是地编写检查这些错误的例子。这就是错误推测法。错误推测法。错误推测法的基本想法是:错误推测法的基本想法是:列举出程列举出程序中所有可能有的错误和容易发生错序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用误的特殊情况,根据它们选择测试用例例。134下页下页末页末页上页上页首页首页目录目录因果图的适用范围:因果图的适用范围: 如果在测试时必须考虑如果在测试时必须考虑输入条件的各种输入条件的各种组合组合,可使用一种适合于描述对于多
70、种条件,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。试用例,这就需要利用因果图。 因果图方法最终生成的就是判定表。它因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。适合于检查程序输入条件的各种组合情况。135下页下页末页末页上页上页首页首页目录目录用因果图生成测试用例的基本步骤(用因果图生成测试用例的基本步骤(5 5步步)(1)(1) 分析系统规格说明描述中,哪些是原因分析系统规格说明描述中,哪些是原因 ( (即即输入条件或输入条件的等价类输入条件或输入条件的等价类) ),哪些是
71、结果,哪些是结果 ( (即即输出条件输出条件) ),并给每个原因和结果赋予一个标识符。,并给每个原因和结果赋予一个标识符。(2)(2) 分析系统规格说明描述中的语义,找出原因分析系统规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系与结果之间,原因与原因之间对应的是什么关系? ? 根据这些关系,画出因果图。根据这些关系,画出因果图。 136下页下页末页末页上页上页首页首页目录目录(3)(3) 由于语法或环境限制,有些原因与原因由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出之间,原因与结果之间的组合情况不可能出现。现。为表明这些特殊情况,在因果图上
72、用一为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。些记号标明约束或限制条件。(4)(4) 把因果图转换成判定表。把因果图转换成判定表。(5)(5) 把判定表的把判定表的每一列每一列拿出来作为依据,设拿出来作为依据,设计测试用例。计测试用例。137下页下页末页末页上页上页首页首页目录目录在因果图中出现的基本符号在因果图中出现的基本符号 通常在因果图中用通常在因果图中用CiCi表示原因,用表示原因,用EiEi表示结果,各结点表示表示结果,各结点表示状态状态,可取值,可取值“0 0”或或“1 1”。“0 0”表示某状态不出现,表示某状态不出现,“1 1”表表示某状态出现。示某状态出现。
73、主要的原因和结果之间的关系有主要的原因和结果之间的关系有: :c1c1c1c1c2c2138下页下页末页末页上页上页首页首页目录目录表示约束条件的符号:表示约束条件的符号:为了表示为了表示原因与原因原因与原因之间,之间,结果与结果结果与结果之之间可能存在的约束条件,在因果图中可以间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。附加一些表示约束条件的符号。139下页下页末页末页上页上页首页首页目录目录 例如,有一个处理单价为例如,有一个处理单价为5 5角钱的饮料的自动角钱的饮料的自动售货机系统测试用例的设计。其规格说明如售货机系统测试用例的设计。其规格说明如下:下: 若若投入投入
74、5 5角钱或角钱或1 1元钱的硬币,元钱的硬币,押下押下橙汁橙汁或或啤酒啤酒的按钮,则相应的饮料就的按钮,则相应的饮料就送出来。若售货机送出来。若售货机没有零钱找没有零钱找,则一个显示,则一个显示零钱找完零钱找完的的红灯亮红灯亮,这时再投入,这时再投入1 1元硬币元硬币并押下按钮后,饮料不送出来而且并押下按钮后,饮料不送出来而且1 1元硬币也元硬币也退出来;若退出来;若有零钱找有零钱找,则显示,则显示零钱找完零钱找完的的红灯灭红灯灭,在送出饮料的同时退还,在送出饮料的同时退还5 5角硬币。角硬币。”140下页下页末页末页上页上页首页首页目录目录(1) (1) 分析这一段说明,列出原因和结果分析
75、这一段说明,列出原因和结果原因原因: : 1.1. 售货机有零钱找售货机有零钱找 2.2. 投入投入1 1元硬币元硬币 3.3. 投入投入5 5角硬币角硬币 4.4. 押下橙汁按钮押下橙汁按钮 5.5. 押下啤酒按钮押下啤酒按钮建立中间结点,表示处理建立中间结点,表示处理中间状态中间状态11.11. 投入投入1 1元硬币且押下饮料按钮元硬币且押下饮料按钮12.12. 押下押下橙汁橙汁或或啤酒啤酒的按钮的按钮13.13. 应当找应当找5 5角零钱并且售货机有零钱找角零钱并且售货机有零钱找14.14. 钱已付清钱已付清141下页下页末页末页上页上页首页首页目录目录 结果:结果: 21.21. 售货
76、机售货机零钱找完零钱找完灯亮灯亮 22.22. 退还退还1 1元硬币元硬币 23.23. 退还退还5 5角硬币角硬币 24.24. 送出橙汁饮料送出橙汁饮料 25.25. 送出啤酒饮料送出啤酒饮料(2) (2) 画出因果图。画出因果图。所有所有原因原因结点列在左结点列在左边,所有边,所有结果结果结点列在右边。结点列在右边。 (3) (3) 由于由于 2 2 与与 3 3 ,4 4 与与 5 5 不能同时发生,不能同时发生,分别加上约束条件分别加上约束条件E E。(4) (4) 因果图因果图 (5) (5) 转换成判定表转换成判定表142下页下页末页末页上页上页首页首页目录目录 143下页下页末
77、页末页上页上页首页首页目录目录8/12/2024144 144下页下页末页末页上页上页首页首页目录目录测试过程按测试过程按4 4个步骤进行,即个步骤进行,即单元测试单元测试、集成集成(组装)测试组装)测试、确认测试确认测试和和系统系统测试测试。单元测试单元测试,集中对用源代码实现的每,集中对用源代码实现的每一个程序单元进行测试,检查各个程一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。序模块是否正确地实现了规定的功能。145下页下页末页末页上页上页首页首页目录目录集成(组装)测试集成(组装)测试把已测试过的模块组装起把已测试过的模块组装起来,主要对与设计相关的系统体系结构的构
78、来,主要对与设计相关的系统体系结构的构造进行测试。造进行测试。确认测试确认测试则是要检查已实现的系统是否满足则是要检查已实现的系统是否满足了需求规格说明中确定了的各种需求,以及了需求规格说明中确定了的各种需求,以及系统配置是否完全、正确。系统配置是否完全、正确。系统测试系统测试把已经经过确认的系统纳入实际运把已经经过确认的系统纳入实际运行环境中,与其它系统成份组合在一起进行行环境中,与其它系统成份组合在一起进行测试。测试。146下页下页末页末页上页上页首页首页目录目录147下页下页末页末页上页上页首页首页目录目录单元测试又称模块测试,单元测试又称模块测试,是针对系统设计的是针对系统设计的最小单
79、位最小单位 程序模块程序模块,进行正确性检验进行正确性检验的的测试工作。其目的在于发现各模块内部可能测试工作。其目的在于发现各模块内部可能存在的各种差错。存在的各种差错。单元测试需要单元测试需要从程序的内部结构出发设计测从程序的内部结构出发设计测试用例试用例。多个模块可以平行地独立进行单元。多个模块可以平行地独立进行单元测试。测试。148下页下页末页末页上页上页首页首页目录目录在单元测试时,测试者需要依据详细设计在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的说明书和源程序清单,了解该模块的I/OI/O条件和模块的逻辑结构,主要采用条件和模块的逻辑结构,主要采用白盒测白盒测
80、试的试的测试用例,辅之以黑盒测试的测试用测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。入,都能鉴别和响应。149下页下页末页末页上页上页首页首页目录目录150下页下页末页末页上页上页首页首页目录目录(1) (1) 模块接口测试模块接口测试在单元测试的开始,应对在单元测试的开始,应对通过被测模块通过被测模块的数据流的数据流进行测试。测试项目包括:进行测试。测试项目包括: 调用本模块的输入参数是否正确;调用本模块的输入参数是否正确; 本模块调用子模块时输入给子模块本模块调用子模块时输入给子模块的参数是否正确;的参数是否正
81、确; 全局量的定义在各模块中是否一致;全局量的定义在各模块中是否一致; 151下页下页末页末页上页上页首页首页目录目录在做在做内外存交换内外存交换时要考虑:时要考虑: 文件属性是否正确;文件属性是否正确; OPENOPEN与与CLOSECLOSE语句是否正确;语句是否正确; 缓冲区容量与记录长度是否匹配;缓冲区容量与记录长度是否匹配; 在进行读写操作之前是否打开了文件;在进行读写操作之前是否打开了文件; 在结束文件处理时是否关闭了文件;在结束文件处理时是否关闭了文件; 正文书写输入错误正文书写输入错误; ; I IO O错误是否检查并做了处理。错误是否检查并做了处理。152下页下页末页末页上页
82、上页首页首页目录目录(2) (2) 局部数据结构测试局部数据结构测试不正确或不一致的数据类型说明不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量使用尚未赋值或尚未初始化的变量错误的初始值错误的初始值或错误的缺省值或错误的缺省值变量名拼写错变量名拼写错或书写错或书写错不一致的数据类型不一致的数据类型全局数据对模块的影响全局数据对模块的影响 153下页下页末页末页上页上页首页首页目录目录(3) (3) 路径测试路径测试选择适当的测试用例,对模块中选择适当的测试用例,对模块中重要的执行重要的执行路径路径进行测试。进行测试。应当设计测试用例查找由于应当设计测试用例查找由于错误的计算错误的计算
83、、不不正确的比较正确的比较或或不正常的控制流不正常的控制流而导致的错误。而导致的错误。对基本对基本执行路径和循环执行路径和循环进行测试可以发现大进行测试可以发现大量的路径错误。量的路径错误。154下页下页末页末页上页上页首页首页目录目录(4) (4) 错误处理测试错误处理测试出错的描述出错的描述是否难以理解;是否难以理解;出错的描述出错的描述是否能够对错误定位;是否能够对错误定位;显示的错误与实际的错误显示的错误与实际的错误是否相符;是否相符;对错误条件的对错误条件的处理正确与否;处理正确与否;在对错误进行处理之前,在对错误进行处理之前,错误条件是否错误条件是否已经引起系统的干预等。已经引起系
84、统的干预等。155下页下页末页末页上页上页首页首页目录目录(5) (5) 边界测试边界测试注意数据流、控制流中注意数据流、控制流中刚好等于刚好等于、大于或小于大于或小于确定确定的比较值时出错的可能性。对这些地方要仔细地选的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。择测试用例,认真加以测试。如果对模块运行时间有要求的话,还要专门进行关如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。模块运行时间的因素。156下页下页末页末页上页上页首页首页目录目录模块并不是一个独立的程
85、序,在考虑测试模模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些块时,同时要考虑它和外界的联系,用一些辅助模块辅助模块去模拟与被测模块相联系的其它模去模拟与被测模块相联系的其它模块。块。 驱动模块驱动模块 (driver)(driver) 桩模块桩模块 (stub)(stub) 存根模块存根模块157下页下页末页末页上页上页首页首页目录目录158下页下页末页末页上页上页首页首页目录目录如果一个模块要完成多种功能,可以将这个如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工
86、作,对每个小程序先进行单元测试要做的工作,对关键模块还要做关键模块还要做性能测试性能测试。对支持某些标准规程的程序,更要着手进行对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为互联测试。有人把这种情况特别称为模块测模块测试试,以区别单元测试。,以区别单元测试。159下页下页末页末页上页上页首页首页目录目录组装测试组装测试 ( (集成测试、联合测试)集成测试、联合测试)通常,在单元测试的基础上,需要将所有模通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考块按照设计要求组装成为系统。这时需要考虑的问题是虑的问题是(5(5个方面个方面) ): 在把各
87、个模块连接起来的时侯,在把各个模块连接起来的时侯,穿越模穿越模块接口的数据块接口的数据是否会丢失;是否会丢失; 一个模块的功能是否会对另一个模块的一个模块的功能是否会对另一个模块的功能产生不利的影响;功能产生不利的影响;160下页下页末页末页上页上页首页首页目录目录 各个子功能组合起来,能否达到预期要求的父各个子功能组合起来,能否达到预期要求的父功能;功能; 全局数据结构是否有问题;全局数据结构是否有问题; 单个模块的误差累积起来,是否会放大,从而单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。达到不能接受的程度。 在单元测试的同时可进行组装测试在单元测试的同时可进行组装测试,发现
88、并,发现并排除在模块连接中可能出现的问题,最终构成要排除在模块连接中可能出现的问题,最终构成要求的系统。求的系统。 161下页下页末页末页上页上页首页首页目录目录子系统的组装测试特称为子系统的组装测试特称为部件测试部件测试,它所做,它所做的工作是要找出组装后的的工作是要找出组装后的子系统与系统需求子系统与系统需求规格说明之间规格说明之间的不一致。的不一致。通常,把模块组装成为系统的方式有两种通常,把模块组装成为系统的方式有两种 一次性组装方式一次性组装方式 增殖式组装方式增殖式组装方式162下页下页末页末页上页上页首页首页目录目录它是一种非增殖式组装方式。也叫做它是一种非增殖式组装方式。也叫做
89、整整体拼装。体拼装。使用这种方式,首先对每个模块分别进使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的系统。一起进行测试,最终得到要求的系统。163下页下页末页末页上页上页首页首页目录目录这种组装方式又称这种组装方式又称渐增式组装。渐增式组装。首先对一个个模块进行模块测试,然后将这首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统。些模块逐步组装成较大的系统。在组装的过程中在组装的过程中边连接边测试边连接边测试,以发现连接,以发现连接过程中产生的问题。过程中产生的问题。通过增殖逐步组装成为要求的系统
90、。通过增殖逐步组装成为要求的系统。164下页下页末页末页上页上页首页首页目录目录确认测试又称确认测试又称有效性测试有效性测试。任务。任务是验证系统的功能和性能及其它是验证系统的功能和性能及其它特性是否与用户的要求一致。特性是否与用户的要求一致。对系统的功能和性能要求在系统对系统的功能和性能要求在系统需求规格说明书中已经明确规定。需求规格说明书中已经明确规定。它包含的它包含的信息信息就是系统确认测试的就是系统确认测试的基础。基础。165下页下页末页末页上页上页首页首页目录目录166下页下页末页末页上页上页首页首页目录目录有效性测试是在模拟的环境有效性测试是在模拟的环境 ( (可能就可能就是开发的
91、环境是开发的环境) ) 下,运用黑盒测试的下,运用黑盒测试的方法,验证被测系统是否满足需求规方法,验证被测系统是否满足需求规格说明书列出的需求。格说明书列出的需求。首先制定测试计划,规定要做测试的首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描种类。还需要制定一组测试步骤,描述具体的测试用例。述具体的测试用例。167下页下页末页末页上页上页首页首页目录目录通过实施预定的测试计划和测试步骤,通过实施预定的测试计划和测试步骤,确定:确定: 系统的特性是否与需求相符;系统的特性是否与需求相符; 所有的文档都是正确且便于使用;所有的文档都是正确且便于使用; 同时,对其它系统需求,同时,
92、对其它系统需求,例如可移植性、例如可移植性、兼容性、出错自动恢复、可维护性等,也兼容性、出错自动恢复、可维护性等,也都要进行测试。都要进行测试。168下页下页末页末页上页上页首页首页目录目录在全部系统测试的测试用例运行完后,所有在全部系统测试的测试用例运行完后,所有的测试结果可以分为两类:的测试结果可以分为两类: 测试结果与预期的结果相符测试结果与预期的结果相符。这说明系统的这。这说明系统的这部分功能或性能特征与需求规格说明书相符合,部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。从而这部分程序被接受。 测试结果与预期的结果不符测试结果与预期的结果不符。这说明系统的这。这说明系
93、统的这部分功能或性能特征与需求规格说明书不一致,部分功能或性能特征与需求规格说明书不一致,因此要为它提交一份问题报告。因此要为它提交一份问题报告。169下页下页末页末页上页上页首页首页目录目录n 系统配置复查的目的是保证系统配置复查的目的是保证u 系统配置的所有成分都齐全;系统配置的所有成分都齐全;u 各方面的质量都符合要求;各方面的质量都符合要求; u 具有维护阶段所必需的细节;具有维护阶段所必需的细节;u 而且已经编排好分类的目录。而且已经编排好分类的目录。n应当严格遵守应当严格遵守用户手册用户手册和和操作手册操作手册中规定中规定的使用步骤,以便检查这些文档资料的完整性和的使用步骤,以便检
94、查这些文档资料的完整性和正确性。正确性。170下页下页末页末页上页上页首页首页目录目录在通过了系统的在通过了系统的有效性测试有效性测试及及系统配置系统配置审查审查之后,就应开始系统的之后,就应开始系统的验收测试。验收测试。验收测试验收测试是以用户为主的测试。系统开是以用户为主的测试。系统开发人员和发人员和QAQA(质量保证)人员也应参加。(质量保证)人员也应参加。由用户参加设计测试用例,使用生产中由用户参加设计测试用例,使用生产中的实际数据进行测试。的实际数据进行测试。171下页下页末页末页上页上页首页首页目录目录在测试过程中,除了考虑系统的功能和性能在测试过程中,除了考虑系统的功能和性能外,
95、还应对系统的可移植性、兼容性、可维外,还应对系统的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。护性、错误的恢复功能等进行确认。确认测试应交付的文档有:确认测试应交付的文档有: 确认测试分析报告确认测试分析报告; ; 最终的用户手册和操作手册最终的用户手册和操作手册; ; 项目开发总结报告。项目开发总结报告。172下页下页末页末页上页上页首页首页目录目录系统测试,是将通过确认测试的系统,系统测试,是将通过确认测试的系统,作为整个基作为整个基于计算机系统的一个元素于计算机系统的一个元素,与计算机硬件、外设、,与计算机硬件、外设、某些支持系统、数据和人员等其它系统元素结合在某些支持系统、数
96、据和人员等其它系统元素结合在一起,一起,在实际运行环境下在实际运行环境下,对计算机系统进行一系对计算机系统进行一系列的组装测试和确认测试。列的组装测试和确认测试。系统测试的目的在于系统测试的目的在于通过与系统的需求定义作比较通过与系统的需求定义作比较, , 发现系统与系统的定义不符合或与之矛盾的地方。发现系统与系统的定义不符合或与之矛盾的地方。173下页下页末页末页上页上页首页首页目录目录测试和测试和测试测试在系统交付使用之后,用户将如何实在系统交付使用之后,用户将如何实际使用程序,对于开发者来说是无法际使用程序,对于开发者来说是无法预测的。预测的。测试测试是由一个是由一个用户在开发环境下进行
97、用户在开发环境下进行的测试,的测试,也可以是也可以是公司内部的用户在公司内部的用户在模拟实际操作环境下进行的测试。模拟实际操作环境下进行的测试。174下页下页末页末页上页上页首页首页目录目录测试测试的目的是评价系统产品的的目的是评价系统产品的功能、可使功能、可使用性、可靠性、性能和支持性等用性、可靠性、性能和支持性等, ,尤其注重尤其注重产品的界面和特色。产品的界面和特色。测试测试可以从系统产品编码结束之时开始,可以从系统产品编码结束之时开始,或在或在单元测试单元测试完成之后开始,也可以在确认完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度测试过程中产品达到一定的稳定和可靠程度
98、之后再开始。之后再开始。175下页下页末页末页上页上页首页首页目录目录测试测试是由系统的是由系统的多个用户在实际使用环境下多个用户在实际使用环境下进行的测试。进行的测试。这些用户返回有关错误信息给这些用户返回有关错误信息给开发者。开发者。测试时,测试时,开发者通常不在测试现场开发者通常不在测试现场。因而,。因而,测试测试是在是在开发者无法控制的环境下开发者无法控制的环境下进行的系统现场进行的系统现场应用。应用。在在测试中,由用户记下遇到的所有问题,包测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报括真实的以及主观认定的,定期向开发者报告。告。176下页下页末页末页上页
99、上页首页首页目录目录测试测试主要衡量产品着重于产品的主要衡量产品着重于产品的支持性,包括支持性,包括文档、客户培训和支持产文档、客户培训和支持产品生产能力品生产能力。只有当只有当测试测试达到一定的可靠程度达到一定的可靠程度时,才能开始时,才能开始测试测试。它处在整个。它处在整个测试的最后阶段。同时,测试的最后阶段。同时,产品的所有产品的所有手册文本也应该在此阶段完全定稿。手册文本也应该在此阶段完全定稿。177下页下页末页末页上页上页首页首页目录目录系统测试是由一系列不同的测试组成。系统测试是由一系列不同的测试组成。主要目的是对以计算机为基础的系统进主要目的是对以计算机为基础的系统进行充分的测试
100、。行充分的测试。 1 1 功能测试功能测试功能测试功能测试是在规定的一段时间内运行系是在规定的一段时间内运行系统系统的所有功能,以验证这个系统系统系统的所有功能,以验证这个系统系统有无严重错误。统有无严重错误。178下页下页末页末页上页上页首页首页目录目录 2 2 可靠性测试可靠性测试如果系统需求说明书中有对可靠性的要求,如果系统需求说明书中有对可靠性的要求,则需进行可靠性测试。则需进行可靠性测试。 平均失效间隔时间平均失效间隔时间 是否超过规定时限是否超过规定时限? ? 因故障而停机的时间因故障而停机的时间 在一年中应不超在一年中应不超过多少时间。过多少时间。179下页下页末页末页上页上页首
101、页首页目录目录 3 3 强度测试强度测试强度测试是要检查强度测试是要检查在系统运行环境不正常乃在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种至发生故障的情况下,系统可以运行到何种程度的测试。程度的测试。例如:例如: 把输入数据速率提高一个数量级,确定把输入数据速率提高一个数量级,确定输入功能将如何响应。输入功能将如何响应。 设计需要占用最大存储量或其它资源的设计需要占用最大存储量或其它资源的测试用例进行测试。测试用例进行测试。 180下页下页末页末页上页上页首页首页目录目录 设计出在虚拟存储管理机制中引起设计出在虚拟存储管理机制中引起“颠簸颠簸”的测试用例进行测试。的测试用例进行
102、测试。 设计出会对磁盘常驻内存的数据过度访设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试问的测试用例进行测试。强度测试的一个变种就是强度测试的一个变种就是敏感性测试敏感性测试。在程。在程序有效数据界限内序有效数据界限内一个小范围内一个小范围内的一组数据可能引起的一组数据可能引起极端的或不平稳的错误处理出现,或者导致极度的性能下极端的或不平稳的错误处理出现,或者导致极度的性能下降的情况发生。此测试用以降的情况发生。此测试用以发现可能引起这种不稳定性或发现可能引起这种不稳定性或不正常处理不正常处理的某些数据组合。的某些数据组合。181下页下页末页末页上页上页首页首页目录目录4 4性能测试性
103、能测试性能测试是要检查系统是否满足在需求说明性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌书中规定的性能。特别是对于实时系统或嵌入式系统。入式系统。性能测试常常性能测试常常需要与强度测试结合起来需要与强度测试结合起来进行,进行,并常常要求并常常要求同时进行硬件和系统检测。同时进行硬件和系统检测。通常,对系统性能的检测表现在以下几个方面:通常,对系统性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区、处理精度响应时间、吞吐量、辅助存储区、处理精度等等。等等。182下页下页末页末页上页上页首页首页目录目录5 5 恢复测试恢复测试恢复测试恢复测试是要证实在是要证
104、实在克服硬件故障克服硬件故障( (包括掉电、包括掉电、硬件或网络出错等硬件或网络出错等) )后,后,系统能否正常地继续进系统能否正常地继续进行工作行工作,并不对系统造成任何损害。,并不对系统造成任何损害。为此,可采用各种人工干预的手段,模拟硬为此,可采用各种人工干预的手段,模拟硬件故障,故意造成系统出错。并由此检查:件故障,故意造成系统出错。并由此检查: 错误探测功能:错误探测功能:系统能否发现硬件失效与系统能否发现硬件失效与故障;故障;183下页下页末页末页上页上页首页首页目录目录 能否能否切换或启动备用的硬件;切换或启动备用的硬件; 在故障发生时能否在故障发生时能否保护正在运行的作业和保护
105、正在运行的作业和系统状态;系统状态; 在系统恢复后能否在系统恢复后能否从最后记录下来的无错从最后记录下来的无错误状态开始继续执行作业,误状态开始继续执行作业,等等。等等。 掉电测试:掉电测试:其目的是测试系统系统在发生电源中其目的是测试系统系统在发生电源中断时能否断时能否保护当时的状态且不毁坏数据,保护当时的状态且不毁坏数据,然后在然后在电源恢复时从保留的断点处重新进行操作。电源恢复时从保留的断点处重新进行操作。184下页下页末页末页上页上页首页首页目录目录6 6 启动停止测试启动停止测试 这类测试的目的是验证这类测试的目的是验证在机器启动及在机器启动及关机阶段关机阶段,系统正确处理的能力。系
106、统正确处理的能力。这类测试包括一下这类测试包括一下两种两种方法方法: : 反复启动软件系统反复启动软件系统 ( (例如,操作系统例如,操作系统的启动、应用程序的调用等的启动、应用程序的调用等) ) 在尽可能多的情况下关机在尽可能多的情况下关机。185下页下页末页末页上页上页首页首页目录目录7 7 配置测试配置测试这类测试是要检查这类测试是要检查计算机系统内各个设备计算机系统内各个设备或各种资源之间的相互联结和功能分配中或各种资源之间的相互联结和功能分配中的错误。的错误。它主要包括以下三种:它主要包括以下三种: 配置命令测试配置命令测试:验证全部配置命令的可:验证全部配置命令的可操作性(操作性(
107、有效性有效性);特别对最大配置和最小);特别对最大配置和最小配置要进行测试。配置要进行测试。软件配置和硬件配置都要测软件配置和硬件配置都要测试。试。186下页下页末页末页上页上页首页首页目录目录 循环配置测试循环配置测试:证明对每个设备物:证明对每个设备物理与逻辑的,逻辑与功能的每次循环理与逻辑的,逻辑与功能的每次循环置换配置都能正常工作。置换配置都能正常工作。 修复测试修复测试:检查每种配置状态及哪:检查每种配置状态及哪个设备是坏的。并用自动的或手工的个设备是坏的。并用自动的或手工的方式进行配置状态间的转换。方式进行配置状态间的转换。187下页下页末页末页上页上页首页首页目录目录8 8安全性
108、测试安全性测试安全性测试是要检验安全性测试是要检验在系统中已经存在的系在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无统安全性、保密性措施是否发挥作用,有无漏洞。漏洞。力图破坏系统力图破坏系统的保护机构以进入系统的主要的保护机构以进入系统的主要方法有以下七种:方法有以下七种: 正面攻击或从侧面、背面攻击系统中易正面攻击或从侧面、背面攻击系统中易受损坏的那些部分;受损坏的那些部分; 以系统输入为突破口,利用输入的容错以系统输入为突破口,利用输入的容错性进行正面攻击;性进行正面攻击;188下页下页末页末页上页上页首页首页目录目录 申请和占用过多的资源压垮系统,以破申请和占用过多的资源压垮
109、系统,以破坏安全措施,从而进入系统;坏安全措施,从而进入系统; 故意使系统出错,利用系统恢复的过程,故意使系统出错,利用系统恢复的过程,窃取用户口令及其它有用的信息;窃取用户口令及其它有用的信息; 通过浏览残留在计算机各种资源中的垃通过浏览残留在计算机各种资源中的垃圾(无用信息),以获取圾(无用信息),以获取如如口令、安全码、口令、安全码、译码关键字等信息;译码关键字等信息; 浏览全局数据,期望从中找到进入系统浏览全局数据,期望从中找到进入系统的关键字;的关键字; 浏览那些逻辑上不存在,但物理上还存浏览那些逻辑上不存在,但物理上还存在的各种记录和资料等。在的各种记录和资料等。 189下页下页末
110、页末页上页上页首页首页目录目录9 9 可使用性测试可使用性测试可使用性测试主要从使用的可使用性测试主要从使用的合理性合理性和和方便方便性性等角度对系统系统进行检查,发现人为等角度对系统系统进行检查,发现人为因素或使用上的问题。因素或使用上的问题。要保证在足够详细的程度下,要保证在足够详细的程度下,用户界面便于使用;用户界面便于使用;对输入量可容错、响应时间和响应方式合理可行、对输入量可容错、响应时间和响应方式合理可行、输出信息有意义、正确并前后一致;出错信息能输出信息有意义、正确并前后一致;出错信息能够引导用户去解决问题;系统文档全面、正规、够引导用户去解决问题;系统文档全面、正规、确切。确切
111、。190下页下页末页末页上页上页首页首页目录目录10 10 可支持性测试可支持性测试这类测试是要这类测试是要验证系统的支持策略对于公司验证系统的支持策略对于公司与用户方面是否切实可行。与用户方面是否切实可行。它所采用的方法是它所采用的方法是 试运行支持过程试运行支持过程( (如对有错部分打补丁的如对有错部分打补丁的过程等过程等) ); 对其结果进行对其结果进行质量分析质量分析; 评审诊断工具评审诊断工具; 维护过程、内部维护文档维护过程、内部维护文档; 修复一个错误所需平均最少时间修复一个错误所需平均最少时间。191下页下页末页末页上页上页首页首页目录目录1111安装测试安装测试安装测试的目的
112、安装测试的目的不是找系统错误,不是找系统错误,而是而是找安找安装错误。装错误。在安装系统系统时,会有多种选择。在安装系统系统时,会有多种选择。 要分配和装入文件与程序库要分配和装入文件与程序库 布置适用的硬件配置布置适用的硬件配置 进行程序的联结。进行程序的联结。安装测试就是要找出在这些安装过程中出现安装测试就是要找出在这些安装过程中出现的错误。的错误。192下页下页末页末页上页上页首页首页目录目录安装测试是在系统安装之后进行测试。它安装测试是在系统安装之后进行测试。它要检验:要检验: 用户选择的一套任选方案是否相容;用户选择的一套任选方案是否相容; 系统的每一部分是否都齐全;系统的每一部分是
113、否都齐全; 所有文件是否都已产生并确有所需要的所有文件是否都已产生并确有所需要的内容;内容; 硬件的配置是否合理等等。硬件的配置是否合理等等。193下页下页末页末页上页上页首页首页目录目录12 12 过程测试过程测试在一些大型的系统中,部分工作由系统自在一些大型的系统中,部分工作由系统自动完成,其它工作则需由各种人员,包括动完成,其它工作则需由各种人员,包括操操作员,数据库管理员,终端用户作员,数据库管理员,终端用户等,按一定规程等,按一定规程同计算机配合,靠人工来完成。同计算机配合,靠人工来完成。指定由人工完成的过程指定由人工完成的过程也需经过仔细的检也需经过仔细的检查查,这就是所谓的过程测
114、试。,这就是所谓的过程测试。194下页下页末页末页上页上页首页首页目录目录1313互连测试互连测试互连测试是要验证互连测试是要验证两个或多个不同的系统两个或多个不同的系统之间的互连性。之间的互连性。1414兼容性测试兼容性测试这类测试主要想验证这类测试主要想验证系统产品在不同版本系统产品在不同版本之间的兼容性。之间的兼容性。有两类基本的兼容性测试:有两类基本的兼容性测试: 向下兼容向下兼容 交错兼容交错兼容195下页下页末页末页上页上页首页首页目录目录1515容量测试容量测试容量测试是要检验容量测试是要检验系统的能力最高能达到系统的能力最高能达到什么程度。什么程度。例如,例如, 对于编译程序,
115、让它处理特别长的源对于编译程序,让它处理特别长的源程序;程序; 对于操作系统,让它的作业队列对于操作系统,让它的作业队列“满员满员”; 对于信息检索系统,让它使用频率达到最大。对于信息检索系统,让它使用频率达到最大。 在使系统的在使系统的全部资源达到全部资源达到“满负荷满负荷”的情形下,的情形下,测试系统的承受能力测试系统的承受能力。196下页下页末页末页上页上页首页首页目录目录1616文档测试文档测试这种测试是检查这种测试是检查用户文档用户文档( (如用户手册如用户手册) )的清晰性和精确性。的清晰性和精确性。用户文档中所使用的例子必须在测试中用户文档中所使用的例子必须在测试中一一试过,确保
116、叙述正确无误。一一试过,确保叙述正确无误。197下页下页末页末页上页上页首页首页目录目录系统调试是在进行了成功的测试之后才开系统调试是在进行了成功的测试之后才开始的工作。它与系统测试不同,调试的任始的工作。它与系统测试不同,调试的任务是务是进一步诊断和改正程序中潜在的错误。进一步诊断和改正程序中潜在的错误。调试活动由两部分组成:调试活动由两部分组成: 确定程序中可疑错误的确切性质和位置确定程序中可疑错误的确切性质和位置。 对程序对程序( (设计设计, ,编码编码) )进行修改,排除这进行修改,排除这个错误个错误。198下页下页末页末页上页上页首页首页目录目录调试工作是一个具有很强技巧性的工作。
117、调试工作是一个具有很强技巧性的工作。系统运行失效或出现问题,往往只是潜在错系统运行失效或出现问题,往往只是潜在错误的外部表现误的外部表现,而外部表现与内在原因之间而外部表现与内在原因之间常常没有明显的联系。如果要找出真正的原常常没有明显的联系。如果要找出真正的原因,排除潜在的错误,不是一件易事。因,排除潜在的错误,不是一件易事。可以说,可以说,调试是通过现象,找出原因的一个调试是通过现象,找出原因的一个思维分析的过程思维分析的过程。199下页下页末页末页上页上页首页首页目录目录(1) (1) 从错误的外部表现形式入手,确定程序从错误的外部表现形式入手,确定程序中出错位置;中出错位置;(2) (
118、2) 研究有关部分的程序,找出错误的内在研究有关部分的程序,找出错误的内在原因;原因;(3) (3) 修改设计和代码,以排除这个错误;修改设计和代码,以排除这个错误;(4) (4) 重复进行暴露了这个错误的原始测试或重复进行暴露了这个错误的原始测试或某些有关测试。某些有关测试。200下页下页末页末页上页上页首页首页目录目录从技术角度来看,查找错误的难度在于:从技术角度来看,查找错误的难度在于: 现象与原因所处的位置可能相距甚远。现象与原因所处的位置可能相距甚远。 当其它错误得到纠正时,这一错误所表现出的现象可能当其它错误得到纠正时,这一错误所表现出的现象可能会暂时消失,但并未实际排除。会暂时消
119、失,但并未实际排除。 现象实际上是由一些非错误原因现象实际上是由一些非错误原因( (如,舍入不精确如,舍入不精确) )引起引起的。现象可能是由于一些不容易发现的人为错误引起的。的。现象可能是由于一些不容易发现的人为错误引起的。 错误是由于时序问题引起的,与处理过程无关。错误是由于时序问题引起的,与处理过程无关。 现象是由于难于精确再现的输入状态(现象是由于难于精确再现的输入状态(如,实时应用中如,实时应用中输入顺序不确定输入顺序不确定)引起。)引起。 现象可能是周期出现的。在软、硬件结合的嵌入式系统现象可能是周期出现的。在软、硬件结合的嵌入式系统中常常遇到。中常常遇到。201下页下页末页末页上
120、页上页首页首页目录目录 调试的关键在于调试的关键在于推断程序内部的错误位推断程序内部的错误位置及原因。置及原因。可以采用以下可以采用以下四种四种方法:方法:(1 1)强行排错)强行排错 这种调试方法目前使用较多,效率较这种调试方法目前使用较多,效率较低。它不需要过多的思考,比较省脑筋。例低。它不需要过多的思考,比较省脑筋。例如:如: 通过内存全部打印来调试通过内存全部打印来调试,在这大量的,在这大量的数据中寻找出错的位置。数据中寻找出错的位置。202下页下页末页末页上页上页首页首页目录目录 在程序特定部位设置打印语句,在程序特定部位设置打印语句,把打印语句插在出错的把打印语句插在出错的源程序的
121、各个关键变量改变部位、重要分支部位、子程序源程序的各个关键变量改变部位、重要分支部位、子程序调用部位,跟踪程序的执行,监视重要变量的变化。调用部位,跟踪程序的执行,监视重要变量的变化。 自动调试工具。自动调试工具。利用某些程序语言的调试功能或专门的利用某些程序语言的调试功能或专门的交互式调试工具,分析程序的动态过程,而不必修改程序。交互式调试工具,分析程序的动态过程,而不必修改程序。 应用以上任一种方法之前,都应当对错误的征兆进行全面应用以上任一种方法之前,都应当对错误的征兆进行全面彻底的分析,得出对出错位置及错误性质的推测,再使用彻底的分析,得出对出错位置及错误性质的推测,再使用一种适当的调
122、试方法来检验推测的正确性。一种适当的调试方法来检验推测的正确性。203下页下页末页末页上页上页首页首页目录目录(2 2)回溯法调试回溯法调试 这是在小程序中常用的一种有效的调试方法。一旦发现了这是在小程序中常用的一种有效的调试方法。一旦发现了错误,人们先分析错误征兆,确定最先发现错误,人们先分析错误征兆,确定最先发现“症状症状”的位置。的位置。然后,人工沿程序的控制流程,向回追踪源程序代码,直到找然后,人工沿程序的控制流程,向回追踪源程序代码,直到找到错误根源或确定错误产生的范围。到错误根源或确定错误产生的范围。p 例如,例如,程序中发现错误处是某个打印语句。通过输出程序中发现错误处是某个打印
123、语句。通过输出值可推断程序在这一点上变量的值。再从这一点出发,值可推断程序在这一点上变量的值。再从这一点出发,回溯程序的执行过程,反复考虑:回溯程序的执行过程,反复考虑:“如果程序在这一点如果程序在这一点上的状态(上的状态(变量的值变量的值)是这样,那么程序在上一点的状)是这样,那么程序在上一点的状态一定是这样态一定是这样.”, 直到找到错误的位置。直到找到错误的位置。204下页下页末页末页上页上页首页首页目录目录(3 3)归纳法调试)归纳法调试归纳法是归纳法是一种从特殊推断一般一种从特殊推断一般的系统化思考的系统化思考方法。归纳法调试的基本思想是:从一些线方法。归纳法调试的基本思想是:从一些
124、线索索( (错误征兆错误征兆) )着手,通过分析它们之间的关着手,通过分析它们之间的关系来找出错误。系来找出错误。收集有关的数据收集有关的数据 列出所有已知的测试用列出所有已知的测试用例和程序执行结果。看哪些输入数据的运例和程序执行结果。看哪些输入数据的运行结果是正确的,哪些输入数据的运行结行结果是正确的,哪些输入数据的运行结果有错误。果有错误。205下页下页末页末页上页上页首页首页目录目录l组织数据组织数据 由于归纳法是从由于归纳法是从特殊到一般特殊到一般的推断过程,所以需要的推断过程,所以需要组织整理数据,以发现规律。常以组织整理数据,以发现规律。常以3W1H3W1H形式组织可用的数形式组
125、织可用的数据:据:“WhatWhat” 列出一般现象;列出一般现象;“WhereWhere”说明发现现象的说明发现现象的地点;地点;“WhenWhen” 列出现象发生时所有已知情况;列出现象发生时所有已知情况;“HowHow” 说明现象的范围和量级;说明现象的范围和量级;“YesYes”描述出现错误的描述出现错误的3W1H3W1H;“NoNo”作为比较,描述了没有错误的作为比较,描述了没有错误的3W1H3W1H。通过分析找出矛。通过分析找出矛盾来。盾来。 206下页下页末页末页上页上页首页首页目录目录l 提出假设提出假设 分析线索之间的关系,利用在线索结构中分析线索之间的关系,利用在线索结构中
126、观察到的矛盾现象,设计一个或多个关于出错原观察到的矛盾现象,设计一个或多个关于出错原因的假设。如果一个假设也提不出来,归纳过程因的假设。如果一个假设也提不出来,归纳过程就需要收集更多的数据。此时,应当再设计与执就需要收集更多的数据。此时,应当再设计与执行一些测试用例,以获得更多的数据。行一些测试用例,以获得更多的数据。l 证明假设证明假设 把假设与原始线索或数据进行比较,若它把假设与原始线索或数据进行比较,若它能完全解释一切现象,则假设得到证明;否则,能完全解释一切现象,则假设得到证明;否则,就认为假设不合理,或不完全,或是存在多个错就认为假设不合理,或不完全,或是存在多个错误,以致只能消除部
127、分错误。误,以致只能消除部分错误。207下页下页末页末页上页上页首页首页目录目录208下页下页末页末页上页上页首页首页目录目录(4 4)演绎法调试)演绎法调试 演绎法是一种演绎法是一种从一般原理或前提出发,从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考经过排除和精化的过程来推导出结论的思考方法。方法。演绎法排错是测试人员首先根据已有的测演绎法排错是测试人员首先根据已有的测试用例,设想及试用例,设想及枚举出所有可能出错的原因做为假枚举出所有可能出错的原因做为假设设;然后再用原始测试数据或新的测试,从中逐个;然后再用原始测试数据或新的测试,从中逐个排除不可能正确的假设;排除不可能正确
128、的假设;最后,再用测试数据验证最后,再用测试数据验证余下的假设确是出错的原因。余下的假设确是出错的原因。209下页下页末页末页上页上页首页首页目录目录210下页下页末页末页上页上页首页首页目录目录在调试方面,许多原则本质上是在调试方面,许多原则本质上是心理学心理学方面方面的问题。调试由两部分组成,调试原则也分的问题。调试由两部分组成,调试原则也分成两组。成两组。确定错误的性质和位置的原则确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息。用头脑去分析思考与错误征兆有关的信息。 避开死胡同。避开死胡同。 211下页下页末页末页上页上页首页首页目录目录 只把调试工具当做辅助手段来使用
129、。利只把调试工具当做辅助手段来使用。利用调试工具,可以帮助思考,但不能代替用调试工具,可以帮助思考,但不能代替思考。思考。 避免用试探法,最多只能把它当做最后避免用试探法,最多只能把它当做最后手段。手段。修改错误的原则修改错误的原则 在出现错误的地方,很可能还有别的错在出现错误的地方,很可能还有别的错误。误。212下页下页末页末页上页上页首页首页目录目录 修改错误的一个常见失误是修改错误的一个常见失误是只修改了这只修改了这个错误的征兆或这个错误的表现,而没有个错误的征兆或这个错误的表现,而没有修改错误的本身。修改错误的本身。 当心修正一个错误的同时当心修正一个错误的同时有可能会引入有可能会引入
130、新的错误新的错误。 修改错误的过程将迫使人们暂时回到程修改错误的过程将迫使人们暂时回到程序设计阶段。序设计阶段。 修改源代码程序,不要改变目标代码。修改源代码程序,不要改变目标代码。213下页下页末页末页上页上页首页首页目录目录214下页下页末页末页上页上页首页首页目录目录 系统转换包括:系统转换包括:1.1.新系统和旧系统的切换新系统和旧系统的切换2.2.把旧系统的文件转换成新系统的文件把旧系统的文件转换成新系统的文件3.3.数据的整理和录入数据的整理和录入4.4.人员、设备、组织结构的改造和调整人员、设备、组织结构的改造和调整5.5.有关资料档案的建立和移交有关资料档案的建立和移交215下
131、页下页末页末页上页上页首页首页目录目录1 1、直接转换法、直接转换法在指定的时间点,停止原系统的使用,启动新系统。在指定的时间点,停止原系统的使用,启动新系统。老系统老系统新系统新系统转换简单,费用最省转换简单,费用最省风险较大风险较大适合于处理过程不太复杂的适合于处理过程不太复杂的小型简单系统。小型简单系统。216下页下页末页末页上页上页首页首页目录目录2 2、并行切换法、并行切换法 新系统投入运行时,老系统并不停止运行,而新系统投入运行时,老系统并不停止运行,而是与新系统同时运行一段时间,对照两者的输出,利用是与新系统同时运行一段时间,对照两者的输出,利用老系统对新系统进行检验。老系统对新
132、系统进行检验。老系统老系统新系统新系统并行运行并行运行并行运行并行运行并行切换法的特点是风险小、安全系数大并行切换法的特点是风险小、安全系数大; ;开销大(需要同时运行开销大(需要同时运行2 2套系统)套系统); ;用户随着并行期的延长而失去热情,甚至拒绝使用新用户随着并行期的延长而失去热情,甚至拒绝使用新系统系统; ;隐含假设:隐含假设:原系统是正确的。原系统是正确的。217下页下页末页末页上页上页首页首页目录目录3 3、逐步转换法逐步转换法 新系统一部分一部分地替换老系统,直到全部新系统一部分一部分地替换老系统,直到全部替代老系统。替代老系统。老系统老系统新系统新系统1新系统新系统2新系统
133、新系统n避免了直接转换法的危险性,费用也比并行转换法省避免了直接转换法的危险性,费用也比并行转换法省这种转换方式借口复杂,当新老系统差别太大是不宜这种转换方式借口复杂,当新老系统差别太大是不宜采取该方法采取该方法一般多采用这种方式进行系统转换。一般多采用这种方式进行系统转换。218下页下页末页末页上页上页首页首页目录目录一、组织机构的设置一、组织机构的设置1 1、机构设置、机构设置 设置组织机构设置组织机构是保证系统正常运转的基本条件之一。是保证系统正常运转的基本条件之一。一般设置硬件维护、系统维护、信息维护和行政管理等部一般设置硬件维护、系统维护、信息维护和行政管理等部门。门。2 2、人员配
134、备、人员配备 信息系统的运行管理是一项需要多方协调的系统性工信息系统的运行管理是一项需要多方协调的系统性工作,需要多方面人员的密切配合,并牢固树立作,需要多方面人员的密切配合,并牢固树立为用户服务为用户服务的观点。的观点。 合理配置运行管理人员包括:合理配置运行管理人员包括:系统运行管理负责人、系统运行管理负责人、系统维护人员、硬件维护人员、操作人员、行政管理人员。系统维护人员、硬件维护人员、操作人员、行政管理人员。219下页下页末页末页上页上页首页首页目录目录二、系统维护二、系统维护1 1、硬件维护、硬件维护突发性故障维护:突发性故障维护:对于突发性的故障集中人力集中检对于突发性的故障集中人
135、力集中检修或更换。修或更换。定期预防性维护:定期预防性维护:按照一定的设备维护理论,定期对按照一定的设备维护理论,定期对系统设备进行检查和保养。系统设备进行检查和保养。2 2、系统维护、系统维护正确性维护:正确性维护:改正在系统开发阶段已经发生而在系统改正在系统开发阶段已经发生而在系统测试过程尚未发现的错误。测试过程尚未发现的错误。适应性维护:适应性维护:为适应用户外部环境、内部条件发生变为适应用户外部环境、内部条件发生变化,对系统提出新的要求而进行的修改。化,对系统提出新的要求而进行的修改。220下页下页末页末页上页上页首页首页目录目录完善性维护:完善性维护:为进一步扩充系统功能和改善性能进
136、行的修为进一步扩充系统功能和改善性能进行的修改。改。预防性维护:预防性维护:为减少或避免以后需要进行的上述三类维护为减少或避免以后需要进行的上述三类维护而进行的维护。而进行的维护。系统运行系统环境维护或更新:系统运行系统环境维护或更新:操作系统等系统系统新的操作系统等系统系统新的版本的出现后,对其进行评估,决定是否更新。版本的出现后,对其进行评估,决定是否更新。3 3、数据维护、数据维护数据备份:数据备份:经常或定期对重要数据进行备份,对于重要数经常或定期对重要数据进行备份,对于重要数据实时备份。据实时备份。存储空间整理:存储空间整理:对系统运行过程中产生的各种临时文件等对系统运行过程中产生的
137、各种临时文件等进行清理,减少存储空间的无谓占用,提高系统运行效率。进行清理,减少存储空间的无谓占用,提高系统运行效率。221下页下页末页末页上页上页首页首页目录目录三、运行管理规章制度三、运行管理规章制度 除上述各个方面保证系统正常运转外,在系统方面建立健全除上述各个方面保证系统正常运转外,在系统方面建立健全规章制度是必不可少的。这些规章制度包括:规章制度是必不可少的。这些规章制度包括:系统安全制度。系统安全制度。系统定期维护制度。系统定期维护制度。系统运行操作规程。系统运行操作规程。用户使用规程。用户使用规程。系统信息的安全保密制度。系统信息的安全保密制度。系统修改规程。系统修改规程。系统运
138、行日志及填写规定。系统运行日志及填写规定。222下页下页末页末页上页上页首页首页目录目录一、系统评价体系一、系统评价体系系统评价体系由系统评价体系由系统建设、系统性能、系统应用系统建设、系统性能、系统应用等方面构成。等方面构成。1 1、系统建设评价、系统建设评价系统规划目标的科学性系统规划目标的科学性规划目标的实现程度规划目标的实现程度先进性先进性经济性经济性资源利用率资源利用率规范性规范性223下页下页末页末页上页上页首页首页目录目录2 2、系统性能评价、系统性能评价可靠性可靠性系统效率系统效率可维护性可维护性可扩充性可扩充性可移植性可移植性安全保密性安全保密性3 3、系统应用评价、系统应用
139、评价经济效益经济效益社会效益社会效益用户满意程度用户满意程度系统功能应用程度系统功能应用程度224下页下页末页末页上页上页首页首页目录目录二、系统评价文档内容系统的功能评价系统的功能评价系统硬件系统、软件系统的评价系统硬件系统、软件系统的评价系统的应用评价系统的应用评价系统的效益评价系统的效益评价225下页下页末页末页上页上页首页首页目录目录1 1 程序设计手册程序设计手册 程序设计手册将选定计算机语言或开发工具,来描程序设计手册将选定计算机语言或开发工具,来描述系统的计算机模型,其主要使用者是系统维护人员。述系统的计算机模型,其主要使用者是系统维护人员。系统采用的术语系统采用的术语 程序清单
140、程序清单每个功能的描述每个功能的描述系统共享数据系统共享数据系统接口的实现系统接口的实现系统的功能描述系统的功能描述系统开发最小平台系统开发最小平台系统覆盖的流程系统覆盖的流程系统全局变量系统全局变量226下页下页末页末页上页上页首页首页目录目录2 2 用户操作手册用户操作手册 用户操作手册为用户提供了系统能够作用户操作手册为用户提供了系统能够作什么和不能作什么的概况和一份详细的安什么和不能作什么的概况和一份详细的安装指南,以及一个贯穿系统详细指南。装指南,以及一个贯穿系统详细指南。概况概况系统运行平台与安装系统运行平台与安装系统操作描述系统操作描述227下页下页末页末页上页上页首页首页目录目
141、录3 3 系统联机帮助系统联机帮助 228下页下页末页末页上页上页首页首页目录目录問題討論問題討論人员对系统实施的影响人员对系统实施的影响229下页下页末页末页上页上页首页首页目录目录信息系统失败的一个主要原因是信息系统失败的一个主要原因是用户拒绝使用新系统用户拒绝使用新系统用户拒绝使用新系统用户拒绝使用新系统。 拒绝通常来源于对新的工作方式和任务不熟悉,或者对可拒绝通常来源于对新的工作方式和任务不熟悉,或者对可能发生的改变产生忧虑。例如,当计算机文字处理系统进入能发生的改变产生忧虑。例如,当计算机文字处理系统进入到办公室时,许多秘书认为自己的工作会被计算机取代,因到办公室时,许多秘书认为自己
142、的工作会被计算机取代,因而拒绝学习和抵制新技术。然而,实际上字处理系统不仅没而拒绝学习和抵制新技术。然而,实际上字处理系统不仅没有代替秘书的职能,只是完成那些日常重复性、机械化的工有代替秘书的职能,只是完成那些日常重复性、机械化的工作,而且还为秘书创造出新的和更多的管理事务,综合性与作,而且还为秘书创造出新的和更多的管理事务,综合性与分析性的工作大大地增加了。分析性的工作大大地增加了。230下页下页末页末页上页上页首页首页目录目录 当新技术被引入组织时,许多习惯于在原有环境下工作的当新技术被引入组织时,许多习惯于在原有环境下工作的当新技术被引入组织时,许多习惯于在原有环境下工作的当新技术被引入
143、组织时,许多习惯于在原有环境下工作的人会觉得受到威胁。人会觉得受到威胁。人会觉得受到威胁。人会觉得受到威胁。 因为环境改变了,原有的工作岗位、个人地位和人际关因为环境改变了,原有的工作岗位、个人地位和人际关系也都会相应有所改变,因此容易产生一种失落感和不安全感。系也都会相应有所改变,因此容易产生一种失落感和不安全感。持有这种心态的人员会妨碍新系统的实施并企图恢复原系统。持有这种心态的人员会妨碍新系统的实施并企图恢复原系统。如果新的工作方式和工作程序不被接受,那么新系统就达不到如果新的工作方式和工作程序不被接受,那么新系统就达不到预定的目标。预定的目标。拒绝变化的另一个原因是目前的工作环境比较舒
144、拒绝变化的另一个原因是目前的工作环境比较舒适,有关管理人员安于现状。如果没有更多的报酬与激励,管适,有关管理人员安于现状。如果没有更多的报酬与激励,管理人员会觉得改变工作条件得不偿失,因而产生惰性。理人员会觉得改变工作条件得不偿失,因而产生惰性。 231下页下页末页末页上页上页首页首页目录目录 总之,要使新系统和新技术的实施成功,企业的最高总之,要使新系统和新技术的实施成功,企业的最高管理者和系统分析与设计人员就必须起变化代理人的作用,管理者和系统分析与设计人员就必须起变化代理人的作用,用动态的观点,采用变化的计划实施策略来引导变化。当人用动态的观点,采用变化的计划实施策略来引导变化。当人们认
145、识到变化的们认识到变化的必要性和紧迫性必要性和紧迫性时,就会产生求变心理,去时,就会产生求变心理,去制定改变现状的计划。通过制定改变现状的计划。通过管理业务调查、技术培训管理业务调查、技术培训等形式,等形式,能逐步能逐步转变管理人员的观念转变管理人员的观念,完成这项工作需要有耐心和恒,完成这项工作需要有耐心和恒心。在系统设计过程中,要注意维持一定的工作满意度,在心。在系统设计过程中,要注意维持一定的工作满意度,在此基础上对原有工作予以重定义。在系统实施过程中,一旦此基础上对原有工作予以重定义。在系统实施过程中,一旦系统出现问题,系统设计人员应迅速作出反应,以免用户产系统出现问题,系统设计人员应
146、迅速作出反应,以免用户产生不满情绪。生不满情绪。232下页下页末页末页上页上页首页首页目录目录第四次作业第四次作业 2013. 4 .22013. 4 .2(暂时不用提交)(暂时不用提交)1. 1. 怎样区分系统分析与系统设计?怎样区分系统分析与系统设计?2. 2. 系统设计的主要内容包括哪些?系统设计的主要内容包括哪些?3. 3. 解释模块耦合和模块内聚,为什么这些概念很解释模块耦合和模块内聚,为什么这些概念很重要?重要?4. 4. 用户界面设计应该遵循什么原则?用户界面设计应该遵循什么原则?233下页下页末页末页上页上页首页首页目录目录第四次作业第四次作业 2013. 4.162013. 4.16P274P274的课后题的课后题1 1、7 7、1111、1515、1717、2121、2222234下页下页末页末页上页上页首页首页目录目录Good luck!Good luck!Do you have made a progress these Do you have made a progress these days ?days ?謝謝聆聽謝謝聆聽235