软件的编码与测试ppt课件

上传人:m**** 文档编号:568254070 上传时间:2024-07-23 格式:PPT 页数:68 大小:1.08MB
返回 下载 相关 举报
软件的编码与测试ppt课件_第1页
第1页 / 共68页
软件的编码与测试ppt课件_第2页
第2页 / 共68页
软件的编码与测试ppt课件_第3页
第3页 / 共68页
软件的编码与测试ppt课件_第4页
第4页 / 共68页
软件的编码与测试ppt课件_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《软件的编码与测试ppt课件》由会员分享,可在线阅读,更多相关《软件的编码与测试ppt课件(68页珍藏版)》请在金锄头文库上搜索。

1、第5章 软件的编码与测试教学目标教学内容 5.1 编码设计的目的 5.2 程序设计语言 5.3 编码风格 5.4 软件测试 5.5 测试用例的设计 5.6 测试步骤 5.7 调试技术1第5章 软件的编码与测试 软件工程导论 教学目标教学目标n掌握程序设计语言特点和选择;n掌握程序编码风格;n掌握软件测试的概念、目的、原则和测试的方法;n重点掌握软件测试用例的设计;n了解设计语言的分类,程序调试的过程和基本方法。2第5章 软件的编码与测试 软件工程导论5.1 编码设计的目的n所谓编码,是使用选定的程序设计语言,把模块的过程描述翻译为用该语言书写的源程序。n源程序不仅要求语法上的正确性,还要求源程

2、序具有良好的结构性和良好的程序设计风格 。 n在程序编写时应考虑到,所写的程序将被别人阅读,一定要尽量使程序写得容易被人读懂。n目前,人们编写源程序还不能使用自然语言,只能用某种程序设计语言 。3第5章 软件的编码与测试 软件工程导论5.2 程序设计语言n程序设计语言的分类 自20世纪60年代以来,世界上公布的程序设计语言已有上千种之多,但是只有很小一部分得到了广泛的应用。n程序设计语言的选择 语言选择的合适,会使编码困难减少,程序测试量减少,并且可以得到易读、易维护的软件。 4第5章 软件的编码与测试 软件工程导论5.2.1 程序设计语言的分类 从发展历程来看程序设计语言可以分为四代:第一代

3、语言(机器语言)n机器语言是由二进制0、1代码指令构成,不同的CPU具有不同的指令系统。n机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行分配,编程效率极低。n目前这种语言已经被淘汰。5第5章 软件的编码与测试 软件工程导论第二代语言(汇编语言) n汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系。n缺点:难学难用、容易出错、维护困难等。n优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率高。n从软件工程角度来看,只有在高级语言不能满足设计要求,或不具备支持某种特定功能的技术性能(如特殊的输入输出)时,汇编语言才被使用。6第5章 软件的编码与测试 软件工程

4、导论第三代语言(高级语言) n高级语言是面向用户的、基本上独立于计算机种类和结构的语言。n形式上接近于算术语言和自然语言,概念上接近于人们通常使用的概念。n一个命令可以代替几条、几十条甚至几百条汇编语言的指令。n优点:优点:易学易用,通用性强,应用广泛。n高级语言种类繁多,我们可以从应用特点和对客观系统的描述两个方面对其进一步分类。7第5章 软件的编码与测试 软件工程导论从应用角度分类 n基础语言:基础语言:也称通用语言。历史悠久,流传很广,有大量的已开发的软件库,拥有众多的用户,为人们所熟悉和接受。 如:FORTRAN、COBOL、BASIC、ALGOL等。 n结构化语言:结构化语言:直接支

5、持结构化的控制结构,具有很强的过程结构和数据结构能力。 如:PASCAL、C、Ada。n专用语言专用语言: 是为某种特殊应用而专门设计的语言,通常具有特殊的语法形式。应用比较广泛的有:APL语言、FORTH语言、LISP语言。8第5章 软件的编码与测试 软件工程导论从客观系统的描述分类 n 面向过程语言: 其程序设计范式:“数据结构算法” 前面所介绍的程序设计语言都属此类。n面向对象语言: 其程序设计范式: “对象消息” 如:Delphi、Visual Basic、Java、C+等。9第5章 软件的编码与测试 软件工程导论第四代语言(简称4GL) n4GL是非过程化语言,编码时只需说明“做什么

