信息系统分析与设计(第3版)邝孔武-王晓敏-第-10章-系统实施

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第10章系统实施本章计划学时:4学时本章主要内容•系统实施阶段的任务•程序设计–程序设计技术–编程规范•系统测试和调试–测试技术–测试类型–测试工具•系统转换主要包括以下几个方面的任务:1.硬件准备2.软件准备3.人员培训4.数据准备系统实施阶段的内容系统实施阶段的特点是:•工作量大•投入的人力、物力多实施阶段的特点10.1制定实现策略•结构化方法主张自顶向下实现,尽量先实现上层模块,逐步向下,最后实现下层最基本的模块。–首先实现系统的轮廓或框架,在此基础上不断添加新的功能,逐步完善,最后达到物理模型所要求的全部功能。•面向对象方法主张基于构件的实现方法,按层划分构件后,尽量先完成构件接口,然后可实现并行开发。–先实现底层构件,然后开发上层构件•这种自顶向下的实现方法有效地解决了接口问题。接口解决不好,往往不得不对调试过的程序反复修改,甚至推倒重来,造成重大的返工。•这种方法整体性好,结构风险较小。•便于控制进度,保证研制工作按时完成。自顶向下方法的优点10.2编写程序编写程序,要考虑以下几个方面:(1)了解什么是好程序;(2)采用什么程序设计技术;(3)遵循什么样的编程规范;1、好程序的标准一般认为好程序应具备下列素质:(1)能够工作;(2)调试代价低;(3)易于维护;(4)易于修改;(5)设计不复杂;(6)效率高。2、程序设计技术•结构化程序设计•面向对象程序设计•可视化程序设计•Web程序设计•插件技术•……结构化程序设计•通常认为结构化程序设计包括以下四方面的内容:(1)限制使用GOTO语句(2)逐步求精的设计方法(3)自顶向下的设计、编码和调试(4)主程序员制的组织形式面向对象程序设计•封装、继承、多态•程序以对象为基本元素,对象包含属性和方法,设计程序通常不采用顺序结构•数据是特定对象的数据,只有对象自身的函数或过程(方法)可以维护对象的数据(属性)•公用的功能通常设计组件(类)以实现重用•需要分析并表达出对象之间的关系可视化编程技术•所见即所得的交互编程•基于事件驱动的原理•可以使用模板自动生成部分代码•结合面向对象编程技术3、编程规范•必要的内部注释•清晰的结构•良好的风格•严格的源代码管理•……程序的注释需要注意以下几点:–每个文件的开始部分应指明程序的主要内容、编写者、最后修改日期等信息,以利于管理。–每个过程或函数前应有简要的接口描述信息,如函数功能、参数要求、返回值或其他特别说明。–注释必须与程序一致,所以修改程序时,要注意对注释作相应的修改。–对程序段作注释,而不是对每个语句作注释。清晰的程序结构1.简单、直接地反映意图2.表达式的书写应一气呵成3.嵌套不宜过深4.避免使用GOTO语句5.避免使用全局变量(通常是设计问题)其他规范1.排版格式的规范化2.文件名、过程名、变量名的规范化3.不要直接使用数字……参考阅读《代码大全》10.3系统测试•测试的目的(概念)•测试的类型、步骤•测试技术•测试用例的设计目前,检验软件有三种手段:动态检查、静态检查和正确性证明。•程序正确性证明技术目前还处于初级阶段,•静态检查指人工评审软件文档或程序,发现其中的错误(代码审查、代码走查、同行评审)。•动态检查就是测试。测试是为了发现错误而执行程序的过程。测试只能证明程序有错误,而不可能证明程序没有错误。系统测试(1)测试是指“用意在发现错误而执行一个程序的过程”;(2)一个好的测试用例是指这个测试用例有很高的概率可以发现一个尚未发现的错误;(3)一个成功的测试是指它成功地发现了一个尚未发现的错误。测试的关键问题是如何设计测试用例,即设计一批测试数据,通过有限的测试用例,在有限的研制时间、研制经费的约束下,尽可能多地发现程序中的错误。10.3.1测试的目的10.3.2测试类型1.模块测试–也称单元测试,根据模块的功能说明检验每个单独的模块是否存在错误。2.联合测试–也称集成测试,检验模块及系统结构。3.确认测试–检验系统说明书的各项功能与性能是否实现,是否满足要求。也可称验收测试。4.系统测试–是对整个信息系统的测试,将硬件、软件、操作人员看作一个整体,来分析系统的功能与执行性能1、模块测试•模块测试又称单元测试,是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。•模块测试的目的在于发现各模块内部可能存在的各种差错。•模块测试需要从程序的内部结构出发设计测试用例,多个模块可以平行地独立进行单元测试。模块测试方法•模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其他模块。–驱动模块(driver,测试驱动开发方法强调•比如人工吹气测试自行车的气门芯,测试没有问题后再安装–桩模块(stub)──存根模块•某演员缺席使用替补,彩排继续模块测试工具比如常见的单元测试工具:–JUnit–NUnit•这些工具实质上是一种测试框架,一般提供一些基本接口,开发人员继承这个接口,来编写测试程序,而测试程序的具体运行交给框架来负责。•可以集成到开发环境中2、集成测试•将所有模块集成在一起所进行的系统功能的测试•集成测试的策略有多种:–一次性组装–自顶向下的组装–自底向上的组装一次性组装测试•Big-bangIntegration(一次性组装或整体拼装)–首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。自顶向下的集成测试•Top-downIntegration(自顶至下)–按系统程序结构,沿控制层次自顶向下进行组装。–通过设置下层模块为桩,检查控制流,较早地验证了主要的控制和判断点。–需要制作较多的桩模块,并且桩模块不能返回真实的数据。自顶向下的集成测试自底向上的集成测试•Bottom-upIntegration(自底向上)–从程序模块结构的最底层的模块开始组装和测试。–对于一个给定层次的模块,它的子模块及其下属模块已经组装并测试完成,所以不再需要桩模块。–要到最后才窥得全貌,重大结构问题不能及早发现3、确认测试•确认测试主要是进行功能的有效性测试。•运用黑盒测试的技术,验证被测软件是否满足需求规格说明书列出的需求。•目的是使软件符合需求,获得客户的确认,为验收作准备α测试和β测试•α测试和β测试–α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。–β测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开发者。回归测试•回归测试–当软件发生变化后(例如:增加了新的模块、修改了程序模块后),可能使得原来通过测试的功能不能正常运行,回归测试就是通过重新执行已经执行过的测试来保证改动过的程序的正确性。–回归测试可以用人工来执行所有测试用例的一个子集,或者采用捕捉回放工具来进行(自动测试工具)。•回归测试–当软件发生变化后(例如:增加了新的模块、修改了程序模块后),可能使得原来通过测试的功能不能正常运行,回归测试就是通过重新执行已经执行过的测试来保证改动过的程序的正确性。–回归测试可以用人工来执行所有测试用例的一个子集,或者采用捕捉回放工具来进行(自动测试工具)。回归测试的概念4、系统测试•系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。•系统测试为系统的正式运行做准备,也可称为试运行。系统测试的内容•功能测试–在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。•可靠性测试–平均失效间隔时间MTBF(MeanTimeBetweenFailures)–因故障而停机的时间MTTR(MeanTimeToRepairs)•强度测试(压力测试)–检查在系统运行环境非正常乃至发生故障的情况下,系统可以运行到何种程度•性能测试–检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。系统测试的内容(续)•恢复测试–证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。–采用人工模拟硬件故障,故意造成软件出错。•启动/停止测试–验证在机器启动及关机阶段,软件系统正确处理的能力。–反复启动软件系统,例如操作系统自举、网络的启动、应用程序的调用等。–在尽可能多的情况下关机。系统测试的内容(续)•配置测试–检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。–包括配置命令测试、循环配置测试、修复测试。•安全性测试–检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞。•可使用性测试–从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。系统测试的内容(续)•可支持性测试–验证系统的支持策略对于公司与用户方面是否切实可行。•安装测试–对系统安装进行测试,找出在安装过程中出现的错误。–系统的每一部分是否都齐全;–所有文件是否都已产生并确有所需要的内容;–硬件的配置是否合理,等等系统测试的内容(续)•兼容性测试–验证软件产品在不同版本之间的兼容性。–有两类基本的兼容性测试:向下兼容、交错兼容•容量测试–检验系统的能力最高能达到什么程度。–对于信息检索系统,让它使用频率达到最大。–在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力,也称压力测试。•文档测试–检查用户文档(如用户手册)的清晰性和精确性。10.3.3测试技术•黑箱测试/黑盒测试•白箱测试/白盒测试1、黑箱测试•这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序模块的详细说明,检查程序的功能是否符合它的功能说明。•黑盒测试又叫做功能测试或数据驱动测试。黑箱的穷举测试•用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。•但这是不可能的。举例:–假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:–可能采用的测试数据组:–232×232=264–如果测试一组数据需要1毫秒,一年工作365×24小时,完成所有测试需5亿年。2、白箱测试•此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑结构进行测试。•通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白箱的穷举测试•对一个具有多重选择和循环嵌套的程序,不同的路径数目可能也是天文数字。–给出一个小程序的流程图,它包括了一个执行20次的循环。–包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒–一年工作365×24小时–测试完需3170年。使用测试用例•不论使用什么测试技术,我们都不可能采用穷举测试,如何选择测试用例,达到:以尽可能少的数据发现尽可能多的错误•一个测试用例就是为了测试某个目标(模块、功能、性能)而准备的一份输入数据及其预期结果3、测试用例的设计•设计测试用例时,根据黑盒技术和白盒技术的原理,可以有不同的方法:–逻辑覆盖法(白盒)–等价类划分法(黑盒)–边界值分析法(黑盒)测试用例设计——逻辑覆盖•逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,属于白盒测试。•根据覆盖测试的目的不同,逻辑覆盖分为:–语句覆盖–判定覆盖–条件覆盖–条件组合覆盖–路径覆盖逻辑覆盖举例(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1TTFFabdce语句覆盖•语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。–在图例中,正好所有的可执行语句都在路径L1上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。•测试用例的设计格式如下–【输入的(A,B,X),输出的(A,B,X)】•为图例设计满足语句覆盖的测试用例是:–【(2,

1 / 76
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功