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