6、”,不需描述算法细节。n两个典型应用:数据库查询和应用程序生成器是4GL的。n数据库查询语言(SQL)可以对数据库中的信息进行复杂的操作。用户只需将要查找的内容在什么地方、根据什么条件进行查找等信息告诉SQL,SQL将自动完成查找过程。应用程序生成器则是根据用户的需求“自动生成”满足需求的高级语言程序。10第5章 软件的编码与测试 软件工程导论第四代语言(简称4GL)n真正的4GL应该说还没有出现。目前,所谓的4GL大多是指基于某种语言环境上具有4GL特征的软件工具产品,如System Z、PowerBuilder、FOCUS等。n面向应用,为最终用户设计的一类程序设计语言。n优点:缩短应用开

7、发过程、降低维护代价、最大程度地减少调试过程中出现的问题、对用户友好等。11第5章 软件的编码与测试 软件工程导论5.2.2 程序设计语言的选择n在编码之前应选好适当的语言,持别是在大型软件的开发中更不能只局限于使用自己所熟悉的语言。n一般情况下,程序设计语言的选择常从以下几个方面考虑: 项目的应用领域、 算法与计算的复杂性、 数据结构的复杂性、效率、可移植性、程序设计人员的水平、构造系统的模式等12第5章 软件的编码与测试 软件工程导论5.3 编码风格 所谓编码风格即书写源程序的习惯 。从软件工程要求出发,程序设计风格包括如下要求 :n使用好程序内部的文档 ;n数据说明原则;n语句结构的规则

8、;n输入、输出规则 ;n高效率的原则。 13第5章 软件的编码与测试 软件工程导论5.3.1使用好程序内部的文档 软件程序十文档 为了提高程序的可维护性,源代码也需要实现“文档化”。内部文档的组织包括:n标识符命名:具有鲜明的意义,能够提示程序对象代表的实体。n程序代码的视觉组织:逻辑结构清晰,层次分明(空格、空行、缩进 )。 n程序内部的注释 :序言性注释和功能性注释 14第5章 软件的编码与测试 软件工程导论5.3.2 数据说明原则一般而言,数据说明应遵循三个原则。(1) 数据说明的次序应当规范化,使数据属性容易查找,有利于测试、排错和维护;(2) 当多个变量名用一个语句说明时,应当对这些

9、变量按字母的顺序排列;(3) 如果设计了一个复杂的数据结构,应当使用注释,说明这个数据结构的固有特点。15第5章 软件的编码与测试 软件工程导论5.3.3 语句结构的规则(1)语句结构应遵从如下规则:n一行内只写一条语句,并采用适当的缩进格式;n不要刻意追求技巧性,使程序编写得过于紧凑;n要简单、清楚,直截了当地说明程序员的用意;n除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二;n首先保证程序正确,然后才要求提高速度;n让编译程序作简单的优化; 尽可能使用库函数;n避免使用临时变量而使可读性下降;n尽量用公共过程或子程序代替重复的功能代码段;n多使用括号以使表达式运算顺序清晰;16第

10、5章 软件的编码与测试 软件工程导论5.3.3 语句结构的规则(2)n避免不必要的转移;n用逻辑表达式代替分支嵌套;n避免使用空的ELSE语句和IFTHEN IF语句;n避免使用ELSE GOTO和ELSE RETURN结构;n使与判定相联系的动作尽可能地紧跟着判定;n避免采用过于复杂的条件测试;n尽量减少使用“否定”条件的条件语句;n避免过多使用循环嵌套和条件嵌套;n不要使GOTO语句相互交叉;n对递归定义的数据结构尽量使用递归过程。17第5章 软件的编码与测试 软件工程导论5.3.4 输入、输出规则n对所有的输入数据进行检验,从而识别错误的输入,以保证每个数据的有效性;n 检查输入项的各种

11、重要组合的合理性;n输入的步骤和操作尽可能简单;n输入数据时,允许使用自由格式输入;n应允许缺省值;n一批数据输入时,最好使用输入结束标志;n输入输出交叉时,要在屏幕上使用提示信息;n应保持输入格式与输入语句要求的一致性;n给所有的输出加注释,并设计输出报表格式。18第5章 软件的编码与测试 软件工程导论5.3.5 高效率的原则 运行效率:占用的处理机时间和存储空间 可以从以下三个方面着手:n提高程序运行效率; 程序编码使程序运行高效n提高存储器效率; 占用存储单元小,要求存取的时间短n提高输入/输出效率。19第5章 软件的编码与测试 软件工程导论5.4 软件测试n软件测试,是为了发现错误而执

