《《编码测试和维护》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《编码测试和维护》PPT课件.ppt(55页珍藏版)》请在金锄头文库上搜索。
1、第六章 编 码编 码l编码概念l程序设计语言的选择l编码风格l编码工具 编码概念l编码把软件设计的结果翻译成计算机可以运行的形式(用某种程序设计语言书写的程序)l软件设计文档 源程序 (不可执行的) (可执行的)编码编码程序设计实验P98l从实验结果可看出,要求清晰性好的程序一般效率较低,而要求效率高的程序往往清晰度不太好。l对于大多数模块,编码时应把简明清晰放在第一位。l如果个别模块要求特别高的效率,就应把具体的要求告诉程序员,以便做特殊的处理。程序设计语言的选择lP102l选择适合应用领域的语言(表6.2 P104)l系统用户的要求l可以得到的软件工具l软件可移植性要求l人的因素l工程规模
2、编码风格 代码文档化代码文档化:注释:注释 数据说明数据说明:统一规范:统一规范 语句构造语句构造:简单、直接和可读性:简单、直接和可读性 I/O:人人机交互、提示、出错处理机交互、提示、出错处理效率效率:程序运行时间、存储效率、:程序运行时间、存储效率、 I/O效率效率编码工具l编译程序l开发编译程序l优化编译程序l代码管理工具lMAKElSCCSlRCS第八章 测试软件测试的重要性 无论怎样强调软件的重要性和它对软件可靠性无论怎样强调软件的重要性和它对软件可靠性的影响都不过分。目前软件测试仍然是保证软件质的影响都不过分。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编
3、码量的关键步骤,它是对软件规格说明、设计和编码的最后复审。的最后复审。 软件测试的工作量往往软件测试的工作量往往占软件开发总工作量的占软件开发总工作量的40%以上以上,在极端情况,测试那种关系生命安全的,在极端情况,测试那种关系生命安全的软件所花费的成本,可能相当于软件工程其他开发软件所花费的成本,可能相当于软件工程其他开发步骤总成本的步骤总成本的35倍。倍。 软软 件件 测测 试试7.1 软件测试概述软件测试概述7.2 软件测试的组织与管理软件测试的组织与管理7.3 测试方法测试方法7.1 软件测试概述软件测试概述l软件测试的目的软件测试的目的l软件测试的定义软件测试的定义软件测试的目的软件
4、测试的目的l基于不同的立场,存在着两种完全不基于不同的立场,存在着两种完全不同的测试目的。同的测试目的。l从从用户的角度用户的角度出发,普遍希望通过软出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。以考虑是否可接受该产品。l从从软件开发者的角度软件开发者的角度出发,则希望测出发,则希望测试成为表明软件产品中不存在错误的试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信户的要求,确立人们对软件质量的信心。心。软件测试目的软件测试目的(1) 测试是测试是程序
5、的执行过程程序的执行过程,目的在,目的在于于发现错误发现错误;(2) 一个好的测试用例在于一个好的测试用例在于能发现至能发现至今未发现的错误今未发现的错误;(3) 一个成功的测试是一个成功的测试是发现了至今未发现了至今未发现的错误的测试发现的错误的测试。l换言之,测试的目的是换言之,测试的目的是l 想想以最少的时间和人力,系统地找以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷出软件中潜在的各种错误和缺陷。如。如果我们成功地实施了测试,我们就能果我们成功地实施了测试,我们就能够发现软件中的错误。够发现软件中的错误。l 测试的附带收获是,它能够测试的附带收获是,它能够证明软证明软件的功能
6、和性能与需求说明相符合件的功能和性能与需求说明相符合。l 实施测试收集到的测试结果数据为实施测试收集到的测试结果数据为可靠性分析提供了依据。可靠性分析提供了依据。l 测试不能表明软件中不存在错误,测试不能表明软件中不存在错误,它只能说明软件中存在错误它只能说明软件中存在错误。软件测试的定义软件测试的定义l为了发现程序中的错误而为了发现程序中的错误而执行程序的过程。执行程序的过程。lP112软件测试的定义(续)软件测试的定义(续)l软件测试的依据是规格说明书、设计文档软件测试的依据是规格说明书、设计文档和使用说明书,如果设计有错误,测试的和使用说明书,如果设计有错误,测试的质量就难以保证。质量就
7、难以保证。l较理想的做法是:对软件的开发过程,按较理想的做法是:对软件的开发过程,按软件工程各阶段形成的结果,分别进行严软件工程各阶段形成的结果,分别进行严格审查。格审查。7.2 软件测试的组织与管理软件测试的组织与管理l软件测试的人员组织软件测试的人员组织l软件测试的步骤软件测试的步骤软件测试的人员组织软件测试的人员组织l需求审查需求审查l系统分析员、软件开发管理者,软件设计、系统分析员、软件开发管理者,软件设计、开发和测试人员以及用户开发和测试人员以及用户l设计评审设计评审 l系统分析员、软件设计人员、测试负责人系统分析员、软件设计人员、测试负责人l程序的测试程序的测试l由具有一定的分析、
8、设计和编程经验的专由具有一定的分析、设计和编程经验的专业人员组成业人员组成软件测试的步骤软件测试的步骤l单元测试单元测试l集成测试集成测试l确认测试确认测试l系统测试系统测试单元测试单元测试l l单元测试单元测试:集中对用源代码实现的每:集中对用源代码实现的每一个程序单元进行测试,检查各个程一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。序模块是否正确地实现了规定的功能。集成测试集成测试l l集成测试:集成测试:把已测试过的模块组装起把已测试过的模块组装起来,主要对与设计相关的软件体系结来,主要对与设计相关的软件体系结构的构造进行测试。构的构造进行测试。l非渐增式集成非渐增式
9、集成l渐增式集成渐增式集成渐增式集成渐增式集成l自顶向下的渐增式集成自顶向下的渐增式集成l深度优先深度优先l广度优先广度优先l自底向上的渐增式集成自底向上的渐增式集成(1) 自顶向下的集成方式自顶向下的集成方式l这种集成方式将模块这种集成方式将模块按系统程序结构按系统程序结构,沿控制层次自顶向下进行组装沿控制层次自顶向下进行组装。l自顶向下的增殖方式在测试过程中较早自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。地验证了主要的控制和判断点。l选用按深度方向组装的方式,可以首先选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。实现和验证一个完整的软件功能。(2) 自底
10、向上的集成方式l这种组装的方式是从这种组装的方式是从程序模块程序模块结构的最底层的模块开始组装结构的最底层的模块开始组装和测试和测试。l自顶向下增殖的方式和自底向上自顶向下增殖的方式和自底向上增殖的方式各有优缺点。增殖的方式各有优缺点。l一般来讲,一种方式的优点是另一般来讲,一种方式的优点是另一种方式的缺点。一种方式的缺点。确认测试确认测试l l确认测试:确认测试:则是要检查已实现的软件则是要检查已实现的软件是否满足了需求规格说明中确定了的是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、各种需求,以及软件配置是否完全、正确。正确。系统测试系统测试l l系统测试:系统测试:把已经
11、经过确认的软件纳把已经经过确认的软件纳入实际运行环境中,与其它系统成份入实际运行环境中,与其它系统成份组合在一起进行测试。组合在一起进行测试。7.3 测试方法测试方法l程序测试程序测试静态测试静态测试动态测试动态测试代码会审代码会审走查走查办公桌检查办公桌检查黑盒测试黑盒测试白盒测试白盒测试黑盒测试黑盒测试l这种方法是把这种方法是把测试对象测试对象看做看做一个一个黑盒黑盒子子,测试人员完全不考虑程序内部的,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是需求规格说明书,检查程序的功能是否符合它的功能说明。否符合它的功能
12、说明。l黑盒测试又叫做黑盒测试又叫做功能测试功能测试或或数据驱动数据驱动测试测试。l黑盒测试方法是在程序接口上进行测试,黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误主要是为了发现以下错误: :l 是否有不正确或遗漏了的功能是否有不正确或遗漏了的功能? ?l 在接口上,在接口上,输入能否正确地接受输入能否正确地接受? ? 能否输出正确的结果能否输出正确的结果? ?l 是否有数据结构错误或外部信息是否有数据结构错误或外部信息( (例例如数据文件如数据文件) )访问错误访问错误? ?l 性能上是否能够满足要求性能上是否能够满足要求? ?l 是否有初始化或终止性错误是否有初始化或终止性错
13、误? ?黑盒测试黑盒测试l用黑盒测试发现程序中的错误,必须在用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件所有可能的输入条件和输出条件中确定中确定测试数据,来检查程序是否都能产生正测试数据,来检查程序是否都能产生正确的输出。确的输出。l但这是但这是不可能不可能的。的。黑盒测试黑盒测试l假设一个假设一个程序程序P有有输入量输入量X和和Y及及输出量输出量Z。在字长为在字长为32位的计算机上运行。若位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测取整数,按黑盒方法进行穷举测试:试:l可能采用的可能采用的 测试数据组:测试数据组: 232232 264 l如果测试一如果测试一 组
14、数据需要组数据需要1 1毫秒,一年工作毫秒,一年工作365 24小小时,完成所有测试需时,完成所有测试需5亿亿年。年。白盒测试白盒测试l此方法此方法把测试对象看做一个透明的盒子把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。对程序所有逻辑路径进行测试。l通过在不同点检查程序的状态,确定实通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此际的状态是否与预期的状态一致。因此白盒测试又称为白盒测试又称为结构测试结构测试或或逻辑驱动测逻辑驱
15、动测试试。l软件人员使用白盒测试方法,主要想对软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:程序模块进行如下的检查:l 对程序模块的所有独立的执行路径至对程序模块的所有独立的执行路径至少测试一次;少测试一次;l 对所有的逻辑判定,取对所有的逻辑判定,取“真真”与取与取“假假”的两种情况都至少测试一次;的两种情况都至少测试一次;l 在循环的边界和运行界限内执行循环在循环的边界和运行界限内执行循环体;体;l 测试内部数据结构的有效性等。测试内部数据结构的有效性等。白盒测试白盒测试l对一个具有对一个具有多重选择和循环嵌套多重选择和循环嵌套的程序,的程序,不同的路径数目可能是天文数字不同的
16、路径数目可能是天文数字。l给出一个小程序的流程图,它包括了一给出一个小程序的流程图,它包括了一个执行个执行20次的循环。次的循环。白盒测试白盒测试l包含的不同执行路径数达包含的不同执行路径数达520条,对每一条条,对每一条路径进行测试需要路径进行测试需要1毫秒,假定一年工作毫秒,假定一年工作365 24小时,要想把所有路径测试完,需小时,要想把所有路径测试完,需3170年。年。白盒测试白盒测试测试阶段的信息流测试阶段的信息流调试(调试(Debug)l软件调试是在进行了成功的测试之后才软件调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,调试开始的工作。它与软件测试不同,调试的任务是的
17、任务是进一步诊断和改正程序中潜在进一步诊断和改正程序中潜在的错误的错误。l调试活动由两部分组成:调试活动由两部分组成:l 确定程序中可疑错误的确切性质和位置。l 对程序(设计,编码)进行修改,排除这个错误。l调试工作是一个具有很强技巧性的工作。调试工作是一个具有很强技巧性的工作。l软件运行失效或出现问题,往往只是潜软件运行失效或出现问题,往往只是潜在错误的外部表现在错误的外部表现,而外部表现与内在,而外部表现与内在原因之间常常没有明显的联系。如果要原因之间常常没有明显的联系。如果要找出真正的原因,排除潜在的错误,不找出真正的原因,排除潜在的错误,不是一件易事。是一件易事。l可以说,可以说,调试
18、是通过现象,找出原因的调试是通过现象,找出原因的一个思维分析的过程。一个思维分析的过程。调试(调试(Debug)调试的步骤调试的步骤(1) 从错误的外部表现形式入手,确定程从错误的外部表现形式入手,确定程序中出错位置;序中出错位置;(2) 研究有关部分的程序,找出错误的内研究有关部分的程序,找出错误的内在原因;在原因;(3) 修改设计和代码,以排除这个错误;修改设计和代码,以排除这个错误;(4) 重复进行暴露了这个错误的原始测试重复进行暴露了这个错误的原始测试或某些有关测试。或某些有关测试。第八章第八章 维维 护护软件维护软件维护工作流程工作流程决定软件可维护性的因素决定软件可维护性的因素P1
19、531. 可可理理解解性性:软软件件可可理理解解性性表表现现为为外外来来读读者者理理解解软软件件的结构、接口、功能和内部过程的难易程度。的结构、接口、功能和内部过程的难易程度。2. 可可测测试试性性:诊诊断断和和测测试试的的难难易易程程度度主主要要取取决决于于软软件件容容易易理理解解的的程程度度。良良好好的的文文档档对对诊诊断断和和测测试试是是至至关关重重要要的的。可可用用的的测测试试工工具具和和调调试试工工具具,以以及及以以前前设设计的测试过程也都是非常重要的。计的测试过程也都是非常重要的。3. 可可修修改改性性:软软件件容容易易修修改改的的程程度度设设计计原原理理和和规规则则直直接接有有关
20、关。耦耦合合、内内聚聚、局局部部化化,控控制制域域与与作作用用域域的的关系等等,都影响软件的可修改性。关系等等,都影响软件的可修改性。 上述三个可维护性因素是紧密相关的。维护人上述三个可维护性因素是紧密相关的。维护人员在正确理解一个程序之前根本不可能修改它;如员在正确理解一个程序之前根本不可能修改它;如果不能进行完善的诊断和测试,则表面正确的修改果不能进行完善的诊断和测试,则表面正确的修改可能引进其他故障。可能引进其他故障。 提高可维护性的方法提高可维护性的方法l l建立明确的软件质量目标建立明确的软件质量目标l l使用提高软件质量的技术和工具使用提高软件质量的技术和工具l l进行明确的质量保
21、证审查进行明确的质量保证审查l l选择可维护的程序设计语言选择可维护的程序设计语言l l改进程序的文档改进程序的文档文文 档档 文文档档是是影影响响软软件件可可维维护护性性的的决决定定因因素素。由由于于长长期期使使用用的的大大型型软软件件系系统统在在使使用用过过程程中中必必然然会经受多次修改,所以文档比程序代码更重要。会经受多次修改,所以文档比程序代码更重要。 文档的分类文档的分类p151l用户文档用户文档l用户手册用户手册l操作手册操作手册l维护修改建议维护修改建议l软件需求软件需求(规格规格)说明书说明书l开发文档开发文档l项目开发计划项目开发计划l可行性研究报告可行性研究报告l软件需求软
22、件需求(规格规格)说明书说明书l概要设计说明书概要设计说明书l详细设计说明书详细设计说明书l管理文档管理文档l测试计划测试计划l测试报告测试报告l开发进度月报开发进度月报l开发总结报告开发总结报告课堂作业课堂作业l结构化分析方法中使用的工具主要包括哪结构化分析方法中使用的工具主要包括哪些些?它们各有什么作用它们各有什么作用?(P44)l阐述数据流图的分层思想(阐述数据流图的分层思想(P44)l加工逻辑描述工具有那些加工逻辑描述工具有那些?(P40)l影响模块独立性的因素有那些?这些因素影响模块独立性的因素有那些?这些因素各有什么类型(各有什么类型(P59)l将将DFD图映射为软件结构图的方法(图映射为软件结构图的方法(P70)l详细设计的工具有哪些?(详细设计的工具有哪些?(P88)l常见的编码工具有哪些?常见的编码工具有哪些? (P107)l文档包含哪些类型?(文档包含哪些类型?(P151)