《第八章系统实施优秀课件.ppt》由会员分享,可在线阅读,更多相关《第八章系统实施优秀课件.ppt(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第八章系统实施第1页,本讲稿共74页第一节第一节系统实施概述系统实施概述一、系统实施的目标一、系统实施的目标在系统分析与与系统设计的阶段中,开发在系统分析与与系统设计的阶段中,开发人员为新系统设计了它的逻辑模型和物理人员为新系统设计了它的逻辑模型和物理模型。系统实施阶段的目标就是把系统设模型。系统实施阶段的目标就是把系统设计的物理模型转换成可实际运行的新系统。计的物理模型转换成可实际运行的新系统。系统实施阶段既是成功地实现新系统,又系统实施阶段既是成功地实现新系统,又是取得用户对新系统信任的关键阶段。是取得用户对新系统信任的关键阶段。第2页,本讲稿共74页二、系统实施的主要内容和步骤二、系统实
2、施的主要内容和步骤1物理系统的实施物理系统的实施:2程序设计程序设计:3系统调试系统调试:4人员培训人员培训:5系统切换。系统切换。第3页,本讲稿共74页系统实施首先进行物理系统的实施,要根系统实施首先进行物理系统的实施,要根据计算机物理系统配置方案购买和安装计据计算机物理系统配置方案购买和安装计算机硬、软件系统和通信网络系统,还包算机硬、软件系统和通信网络系统,还包括计算机机房的准备和设备安装调试等一括计算机机房的准备和设备安装调试等一系列活动,要熟悉计算机物理系统的性能系列活动,要熟悉计算机物理系统的性能和使用方法,同时进行的工作是程序设计和使用方法,同时进行的工作是程序设计:接着进行的工
3、作是收集有关数据并进行录接着进行的工作是收集有关数据并进行录入工作入工作:然后是系统调试然后是系统调试:最后是人员培训和最后是人员培训和系统切换。系统切换。第4页,本讲稿共74页第二节第二节物理系统的实施物理系统的实施安装地点:应考虑系统对电缆、电话、工安装地点:应考虑系统对电缆、电话、工作空间、噪音和通讯条件及交通情况的要作空间、噪音和通讯条件及交通情况的要求。求。两个要求:使用专门的地板,让电缆通过两个要求:使用专门的地板,让电缆通过地板孔道,连接中央处理机及各设备,保地板孔道,连接中央处理机及各设备,保证安全。提供不中断电源,以免丢失数据。证安全。提供不中断电源,以免丢失数据。第5页,本
4、讲稿共74页第三节第三节程序设计程序设计一、程序质量标准一、程序质量标准可靠性(可靠性(Reliability):它可分解为两个方):它可分解为两个方面的内容:一是程序或系统的安全可靠性,面的内容:一是程序或系统的安全可靠性,如数据存取的安全可靠性,通讯的安全可如数据存取的安全可靠性,通讯的安全可靠性,操作权限的安全可靠性。另一个方靠性,操作权限的安全可靠性。另一个方面是程序运行的可靠性,这一点只能靠程面是程序运行的可靠性,这一点只能靠程序调试时严格把关来保证编程工作质量。序调试时严格把关来保证编程工作质量。第6页,本讲稿共74页规范性(规范性(Standardability):即系统的划分、
5、):即系统的划分、书写格式、变量的命名等都是按统一规范书写格式、变量的命名等都是按统一规范进行的。这对于今后程序的阅读、修改和进行的。这对于今后程序的阅读、修改和维护都是十分必要的。维护都是十分必要的。可读性(可读性(Readability):即程序的清晰,没):即程序的清晰,没有太多繁杂的技巧,能够使他人容易读懂。有太多繁杂的技巧,能够使他人容易读懂。它对于大规模过程化开发软件非常重要。它对于大规模过程化开发软件非常重要。第7页,本讲稿共74页可维护性可维护性(maintainability):即程序各部分相:即程序各部分相互独立,没有调用子程序以外的其它数据互独立,没有调用子程序以外的其它
6、数据关联。也就是说不会发生那种在维护时,关联。也就是说不会发生那种在维护时,牵一发动全身的连锁反应。牵一发动全身的连锁反应。第8页,本讲稿共74页二、程序设计风格二、程序设计风格为了提高程序的可读性,在程序设计风格为了提高程序的可读性,在程序设计风格方面应注意以下几点:方面应注意以下几点:1适当的程序注释适当的程序注释注释原则上可以出现在程序中的任何位置。注释原则上可以出现在程序中的任何位置。注释一般分为两类:序言性注释和描述性注释一般分为两类:序言性注释和描述性注释。注释。第9页,本讲稿共74页序言性注释出现在模块的首部,内容包括:序言性注释出现在模块的首部,内容包括:模块功能说明、主要算法
7、、所有参数的解模块功能说明、主要算法、所有参数的解释、该模块需调用的模块名、设计者姓名、释、该模块需调用的模块名、设计者姓名、复查人姓名、复查日期、修改日期等。复查人姓名、复查日期、修改日期等。描述性注释嵌在程序之中,用来说明其后描述性注释嵌在程序之中,用来说明其后的程序段的功能。的程序段的功能。第10页,本讲稿共74页2有规律的程序书写格式有规律的程序书写格式恰当的书写格式将有助于阅读,在结构化恰当的书写格式将有助于阅读,在结构化程序设计中一般采用所谓程序设计中一般采用所谓“缩排法缩排法”来写程序,来写程序,即把同一层次的语句行左端对齐,而下一即把同一层次的语句行左端对齐,而下一层的语句则向
8、右边缩进若干格书写,它能层的语句则向右边缩进若干格书写,它能体现程序逻辑结构的深度。此外,在程序体现程序逻辑结构的深度。此外,在程序段与段之间安排空白行,也有助于阅读。段与段之间安排空白行,也有助于阅读。第11页,本讲稿共74页3恰当选择变量名恰当选择变量名理解程序中每个变量的含义是理解程序的理解程序中每个变量的含义是理解程序的关键,所以变量的名字应该直观,易于理关键,所以变量的名字应该直观,易于理解和记忆。例如采用有实际意义的变量名、解和记忆。例如采用有实际意义的变量名、不用过于相似的变量名、不用过于相似的变量名、同一变量名不要同一变量名不要具有多种意义。此外,在编程前最好能对具有多种意义。
9、此外,在编程前最好能对变量名的选取约定统一标准,以后阅读理变量名的选取约定统一标准,以后阅读理解就会方便的多。解就会方便的多。例如,用例如,用student表示学生,表示学生,age表示年龄。表示年龄。第12页,本讲稿共74页第四节第四节系统调试系统调试一、调试的意义和目的一、调试的意义和目的在管理信息系统开发周期的各个阶段都不在管理信息系统开发周期的各个阶段都不可避免地会出现差错。可避免地会出现差错。统计资料表明,对于一些较大规模的系统统计资料表明,对于一些较大规模的系统来说,系统调试的工作量往往占程序系统来说,系统调试的工作量往往占程序系统编制开发总工作量的编制开发总工作量的40%以上。以
10、上。第13页,本讲稿共74页调试的目的在于发现其中的错误并及时纠调试的目的在于发现其中的错误并及时纠正,所以在调试时应想方设法使程序的各正,所以在调试时应想方设法使程序的各个部分都投入运行,力图找出所有错误。个部分都投入运行,力图找出所有错误。第14页,本讲稿共74页二、调试的策略和基本原则调试的策略和基本原则一个小程序的控制流程图,该程序由一个循环语句组成,循环次数可达20次,循环体中是一组嵌套的IF语句,其可能的路径有五条,所以从程序的入口A到出口B的路径数高达5201014。如果编写一个调试例子,并用它来调试这个程序的一条路径要花一分钟,则调试每一条路径就需要二亿年。第15页,本讲稿共7
11、4页从上例可以看出不可能把每一条路径都测从上例可以看出不可能把每一条路径都测试完,也就是不可能进行穷尽测试(包含试完,也就是不可能进行穷尽测试(包含所有可能情况的测试),只能用一定的测所有可能情况的测试),只能用一定的测试用例(即样本)来测试。试用例(即样本)来测试。用例测试只能查出程序中的错误,不能证用例测试只能查出程序中的错误,不能证明程序没有错误。明程序没有错误。第16页,本讲稿共74页调试阶段还应注意以下一些基本原则:调试阶段还应注意以下一些基本原则:(1)调试用例应该由)调试用例应该由“输入数据输入数据”和和“预期的预期的输出结果输出结果”组成。这就是说,在执行程序之组成。这就是说,
12、在执行程序之前应该对期望的输出有很明确的描述,调前应该对期望的输出有很明确的描述,调试后可将程序的输出同它仔细对照检查。试后可将程序的输出同它仔细对照检查。若不事先确定预期的输出,这可能把似乎若不事先确定预期的输出,这可能把似乎是正确而实际是错误的结果当成是正确结是正确而实际是错误的结果当成是正确结果。果。第17页,本讲稿共74页(2)不仅要选用合理的输入数据进行调试,还应)不仅要选用合理的输入数据进行调试,还应选用不合理的甚至错误的输入数据。许多人往往只选用不合理的甚至错误的输入数据。许多人往往只注意前者而忽略了后一种情况,为了提高程序的可注意前者而忽略了后一种情况,为了提高程序的可靠性,应
13、认真组织一些异常数据进行调试,并仔细靠性,应认真组织一些异常数据进行调试,并仔细观察和分析系统的反应。观察和分析系统的反应。(3)除了检查程序是否做了它应该做的工作,还)除了检查程序是否做了它应该做的工作,还应检查程序是否做了它不该做的事情。例如除了检应检查程序是否做了它不该做的事情。例如除了检查工资管理程序是否为每个职工正确地产生了一份查工资管理程序是否为每个职工正确地产生了一份工资单以外,还应检查它是否还产生了多余的工资工资单以外,还应检查它是否还产生了多余的工资单。单。第18页,本讲稿共74页(4)应该长期保留所有的调试用例,直至该)应该长期保留所有的调试用例,直至该系统被废弃不用为止。
14、在管理信息系统的系统被废弃不用为止。在管理信息系统的调试中,设计调试用例是很费时的,如果调试中,设计调试用例是很费时的,如果将用过的例子丢弃了,以后一旦需要再调将用过的例子丢弃了,以后一旦需要再调试有关的部分时(例如技术鉴定系统维护试有关的部分时(例如技术鉴定系统维护等场合)就需要再花很多人工。通常,人等场合)就需要再花很多人工。通常,人们往往懒得再次认真地设计调试用例,因们往往懒得再次认真地设计调试用例,因而下次调试时很少有初次那样全面。如果而下次调试时很少有初次那样全面。如果将所有调试用例作为系统的一部分保存下将所有调试用例作为系统的一部分保存下来,就可以避免这种情况的发生。来,就可以避免
15、这种情况的发生。第19页,本讲稿共74页三、测试的方法三、测试的方法测试包括三方面,即设计测试包括三方面,即设计“测试用例测试用例”,执行被测程序和分析执行结果并发现错误。执行被测程序和分析执行结果并发现错误。设计测试用例是开始程序测试的第一步,设计测试用例是开始程序测试的第一步,也是有效地完成测试工作的关键。也是有效地完成测试工作的关键。按照在设计测试用例时是否涉及程序的内按照在设计测试用例时是否涉及程序的内部结构,可以分为白盒测试和黑盒测试两部结构,可以分为白盒测试和黑盒测试两种方法。种方法。第20页,本讲稿共74页白盒测试:测试者对被测试程序的内部结白盒测试:测试者对被测试程序的内部结构
16、是清楚的,他从程序的逻辑结构入手,构是清楚的,他从程序的逻辑结构入手,按照一定的原则来设计测试用例,检查程按照一定的原则来设计测试用例,检查程序中的每一条通路是否都能按找预定的要序中的每一条通路是否都能按找预定的要求正确工作。由于被测程序的结构对测试求正确工作。由于被测程序的结构对测试者是透明的,因此又称这类测试为玻璃盒者是透明的,因此又称这类测试为玻璃盒测试或结构测试。测试或结构测试。第21页,本讲稿共74页黑盒测试的情况正好相反。此时,测试者黑盒测试的情况正好相反。此时,测试者把被测程序看成一个黑盒,完全用不着关把被测程序看成一个黑盒,完全用不着关心程序的内部结构。设计测试用例时,仅心程序
17、的内部结构。设计测试用例时,仅以程序的外部功能为根据。一方面检查程以程序的外部功能为根据。一方面检查程序能否完成一切应做的事情,另一方面要序能否完成一切应做的事情,另一方面要考察它能否拒绝一切不应该做的事情。由考察它能否拒绝一切不应该做的事情。由于黑盒测试着重于检查程序的功能,所以于黑盒测试着重于检查程序的功能,所以也称为功能测试。也称为功能测试。第22页,本讲稿共74页人们在长期实践中总结了许多设计测试用人们在长期实践中总结了许多设计测试用例的技术,属于白盒测试的有逻辑覆盖法例的技术,属于白盒测试的有逻辑覆盖法(具体又可分为语句覆盖、判定覆盖、条(具体又可分为语句覆盖、判定覆盖、条件覆盖、判
18、定件覆盖、判定/条件覆盖、条件组合覆盖和条件覆盖、条件组合覆盖和路径覆盖)。属于黑盒测试的有等价类划路径覆盖)。属于黑盒测试的有等价类划分、边界值分析及错误推测法等。分、边界值分析及错误推测法等。通常设计测试数据的做法是:用黑盒法设通常设计测试数据的做法是:用黑盒法设计基本的测试用例,再用白盒法补充一些计基本的测试用例,再用白盒法补充一些方案。方案。第23页,本讲稿共74页1.等价类划分等价类划分穷尽的黑盒测试需要使用所有有效的和无效的输入数据来测试穷尽的黑盒测试需要使用所有有效的和无效的输入数据来测试程序,通常这是不现实的。因此,只能选取少量有代表性的输程序,通常这是不现实的。因此,只能选取
19、少量有代表性的输入数据,以期用较小的代价暴露出较多的程序错误。入数据,以期用较小的代价暴露出较多的程序错误。这种方法是把被测试的程序的所有可能的输入数据这种方法是把被测试的程序的所有可能的输入数据(有效的和无有效的和无效的效的)划分成若干个等价类,把无限的随机测试变成有针对性的划分成若干个等价类,把无限的随机测试变成有针对性的等价类测试。按这种方法可以合理地做出下列假定:每类中的等价类测试。按这种方法可以合理地做出下列假定:每类中的一个典型值在测试中的作用与这一类中所有其它值的作用相同。一个典型值在测试中的作用与这一类中所有其它值的作用相同。因此,可以从每个等价类中只取一组数据作为测试数据。这
20、样因此,可以从每个等价类中只取一组数据作为测试数据。这样可选取少量有可选取少量有“代表性代表性”的测试数据,来代替大量相类似的测试,的测试数据,来代替大量相类似的测试,从而大大减少总的测试次数。从而大大减少总的测试次数。第24页,本讲稿共74页设计等价类的测试用例一般分为两步进行:设计等价类的测试用例一般分为两步进行:第一步:划分等价类并给出定义第一步:划分等价类并给出定义:第二步:选择测试用例。第二步:选择测试用例。选择的原则是:有效等价类的测试用例尽选择的原则是:有效等价类的测试用例尽量公用,以期进一步减少测试的次数量公用,以期进一步减少测试的次数:无效无效等价类必须每类一例,以防漏掉本来
21、可能等价类必须每类一例,以防漏掉本来可能发现的错误。发现的错误。第25页,本讲稿共74页划分等价类需要经验,下述几条启发式规划分等价类需要经验,下述几条启发式规则可能有助于等价类的划分:则可能有助于等价类的划分:如果规定了输入值的范围,则可划分出一如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),个有效的等价类(输入值在此范围内),两个无效的等价类(输入值小于最小值和两个无效的等价类(输入值小于最小值和大于最大值)。大于最大值)。如果规定了输入数据的个数,则类似地可如果规定了输入数据的个数,则类似地可以划分出一个有效的等价类和两个无效的以划分出一个有效的等价类和两个无效的
22、等价类。等价类。第26页,本讲稿共74页如果规定了输入数据的一组值,而且程序如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的对不同输入值做不同处理,则每个允许的输入值是一个有效的等价类,此外还有一输入值是一个有效的等价类,此外还有一个无效的等价类(任一个不允许的输入值)。个无效的等价类(任一个不允许的输入值)。如果规定了输入数据必须遵循的规则,则如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)可以划分出一个有效的等价类(符合规则)和若干无效的等价类(从各种不同角度违和若干无效的等价类(从各种不同角度违反规则)。反规则)。第27页,本讲稿共74页
23、如果规定了输入数据为整型,则可以划分如果规定了输入数据为整型,则可以划分出正整数、零和负整数等三个有效类出正整数、零和负整数等三个有效类:如果程序的处理对象是表格,则应该使用如果程序的处理对象是表格,则应该使用空表,以及一项或多项的表。空表,以及一项或多项的表。第28页,本讲稿共74页划分初等价类以后,根据等价类设计测试划分初等价类以后,根据等价类设计测试用例时主要使用下面两个步骤:用例时主要使用下面两个步骤:设计一个新的测试用例以尽可能多地覆设计一个新的测试用例以尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤盖尚未覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止直到所有有效等价
24、类都被覆盖为止:设计一个新的测试用例,使它覆盖一个设计一个新的测试用例,使它覆盖一个而且只覆盖一个尚未覆盖的无效等价类,而且只覆盖一个尚未覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆重复这一步骤直到所有无效等价类都被覆盖为止盖为止:第29页,本讲稿共74页等价类划分的例子等价类划分的例子某城市的电话号码由三部分组成。这三部分的名称和某城市的电话号码由三部分组成。这三部分的名称和内容分别是内容分别是地区码:空白或三位数字地区码:空白或三位数字:前前缀:非缀:非0或或1开头的三位数开头的三位数:后后缀:四位数字。缀:四位数字。假定被调试的程序能接受一切符合上述规定的电话号假定被调试的程序
25、能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。来设计它的调试用例。第30页,本讲稿共74页第一步:划分等价类,包括第一步:划分等价类,包括4个有效等价类,个有效等价类,11个无效等价类。在每一等价类之后加有个无效等价类。在每一等价类之后加有编号,以便识别。编号,以便识别。第31页,本讲稿共74页输入条件 有效等价类无效等价类地区码 空白(1),3位数字(2)有非数字字符(5),少于3位数字(6),多于三位数字(7)前缀 从200到999之间的3位数字(3)有非数字字符(8),起始位为0(9),起始位
26、为1(10),少于3位数字(11),多于3位数字(12)后缀 4位数字(4)有非数字字符(13),少于4位数字(14),多于4位数字(15)第32页,本讲稿共74页第二步:确定调试用例。上表中有4个有效等价类,可以公用两个测试用例:调试数据调试数据范围范围期望结期望结果果()2762345等价类(1),(3),(4)有效(635)8059321等价类(2),(3),(4)有效 第33页,本讲稿共74页对11个无效等价类,要选择11个调试用例,调试数据调试数据 范围范围 期望结果期望结果(20A)1234567 无效等价类(5)无效(33)2345678 无效等价类(6)无效(7777)3456
27、789 无效等价类(7)无效(777)34A6789无效等价类(8)无效(234)0456789无效等价类(9)无效(777)1456789 无效等价类(10)无效(777)346789 无效等价类(11)无效(777)23456789 无效等价类(12)无效(777)345678A 无效等价类(13)无效(777)345678 无效等价类(14)无效(777)34556789 无效等价类(15)无效 第34页,本讲稿共74页2.边界值分析边界值分析经验表明,处理边界情况时程序最容易发生错误。经验表明,处理边界情况时程序最容易发生错误。例如,许多程序错误出现在下标、循环的边界等附例如,许多程序
28、错误出现在下标、循环的边界等附近。因此,设计使程序运行在边界情况附近的测试近。因此,设计使程序运行在边界情况附近的测试方案,暴露出错误的可能性更大一些。方案,暴露出错误的可能性更大一些。按照边界值分析法,应该选取刚好等于、稍小于和按照边界值分析法,应该选取刚好等于、稍小于和稍大于等价类边界值的数据作为测试数据,而不是稍大于等价类边界值的数据作为测试数据,而不是选取每个等价类内的典型值作为测试数据。选取每个等价类内的典型值作为测试数据。第35页,本讲稿共74页3.错误推测法错误推测法使用边界分析法和等价划分技术,可以帮使用边界分析法和等价划分技术,可以帮助开发人员设计具有代表性的,容易暴露助开发
29、人员设计具有代表性的,容易暴露程序错误的测试用例。但是,不同类型不程序错误的测试用例。但是,不同类型不同特点的程序通常又有一些特殊的容易出同特点的程序通常又有一些特殊的容易出错的情况。此外,有时分别使用每组测试错的情况。此外,有时分别使用每组测试数据时程序都能正常工作,这些输入数据数据时程序都能正常工作,这些输入数据的组合却可能检测出程序的错误。的组合却可能检测出程序的错误。第36页,本讲稿共74页错误推测法在很大程度上靠直觉和经验进错误推测法在很大程度上靠直觉和经验进行。它的基本想法是列举出程序中可能有行。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且的错误和容易发生错
30、误的特殊情况,并且根据它们选择测试用例。根据它们选择测试用例。例如,输入数据为例如,输入数据为0的地方。输入数据的地方。输入数据“图书图书名称名称”处若输入空格,程序是否认为正确输处若输入空格,程序是否认为正确输入。图书的定价为负值,程序是否报错。入。图书的定价为负值,程序是否报错。第37页,本讲稿共74页4.语句覆盖语句覆盖为了暴露程序中的错误,至少每个语句应为了暴露程序中的错误,至少每个语句应该执行一次。语句覆盖的含义是,选择足该执行一次。语句覆盖的含义是,选择足够多的测试数据,使被测试程序中的每个够多的测试数据,使被测试程序中的每个语句至少执行一次。语句至少执行一次。第38页,本讲稿共7
31、4页cPROCEDUREEXAMPLE(A,B:REAL:VARX:REAL)BEGINIF(A1)AND(B=0)THENX:=X/AIF(A=2)OR(X1)THENX:=X+1END:e第39页,本讲稿共74页为了使每个语句都执行一次,程序的执行路径应该是为了使每个语句都执行一次,程序的执行路径应该是sacbed,为此只需要输入下面的测试数据(实际上,为此只需要输入下面的测试数据(实际上X可可以是任意实数),以是任意实数),A=2,B=0,X=4语句覆盖对程序的逻辑覆盖很少,在例子中两个判定条语句覆盖对程序的逻辑覆盖很少,在例子中两个判定条件都只测试了被测模块的流程图上面的条件为真的情况
32、,件都只测试了被测模块的流程图上面的条件为真的情况,如果条件为假时处理有错误,显然不能发现。此外,语如果条件为假时处理有错误,显然不能发现。此外,语句覆盖只关心判定表达式的值,而没有分别测试判定表句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。达式中每个条件取不同值时的情况。第40页,本讲稿共74页在上面的例子中,为了执行在上面的例子中,为了执行sacbed路径,以测试每个语句,路径,以测试每个语句,只需两个判定表达式(只需两个判定表达式(A1)AND(B=0)和()和(A=2)OR(X1)都取真值,因此使用上述一组测试数据就够了。)都取真值,因此使用上述一组测
33、试数据就够了。但是,如果程序中把第一个判定表达式中的逻辑运算符但是,如果程序中把第一个判定表达式中的逻辑运算符“AND”错写成错写成“OR”,或把第二个判定式中的条件,或把第二个判定式中的条件“X1”误写误写成成“X1错写成了错写成了X1,A1,B=0,B0在在b点有下述各种结果出现:点有下述各种结果出现:A=2,A2,X1,X1只需要使用下面两组测试数据就可以达到上述覆盖标准:只需要使用下面两组测试数据就可以达到上述覆盖标准:A=2,B=0,X=4(满足满足A1,B=0,A=2和和X1的条件,执行路径的条件,执行路径sacbed)A=1,B=1,X=1(满足满足A1,B0,A2和和X1的条件
34、,执行路径的条件,执行路径sabd)第45页,本讲稿共74页条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。例如,上面两组测试数据也同时满足判定覆盖标准。但的值。例如,上面两组测试数据也同时满足判定覆盖标准。但是,也可能有相反的情况,虽然每个条件都取到了两个不同的是,也可能有相反的情况,虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。例如,如果使用下面两结果,判定表达式却始终只取一个值。例如,如果使用下面两
35、组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准(第二个判定表达式的值总为真):(第二个判定表达式的值总为真):A=2,B=0,X=1(满足满足A1,B=0,A=2和和X1的条件,执行路径的条件,执行路径sacbed)A=1,B=1,X=2(满足满足A1,B0,A2和和X1的条件,执行路径的条件,执行路径sabed)第46页,本讲稿共74页7.判定判定/条件覆盖条件覆盖既然判定覆盖不一定包含条件覆盖,条件既然判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,自然会提出覆盖也不一定包含判定覆盖,自然会提出一种能同时满足这两种覆盖标准
36、的逻辑覆一种能同时满足这两种覆盖标准的逻辑覆盖,这就是判定盖,这就是判定/条件覆盖,它的含义是,条件覆盖,它的含义是,选取足够多的测试数据,使得判定表达式选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。每个判定表达式也都取到各种可能的结果。第47页,本讲稿共74页对于前述例子而言,下述两组测试数据满对于前述例子而言,下述两组测试数据满足判定足判定/条件覆盖标准:条件覆盖标准:I.A=2,B=0,X=4II.A=1,B=2,X=1但是,这两组测试数据也就是为了满足条但是,这两组测试数据也就是为了满足
37、条件覆盖标准最初选取的两组数据,因此,件覆盖标准最初选取的两组数据,因此,有时判定有时判定/条件覆盖也并不比条件覆盖更强。条件覆盖也并不比条件覆盖更强。第48页,本讲稿共74页8.条件组合覆盖条件组合覆盖条件组合覆盖是更强的逻辑覆盖标准,它条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出定表达式中条件的各种可能组合都至少出现一次。现一次。第49页,本讲稿共74页对于前面的例子,共有八种可能的条件组合,它们是:A1,B=0A1,B0A1,B=0A1,B0A=2,X1A=2,X1A2,X1A2,X1下面
38、的四组测试数据可以使上面列出的八种组合每种至少出现一次:A2,B0,X4(针对1,5两种组合,执行路径sacbed)A2,B1,X1(针对2,6两种组合,执行路径sabed)A1,B0,X2(针对3,7两种组合,执行路径sabed)A=1,B=1,X=1(针对4,8两种组合,执行路径sabd)第50页,本讲稿共74页显然,满足条件组合覆盖标准的测试数据,显然,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定也一定满足判定覆盖、条件覆盖和判定/条条件覆盖标准。因此,条件组合覆盖是前述件覆盖标准。因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件几种覆盖标准中最强的。但
39、是,满足条件组合覆盖标准的测试数据并不一定能使程组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到,例如,上述四序中的每条路径都执行到,例如,上述四组测试数据都没有测试到路径组测试数据都没有测试到路径sacbd。第51页,本讲稿共74页9.路径覆盖路径覆盖就是设计足够的测试用例,覆盖程序中所有可能的路径。下述四组输入数据能够覆盖前面途中的四条路径。(1)A=2,B=0,X=4(2)A=2,B=1,X=1(3)A=1,B=0,X=2(4)A=4,B=0,X=4第52页,本讲稿共74页因此,对软件系统进行实际测试时,应该因此,对软件系统进行实际测试时,应该联合使用各种设计测试用例的方法,形
40、成联合使用各种设计测试用例的方法,形成一种综合策略。通常的做法是,用黑盒法一种综合策略。通常的做法是,用黑盒法设计基本的测试用例,再用白盒法补充一设计基本的测试用例,再用白盒法补充一些必要的测试用例。具体地说,可以使用些必要的测试用例。具体地说,可以使用下述策略结合各种方法:下述策略结合各种方法:在任何情况下都应该使用边界值分析的在任何情况下都应该使用边界值分析的方法。经验表明,用这种设计方法设计出方法。经验表明,用这种设计方法设计出的测试用例暴露程序错误的能力最强。的测试用例暴露程序错误的能力最强。第53页,本讲稿共74页必要时用等价划分法补充测试用例。必要时用等价划分法补充测试用例。必要时
41、再用错误推测法补充测试用例。必要时再用错误推测法补充测试用例。对照程序逻辑,检查已经设计出的测试对照程序逻辑,检查已经设计出的测试用例。可以根据对程序可靠性的要求采用用例。可以根据对程序可靠性的要求采用不同的逻辑覆盖标准,如果现有测试用例不同的逻辑覆盖标准,如果现有测试用例的逻辑覆盖程度没有达到要求的覆盖标准,的逻辑覆盖程度没有达到要求的覆盖标准,则应再补充一些测试用例。则应再补充一些测试用例。第54页,本讲稿共74页四、调试步骤调试步骤一个管理信息系统通常由若干子系统组成,每个子系统又由若干模块(程序)组成。所以,可把调试工作分为模块(程序)调试、分调(子系统调试)和总调(系统调试)三个层次
42、,调试过程依次是模块调试、分调、总调,如图所示。第55页,本讲稿共74页1.模块调试模块调试模块(程序)调试的目的是保证每个模块本身能正常运模块(程序)调试的目的是保证每个模块本身能正常运行,在该步调试中发现的问题大都是程序设计或详细设行,在该步调试中发现的问题大都是程序设计或详细设计中的错误。对于模块调试,一般分成人工走通和上机计中的错误。对于模块调试,一般分成人工走通和上机调试两步进行。调试两步进行。人工走通就是打印出源程序,然后参照设计说明书人工走通就是打印出源程序,然后参照设计说明书(包括程序框图)的要求把呈现在纸上(包括程序框图)的要求把呈现在纸上“走走”一遍。一遍。程序的错误可分成
43、语法错误和逻辑错误两种情况,程序的错误可分成语法错误和逻辑错误两种情况,一般只要认真检查就可以发现绝大部分的语法错误一般只要认真检查就可以发现绝大部分的语法错误和部分逻辑错误。和部分逻辑错误。第56页,本讲稿共74页而用计算机进行交互调试时,每发现一个而用计算机进行交互调试时,每发现一个错误后要先改正错误才能继续调试,速度错误后要先改正错误才能继续调试,速度要明显降低。所以,决不要一开始就将源要明显降低。所以,决不要一开始就将源程序键入计算机而忙于立即执行,而应先程序键入计算机而忙于立即执行,而应先在纸上走通。在纸上走通。程序的检查最好请审查小组或其他开发者。程序的检查最好请审查小组或其他开发
44、者。第57页,本讲稿共74页当人工走通以后,就可以上机调试了。语当人工走通以后,就可以上机调试了。语法错误比较容易发现和修改,因为高级语法错误比较容易发现和修改,因为高级语言都具备语法检查功能,但是检查的全面言都具备语法检查功能,但是检查的全面性不尽相同。为了有效地发现并改正逻辑性不尽相同。为了有效地发现并改正逻辑错误,一方面,可认真设计调试用例,另错误,一方面,可认真设计调试用例,另一方面,要充分利用所用高级语言提供的一方面,要充分利用所用高级语言提供的调试机制或软件工具。调试机制或软件工具。第58页,本讲稿共74页2.分调分调分调也称子系统调试,就是把经过调试的分调也称子系统调试,就是把经
45、过调试的模块放在一起形成一个子系统来调试。主模块放在一起形成一个子系统来调试。主要是调试各模块之间的协调和通信,即重要是调试各模块之间的协调和通信,即重点调试子系统内各模块的接口。例如,数点调试子系统内各模块的接口。例如,数据穿过接口时可能丢失据穿过接口时可能丢失:一个模块对另一个一个模块对另一个模块可能存在因疏忽而造成的有害影响模块可能存在因疏忽而造成的有害影响:把把若干子功能结合起来可能不产生预期的主若干子功能结合起来可能不产生预期的主功能等等。功能等等。第59页,本讲稿共74页如何将若干个模块连接成一个可运行的子如何将若干个模块连接成一个可运行的子系统,通常有两种方法。一种方法是先分系统
46、,通常有两种方法。一种方法是先分别调试每个模块,再把所有模块按设计要别调试每个模块,再把所有模块按设计要求连成一起进行调试,这种方法称为求连成一起进行调试,这种方法称为“非渐非渐增式增式”调试。另一种方法是把下一个要调试调试。另一种方法是把下一个要调试的模块同已经调试好的那些模块结合起来的模块同已经调试好的那些模块结合起来进行调试,调试完成后再把下一个应该调进行调试,调试完成后再把下一个应该调试的模块结合进来调试,这种方式称为试的模块结合进来调试,这种方式称为“渐渐增式增式”,这种方式实际上同时完成了模块调,这种方式实际上同时完成了模块调试和子系统调试。试和子系统调试。第60页,本讲稿共74页
47、渐增式有利于排错。如果界面有错,它通渐增式有利于排错。如果界面有错,它通常与最新加上去的那个模块有关,错误比常与最新加上去的那个模块有关,错误比较容易定位,非渐增式则不然。较容易定位,非渐增式则不然。使用非渐增式可以并行(同时)同时所有使用非渐增式可以并行(同时)同时所有模块,能充分利用人力,这对开发系统是模块,能充分利用人力,这对开发系统是很有意义的。很有意义的。第61页,本讲稿共74页3.总调总调经过分调,已经把一个模块装成若干子系经过分调,已经把一个模块装成若干子系统并经充分调试。接着的任务是总调,也统并经充分调试。接着的任务是总调,也称为系统调试,它是经过调试的子系统装称为系统调试,它
48、是经过调试的子系统装配成一个完整的系统来调试,用以发现系配成一个完整的系统来调试,用以发现系统设计和程序设计中的错误,验证系统的统设计和程序设计中的错误,验证系统的功能是否达到设计说明书的要求。功能是否达到设计说明书的要求。第62页,本讲稿共74页第五节第五节人员培训人员培训为了使新系统能够按预期目标正常运行,对用户人员进行为了使新系统能够按预期目标正常运行,对用户人员进行必要的培训是在系统转换之前不可忽视的一项工作。必要的培训是在系统转换之前不可忽视的一项工作。管理信息系统是一个人机系统,它的正常运行需要很管理信息系统是一个人机系统,它的正常运行需要很多人参加工作,将有许多人承担系统所需输入
49、信息的多人参加工作,将有许多人承担系统所需输入信息的人工处理过程,以及计算机操作过程。这些人通常来人工处理过程,以及计算机操作过程。这些人通常来自现行系统,他们熟悉或精通原来的人工处理过程,自现行系统,他们熟悉或精通原来的人工处理过程,但缺乏计算机处理的有关知识,为了保证新系统的顺但缺乏计算机处理的有关知识,为了保证新系统的顺利使用,必须提前培训有关人员。利使用,必须提前培训有关人员。需要进行培训的人员主要有以下三类:需要进行培训的人员主要有以下三类:第63页,本讲稿共74页一、事务管理人员一、事务管理人员新系统能否顺利运行并获得预期目标,在很大程度上新系统能否顺利运行并获得预期目标,在很大程
50、度上与这些第一线的事务管理人员(或主管人员)有关系。与这些第一线的事务管理人员(或主管人员)有关系。因此,可以通过讲座、报告会的形式,向他们说明新因此,可以通过讲座、报告会的形式,向他们说明新系统的目标、功能,说明系统的结构及运行过程,以系统的目标、功能,说明系统的结构及运行过程,以及对企业组织机构、工作方式等产生的影响。对事务及对企业组织机构、工作方式等产生的影响。对事务管理人员进行培训时,必须做到通俗、具体、尽量不管理人员进行培训时,必须做到通俗、具体、尽量不采用与实际业务领域无关的计算机专业术语。例如,采用与实际业务领域无关的计算机专业术语。例如,可以就他们最关心的以下问题展开对话。可以