12、行程序的过程。是对需求分析、设计和编码三个阶段进行的最终复审。 n软件测试在软件生存周期中横跨两阶段: 编码阶段(单元测试) 测试阶段(各种综合测试)n测试只能找出程序中的错误,但在未发现错误时,并不能证明程序中没有错误。20第5章 软件的编码与测试 软件工程导论5.4.1 软件测试目标n仅就测试本身而言,软件测试的目标是以最少的时间和人力发现软件中潜在的各种错误和缺陷(尽量多的发现错误)。 n一个好的测试方案是极可能发现至今为止尚未发现的错误的测试方案。n成功的测试是发现了至今为止尚未发现的错误的测试。n发现错误并不是软件测试的最终目标。n测试阶段的根本目标是尽可能多的发现并排除软件中潜藏的

13、错误,最终把一个高质量的软件系统交给用户使用。 21第5章 软件的编码与测试 软件工程导论5.4.2 软件测试的原则 n避免程序员检查自己的程序;n软件测试应尽早地、不断的进行;n软件测试不等于程序测试;n充分认识错误的群集现象;n测试用例应包括测试输入数据和与之对应的输出结果;n测试用例的输入数据应包括合理的输入和不合理的输入;n严格执行测试计划,避免测试的随意性。22第5章 软件的编码与测试 软件工程导论5.4.3 软件测试的方法 软件测试可以分为人工测试和基于计算机的测试。基于计算机的测试有两种方法:n黑盒测试 把程序看成一个黑盒子,完全不考虑其内部结构和处理过程,只检查程序的功能是否符

14、合它的需求规格说明。 n白盒测试 把程序看成一个打开的盒子,测试人员对程序所有逻辑路径进行测试,在不同检查点输出结果,与预期的结果比较,确定程序是否有错。 23第5章 软件的编码与测试 软件工程导论黑盒测试n黑盒测试是在软件的接口处进行的,一方面看其是否能对合法的数据得出正确的结果,另一方面看它是否能对非法的数据进行正确的处理。n黑盒测试法不能测试所有可能情况(一个例子)。n黑盒测试是一种宏观功能上的测试,该方法适合测试部门的测试人员或用户。n随着软件生产的组装技术的发展,黑盒测试方法会越来越普及。24第5章 软件的编码与测试 软件工程导论一个例子(黑盒测试) 假设一个程序P有输入量X和Y及输

15、出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试,可能采用的测试数据组: 232232264 如果测试一组数据需要1毫秒,一年工作36524小时完成所有测试需5亿年。25第5章 软件的编码与测试 软件工程导论白盒测试n白盒测试是对程序内部执行路径进行的。n穷尽测试(程序中每条可能的通路至少都应该执行一次)是不可能的。(一个例子)n白盒测试是一种程序级的微观上的测试,适合于很小单元的测试,以及从事软件底层工作、生产构件的测试人员进行的测试。n无论是黑盒测试还是白盒测试,都不可能进行完全测试,因此通过测试并不能证明程序是正确的。 n在实际应用中,常常采用白盒测试和黑盒测

16、试相结合的方法,对软件进行有限的测试。 26第5章 软件的编码与测试 软件工程导论一个例子(白盒测试) 它包括了一个执行20次的循环,不同执行路径数达520条,如果对每一条路径进行测试需要1毫秒,假定一年工作36524小时,要想把所有路径测试完,需3170年。27第5章 软件的编码与测试 软件工程导论5.4.4 软件测试的过程可见,测试过程需要三类输入:n软件配置:包括软件需求规格说明、软件设计规格说明、源程序代码等;n测试配置:包括测试计划、测试用例等。n测试工具:为了提高软件测试效率,减轻测试过程中手工劳动,可使用一些专门的测试工具。如测试数据自动生成测试结果分析程序、驱动测试的测试数据库

17、等。28第5章 软件的编码与测试 软件工程导论5.4.5 软件测试与开发各阶段的关系 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是按相反的顺序自底向上,逐步集成的过程:29第5章 软件的编码与测试 软件工程导论5.5 测试用例的设计n不同的测试用例发现程序错误的能力有很大的差别。n为了提高测试效率降低测试成本,应该精心选择测试用例。n因为不可能进行穷尽测试,所以,应该选用少量“最有效的”测试用例,尽可能做到完备测试。30第5章 软件的编码与测试 软件工程导论5.5.1 逻辑覆盖n属于白盒测试方法n是以程序内部的逻辑结构为基础n是对一系列测试过程总称,这组测试过程按照越来越完全

18、的程度进行路径的测试。n可分为: 语句覆盖、判定覆盖、条件覆盖、 判定-条件覆盖、条件组合覆盖、路径覆盖31第5章 软件的编码与测试 软件工程导论语句覆盖 n语句覆盖是指选择足够的测试数据,使被测程序中每个语句至少执行一次。n此例中,为了使每个语句都执行一次,程序执行的路径应该为,为此可以设计测试用例如下:输入:a=2,b=0,x=6输出:a=2,b=0,x=532第5章 软件的编码与测试 软件工程导论判定覆盖 n判定覆盖又称为分支覆盖,是指设计若干测试数据,使得程序中每个判定表达式的每个分支(真假)都至少执行一次。n两种组测试用例见下表(实例图如前): 格式为:输入的(a,b,x),输出的(

19、a,b,x)33第5章 软件的编码与测试 软件工程导论条件覆盖 n条件覆盖,是使得程序中每个判定表达式的每个条件的可能取值至少执行一次。n在此实例中,两个判定表达式共有四个条件:a1、b=0、a=2和x1,设它们为真时分别用T1、T2、T3、T4表示,为假时分别用F1、F2、F3、F4表示。34第5章 软件的编码与测试 软件工程导论判定-条件覆盖 n判定-条件覆盖是指选取足够多的测试数据,使得判定表达式中的每个条件的所有可能取值至少执行一次,而且每个判定表达式的所有可能的判定结果至少执行一次。n一种组测试用例见下表(实例图如前):35第5章 软件的编码与测试 软件工程导论条件组合覆盖 n条件组

20、合覆盖是指选取足够多的测试数据,使得每个判定表达式的所有可能的条件取值组合至少执行一次。n在此实例中,每个判定各有两个条件、四个条件组合(不要求各个判定的条件组合再进行组合)设计如下一组测试用例: 36第5章 软件的编码与测试 软件工程导论路径覆盖 n路径覆盖是指选取足够多的测试数据,覆盖程序中所有的路径。也就是要求覆盖每个判定可能取值的所有组合。n一种组测试用例见下表(实例图如前):37第5章 软件的编码与测试 软件工程导论5.5.2 等价分类法n一种典型的黑盒测试技术 。n设计出一个以发现若干类错误的测试用例,从而减少必须设计的测试用例的数目。n两个步骤: 划分等价类:把程序的输入域划分成

21、若干个 数据类; 设计测试用例:从每一类中选取少数代表性 的数据作为测试用例。38第5章 软件的编码与测试 软件工程导论划分等价类 n所谓等价类是指某个输入域的子集合,在该子集合中各个输入数据对于揭露程序中的错误都是等效的。n有效等价类是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合,反之则称为无效等价类。n在设计测试用例时,要同时考虑有效等价类和无效等价类的设计 n为了正确划分等价类,一方面要注意积累经验,另 一方面要正确分析被测程序的功能。此外,一般不 需要设计测试数据用来暴露编译程序肯定能发现的 错误。 39第5章 软件的编码与测试 软件工程导论等价类划分的启发式规则n如果

22、规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),两个无效等价类(输入值小于最小值或大于最大值);n如果规定了输入数据的个数,则类似地也可以划分出一个有效等价类和两个无效等价类;n如果规定了输入数据的一组值,则允许的输入值集合是一个有效的等价类,所有不允许的输入值集合是无效等价类;n如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则的)和若干个无效等价类(从各种不同角度违反规则的);n如果确知已划分的等价类中各元素在程序中处理方式不同,则应将此等价类进一步划分成更小的等价类。40第5章 软件的编码与测试 软件工程导论设计测试用例 n划分等价类后,就可以根

23、据等价类设计测试用例。主要使用以下两个步骤:n 设计一个新的测试用例以尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止;n 设计一个新的测试用例,使它覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止。n因为某些程序对某一输入错误的检查往往会屏蔽对其他输入错误的检查,所以必须对每一个无效等价类分别设计测试用例。41第5章 软件的编码与测试 软件工程导论一个实例n变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。n划分

24、等价类如下表所示: 42第5章 软件的编码与测试 软件工程导论设计测试用例如下表: 43第5章 软件的编码与测试 软件工程导论5.5.3 边界值分析法n一种黑盒测试方法,是对等价类划分方法的补充。n经验表明,大量的错误是发生在输入或输出范围的边界上。如数组的下标,循环的控制等的边界附近等最容易发生错误。n通常输入等价类与输出等价类的边界,就是应着重测试的边界情况。n应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。n选择测试用例的一般原则在很多方面与等价类划分方法类似 。44第5章 软件的编码与测试 软件工程导论5.5.4 错误猜测法n错误猜测法是指:依靠测试人员的经验和直觉,从各种可

25、能的测试方案中选出一些最可能引起程序出错的方案进行测试。n基本做法是:列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们设计测试方案。 n如输入数据为0,或输出数据为0;输入表格为空或输入表格只有一行等等。 45第5章 软件的编码与测试 软件工程导论5.5.5 实用综合测试策略 通常,在测试早期主要使用白盒测试方法,后期主要使用黑盒测试方法。其策略为:n在任何情况下都必须使用边界值分析方法。n必要时用等价类划分方法补充一些测试用例。n用错误猜测法再追加一些测试用例。n对照程序逻辑,设计足够的测试用例,以达到要求的覆盖标准。n如果程序的功能说明中含有输入条件的组合情况,则一开始就可选

26、用因果图法。46第5章 软件的编码与测试 软件工程导论5.6 测试步骤n测试过程也必须分步骤进行,后一个步骤在逻辑上是前一个步骤的继续。47第5章 软件的编码与测试 软件工程导论5.6.1 单元测试n又称模块测试。是针对软件设计的最小单位程序模块,进行正确性检验的测试工作。n目的在于发现模块内部可能存在的各种差错。 n在编写出源程序代码并通过编译程序的语法检查之后,就可以进行单元测试工作。n单元测试需要从程序的内部结构出发设计测试用例。n多个模块可以平行地独立进行单元测试。48第5章 软件的编码与测试 软件工程导论(一)单元测试的内容 n一般从5个方面进行测试:49第5章 软件的编码与测试 软

27、件工程导论模块接口测试 如果数据不能按预定要求进出模块,所有其他测试都是不切实际的。接口测试主要从如下几个方面考虑:n模块的形参和其驱动模块送来的参数的个数、类型、次序是否一致;n模块传送给被调用模块的参数与其桩模块的参数的个数、类型和次序是否一致;n模块传送给库函数的变量个数、类型次序是否正确;n全局变量的定义和用法在各个模块中是否一致;n所使用的外部文件的属性是否正确,打开文件的语句是否正确,缓冲区大小是否与记录长度相匹配。文件结束判断处理是否一致;50第5章 软件的编码与测试 软件工程导论局部数据结构测试 模块内部数据是否完整,内容、形式、相互关系是否有错常常是软件错误的主要来源。应做如

28、下考虑:n错误或不相容的数据说明或使用了尚未初始化的变量;n错误的初始值或不正确的缺省值;n错误的变量名或数据类型不相容;n溢出(上溢或下溢)或地址异常;n全局数据对模块的影响。51第5章 软件的编码与测试 软件工程导论重要路径测试 n重点测试由于错误计算、不正确的比较或不适当的控制流而造成的错误。常见错误如下:n运算的次序错误(误用了运算符的优先级);n混合运算对象的类型彼此不相容;n变量初始值不正确;n精度不够,或由于精度问题两个量不可能相等时,程序中却期待着相等条件的出现;n错误的修改循环变量,错误的或不可能达到的循环终止条件;n“差1”错(多循环1次或少循环1次);n当遇到发散的循环迭

29、代时循环不能终止。52第5章 软件的编码与测试 软件工程导论错误处理测试 好的模块设计应能预见出错的条件,并设置相应的出错处理。重点考虑下列问题:n对可能出现错误的描述是否难以理解;n出错的描述不足以对错误定位,或不足以确定出错的原因;n显示的错误与实际的错误不符;n对错误的条件处理不正确;n在对错误进行处理之前,错误条件已经引起系统的干预。53第5章 软件的编码与测试 软件工程导论边界测试n边界测试是单元测试中最后的、也可能是最重要的工作。n程序常常在边界上出现错误。n例如,在一段程序内有一个n次循环,当到达第n次循环时就有可能出错。n要特别注意数据流、控制流中恰好等于、大于或小于确定的比较

30、值时出错的可能性。要精心设计测试用例对这些地方进行测试。54第5章 软件的编码与测试 软件工程导论 (二)单元测试的步骤n 基于计算机的单元测试可为三个步骤进行: (1)配置测试环境驱动模块:一个“主程序”,接收测试数据,传给被测模块,打印结果。桩模块:接收被测模块的调用,可以做最少量的数据操作,打印相关结果,并把控制归还给调用它的模块。 桩模块是单元测试中重要的成本开销。 55第5章 软件的编码与测试 软件工程导论 (二)单元测试的步骤(2)编写测试数据。 以详细设计说明为依据,从程序的内部结构出发设计测试用例。主要采用白盒测试,以路径覆盖为最佳测试准则。同时辅之以黑盒测试用例,使之对任何合

31、理的输入和不合理的输入都能鉴别和响应。(3)进行多个模块的并行测试。n为了提高测试效率,在进行计算机测试之前,常常首先对源程序代码进行人工的静态测试。n人工测试和计算机测试是互相补充、相辅相成的,缺少其中任何一种方法都会使查找错误的效率降低。56第5章 软件的编码与测试 软件工程导论5.6.2 集成测试n主要目标是发现与接口有关的问题。n根据模块的组装方式有两种测试方式:1.非渐增式测试 把已经过测试的所有模块一次性组装在一起,然后进行整体测试。 这种测试往往不可能一次成功,查错和改错都很困难。使用较少。2.渐增式测试 把已经过测试的模块逐个进行组装,在组装的过程中进行测试,最后得到完整的系统

32、。这种测试方式也可在各模块没有进行测试的前题下进行。常用渐增式集成策略有三种:57第5章 软件的编码与测试 软件工程导论自顶向下集成n是从主控模块开始,沿着控制层次自顶向下进行组装。添加模块时可采用深度优先策略或广度优先策略进行。n具体步骤如下: 测试主控模块:用桩模块代替其直接附属模块; 根据添加策略每次添加一个实际模块进行测试; 进行回归测试。既重新执行以前做过的全部测试或部分测试,排除组装过程中引入新的错误; 重复上述和,直到所有模块已组装到系统中为止。n优点:能在测试早期对主要的控制或关键的判断进行检验 。n缺点:需建立桩模块,并存在一个逻辑次序问题。 58第5章 软件的编码与测试 软

33、件工程导论自底向上集成 n从最底层的模块开始,自底向上组装和测试。n具体步骤如下: 由驱动模块控制最底层模块的并行测试; 将低层模块组合族,由驱动模块对其进行测试; 用实际模块代替驱动模块,把它已测试的直属子模块组装成子系统; 为子系统配备驱动模块进行新的测试; 重复述上、,至到已组装到主模块为止。n优点:不需要建立桩模块 ,多个模块可并行测试 。n缺点:程序至到最后一个模块加上去才形成一个实体。这样对主要的控制直到最后才接触到。59第5章 软件的编码与测试 软件工程导论混合的集成测试 n前两种方式各有优缺点,通常混合起来测试。n对结构中较上层的使用自顶向下的集成方法,较下层的使用自底向上的集

34、成方法。 衍变的自顶向下的集成测试:强化对I/O模块和引入新算法模块的测试,并自底向上组装成为的子系统,然后由主模块开始自顶向下集成测试。 自底向上自顶向下的集成测试:首先对含读操作的子系统自底向上进行组装和测试,然后对含写操作的子系统自顶向下进行组装和测试。 回归测试:自顶向下测试所修改的模块及其子模块,然后将其视为子系统自下向上测试,检查该子系统与其上级模块接口是否适配。60第5章 软件的编码与测试 软件工程导论5.6.3 验收测试n又称为确认测试,主要由用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。n验收测试主要完成下面的工作:(1)有效性测试:在模拟

35、的环境(也许就是开发环境),运用黑盒测试法,验证软件是否满足需求规格说明书列出的需求。 两种结果:一是功能和性能与用户要求一致,软件是可以接受的。二是功能或性能与用户的要求有差距,这时就提交一份问题报告。 (2)软件配置复查:保证软件配置的所有成分都齐全,各方面的质量都符合要求。 61第5章 软件的编码与测试 软件工程导论(3)测试和测试n测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录错误和使用中遇到的问题。 测试是在受控的环境中进行的。n测试:开发者通常不在测试现场。用户记录下在测试过程中遇到的一切问题(真实的或想象的),并且定期把这些问题报告给开发者

36、。 测试是软件在开发者不能控制的环境中的“真实”应用。 接收到测试期间报告的问题之后,软件开发者对产品进行修改,并准备向全体客户发布最终的软件产品。62第5章 软件的编码与测试 软件工程导论5.6.4 系统测试n将通过验收测试的软件作为整个计算机系统的一个 元素,与计算机硬件、外设、支持软件、数据和人 员等其他系统元素结合在一起进行的综合测试。(1)恢复测试:检测重新初始化、数据恢复、重新 启动、检验点设置是否正确,以及人工干预的平均 恢复时间是否在允许范围内。(2)安全测试:检验系统是否有安全保密的漏洞。(3)强度测试:让系统处于资源的异常数量、异常 频率、异常批量的条件下检验系统的承受能力

37、。一 般取比平常限度高510倍的限度做测试用例。(4)性能测试:检查是否达到性能要求规格。这项 测试常常与强度测试相结合进行。 63第5章 软件的编码与测试 软件工程导论5.7 调试技术n软件调试是在测试发现错误之后诊断并排除错误的过程。n软件工程的根本目标是开发出高质量的完全符合用户需要的软件产品。因此,在进行成功的测试后必须进行软件调试。n调试的主要任务:一是确定程序中错误的确切性质和位置,二是对程序进行修改排除错误。n调试工作是一项极其复杂而繁重的脑力劳动,具有很强的技巧性。64第5章 软件的编码与测试 软件工程导论5.7.1 调试过程n调试过程从执行一个测试用例开始,如发现实测结果与预

38、期结果不一致,则表明在软件中存在错误或缺陷。n调试从错误的外部表现形式入手,确定出错位置,研究相关的程序代码和设计,查找内在原因。n结果有两种:一是找到了原因,然后加以改正,接着重复执行这个原始测试或某些相关测试,以确定是否排除了该错误或又引进了新的错误。二是没有找到原因,调试人员可以猜测一个原因,并设计附加测试用例来验证这个假设。如果发现所做的修正无效,则恢复程序的原来状态。重复这个过程直到找到出现问题的原因和有效的解决方法为止。65第5章 软件的编码与测试 软件工程导论调试工作是困难的 n心理因素:错误表象复杂、各种困扰极易使人丧 失信心。另外,调试能力也因人而异。n技术角度:软件错误具有

39、许多难以应负的特征:(1)表象和原因在程序中可能相距甚远。(2)表象可能时有时无。(3)表象实际上是由一些非错误原因引起的(如舍入不精确)。(4)很难再现与出现错误表象完全一样的输入条件,如实时应用中输入顺序不确定。(5)当其他错误得到改正时,某一错误表象可能会暂时消失,但并未实际排除。 66第5章 软件的编码与测试 软件工程导论5.7.2 调试技术n调试过程中主要采用下述调试策略:(1)强行排错(最常用的、效率较低):直接打印出内存中内容,希望从中找出错误原因。要有明确的目的,尽量减少无关信息的输出。(2)回溯法(小程序中常用):分析错误表象,确定症状位置,人工沿程序的控制流往回追踪源程序代

40、码,直到找到错误原因为止。(3)归纳法:把和错误有关的数据组织起来分析,导出一个或多个假设原因,证明或排除这些假设。(4)演绎法:设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因,如果测试表明某个假设的原因可能是真的原因,则对数据进行细化以精确定位错误。67第5章 软件的编码与测试 软件工程导论5.4.3 调试原则n在调试过程中,心理因素常常占主导地位。n查错的原则(1)注重头脑的分析思考,不要过分依赖计算机。(2)把调试工具仅当作辅助手段。(3)避免试探法,至多把它当作最后手段。(4)避开死胡同。n排错的原则(1)注意错误的群集现象。(2)提出的修改应能解释与之有关的全部线索。(3)慎重对待每一个错误的修改。68

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号