软件的编码与测试.ppt_第1页
软件的编码与测试.ppt_第2页
软件的编码与测试.ppt_第3页
软件的编码与测试.ppt_第4页
软件的编码与测试.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 第5章 软件的编码与测试 本章主要内容:程序设计语言特点和选择;程序编码风格;软件测试的概念 、目的、原则和测试的方法;软件测试用例的设计;设计语言的分类,程序 调试的过程和基本方法。 本章重点:结构化的编程风格。软件测试用例的设计, 软件测试的步骤、软件 测试用例的设计 。 本章难点:编码的语言选择及有关语言的知识。软件测试用例的设计 。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 第5章 软件的编码与测试 5.1 编码设计的目的 5.2 程序设计语言 5.3 编码风格 5.4 软件测试 5.5 测试用例的设计 5.6 测试步骤 5.7 调试技术 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.1 编码设计的目的 所谓编码,是使用选定的程序设计语言,把模块的过程描述翻译为用该 语言书写的源程序。 源程序不仅要求语法上的正确性,还要求源程序具有良好的结构性和良 好的程序设计风格 。 在程序编写时应考虑到,所写的程序将被别人阅读,一定要尽量使程序 写得容易被人读懂。 目前,人们编写源程序还不能使用自然语言,只能用某种程序设计语言 。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.2 程序设计语言 程序设计语言的分类 自20世纪60年代以来,世界上公布的程序设计语言已有上千种之多,但是 只有很小一部分得到了广泛的应用。 程序设计语言的选择 语言选择的合适,会使编码困难减少,程序测试量减少,并且可以得到易 读、易维护的软件。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.2.1 程序设计语言的分类 从发展历程来看程序设计语言可以分为四代: 第一代语言(机器语言) 机器语言是由二进制0、1代码指令构成,不同的CPU具有不同的指令系 统。 机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行 分配,编程效率极低。 目前这种语言已经被淘汰。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 第二代语言(汇编语言) 汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系 。 缺点:难学难用、容易出错、维护困难等。 优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率高 。 从软件工程角度来看,只有在高级语言不能满足设计要求,或不具备支 持某种特定功能的技术性能(如特殊的输入输出)时,汇编语言才被使 用。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 第三代语言(高级语言) 高级语言是面向用户的、基本上独立于计算机种类和结构的语言。 形式上接近于算术语言和自然语言,概念上接近于人们通常使用的概念 。 一个命令可以代替几条、几十条甚至几百条汇编语言的指令。 优点:易学易用,通用性强,应用广泛。 高级语言种类繁多,我们可以从应用特点和对客观系统的描述两个方面 对其进一步分类。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 从应用角度分类 基础语言:也称通用语言。历史悠久,流传很广,有大量的已开发的软 件库,拥有众多的用户,为人们所熟悉和接受。 如:FORTRAN、COBOL、BASIC、ALGOL等。 结构化语言:直接支持结构化的控制结构,具有很强的过程结构和数据 结构能力。 如:PASCAL、C、Ada。 专用语言: 是为某种特殊应用而专门设计的语言,通常具有特殊的语法 形式。应用比较广泛的有:APL语言、FORTH语言、LISP语言。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 从客观系统的描述分类 面向过程语言: 其程序设计范式:“数据结构算法” 前面所介绍的程序设计语言都属此类。 面向对象语言: 其程序设计范式: “对象消息” 如:Delphi、Visual Basic、Java、C+等。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 第四代语言(简称4GL) 4GL是非过程化语言,编码时只需说明“做什么”,不需描述算法细节。 两个典型应用:数据库查询和应用程序生成器是4GL的。 数据库查询语言(SQL)可以对数据库中的信息进行复杂的操作。用户只需 将要查找的内容在什么地方、根据什么条件进行查找等信息告诉SQL, SQL将自动完成查找过程。应用程序生成器则是根据用户的需求“自动生 成”满足需求的高级语言程序。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 第四代语言(简称4GL) 真正的4GL应该说还没有出现。目前,所谓的4GL大多是指基于某种语 言环境上具有4GL特征的软件工具产品,如System Z、PowerBuilder、 FOCUS等。 面向应用,为最终用户设计的一类程序设计语言。 优点:缩短应用开发过程、降低维护代价、最大程度地减少调试过程中 出现的问题、对用户友好等。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.2.2 程序设计语言的选择 在编码之前应选好适当的语言,持别是在大型软件的开发中更不能只局 限于使用自己所熟悉的语言。 一般情况下,程序设计语言的选择常从以下几个方面考虑: 项目的应用领域、 算法与计算的复杂性、 数据结构的复杂性、效率 、可移植性、程序设计人员的水平、构造系统的模式等 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.3 编码风格 所谓编码风格即书写源程序的习惯 。从软件工程要求出发,程序 设计风格包括如下要求 : 使用好程序内部的文档 ; 数据说明原则; 语句结构的规则; 输入、输出规则 ; 高效率的原则。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.3.1使用好程序内部的文档 软件程序十文档 为了提高程序的可维护性,源代码也需要实现“文档化”。内部文档的 组织包括: 标识符命名:具有鲜明的意义,能够提示程序对象代表的实体。 程序代码的视觉组织:逻辑结构清晰,层次分明(空格、空行、缩进 ) 。 程序内部的注释 :序言性注释和功能性注释 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.3.2 数据说明原则 一般而言,数据说明应遵循三个原则。 (1) 数据说明的次序应当规范化,使数据属性容易查找,有利于测试、排 错和维护; (2) 当多个变量名用一个语句说明时,应当对这些变量按字母的顺序排列 ; (3) 如果设计了一个复杂的数据结构,应当使用注释,说明这个数据结构 的固有特点。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.3.3 语句结构的规则(1) 语句结构应遵从如下规则: 一行内只写一条语句,并采用适当的缩进格式; 不要刻意追求技巧性,使程序编写得过于紧凑; 要简单、清楚,直截了当地说明程序员的用意; 除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二; 首先保证程序正确,然后才要求提高速度; 让编译程序作简单的优化; 尽可能使用库函数; 避免使用临时变量而使可读性下降; 尽量用公共过程或子程序代替重复的功能代码段; 多使用括号以使表达式运算顺序清晰; 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.3.3 语句结构的规则(2) 避免不必要的转移; 用逻辑表达式代替分支嵌套; 避免使用空的ELSE语句和IFTHEN IF语句; 避免使用ELSE GOTO和ELSE RETURN结构; 使与判定相联系的动作尽可能地紧跟着判定; 避免采用过于复杂的条件测试; 尽量减少使用“否定”条件的条件语句; 避免过多使用循环嵌套和条件嵌套; 不要使GOTO语句相互交叉; 对递归定义的数据结构尽量使用递归过程。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.3.4 输入、输出规则 对所有的输入数据进行检验,从而识别错误的输入,以保证每个数据 的有效性; 检查输入项的各种重要组合的合理性; 输入的步骤和操作尽可能简单; 输入数据时,允许使用自由格式输入; 应允许缺省值; 一批数据输入时,最好使用输入结束标志; 输入输出交叉时,要在屏幕上使用提示信息; 应保持输入格式与输入语句要求的一致性; 给所有的输出加注释,并设计输出报表格式。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.3.5 高效率的原则 运行效率:占用的处理机时间和存储空间 可以从以下三个方面着手: 提高程序运行效率; 程序编码使程序运行高效 提高存储器效率; 占用存储单元小,要求存取的时间短 提高输入/输出效率。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.4 软件测试 软件测试,是为了发现错误而执行程序的过程。是对需求分析、设计和编 码三个阶段进行的最终复审。 软件测试在软件生存周期中横跨两阶段: 编码阶段(单元测试) 测试阶段(各种综合测试) 测试只能找出程序中的错误,但在未发现错误时,并不能证明程序中没有 错误。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.4.1 软件测试目标 仅就测试本身而言,软件测试的目标是以最少的时间和人力发现软件中潜 在的各种错误和缺陷(尽量多的发现错误)。 一个好的测试方案是极可能发现至今为止尚未发现的错误的测试方案。 成功的测试是发现了至今为止尚未发现的错误的测试。 发现错误并不是软件测试的最终目标。 测试阶段的根本目标是尽可能多的发现并排除软件中潜藏的错误,最终把 一个高质量的软件系统交给用户使用。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.4.2 软件测试的原则 避免程序员检查自己的程序; 软件测试应尽早地、不断的进行; 软件测试不等于程序测试; 充分认识错误的群集现象; 测试用例应包括测试输入数据和与之对应的输出结果; 测试用例的输入数据应包括合理的输入和不合理的输入; 严格执行测试计划,避免测试的随意性。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.4.3 软件测试的方法 软件测试可以分为人工测试和基于计算机的测试。基于计算机的测试有 两种方法: 黑盒测试 把程序看成一个黑盒子,完全不考虑其内部结构和处理过程,只检查 程序的功能是否符合它的需求规格说明。 白盒测试 把程序看成一个打开的盒子,测试人员对程序所有逻辑路径进行测试 ,在不同检查点输出结果,与预期的结果比较,确定程序是否有错。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 黑盒测试 黑盒测试是在软件的接口处进行的,一方面看其是否能对合法的数据得出 正确的结果,另一方面看它是否能对非法的数据进行正确的处理。 黑盒测试法不能测试所有可能情况(一个例子)。 黑盒测试是一种宏观功能上的测试,该方法适合测试部门的测试人员或用 户。 随着软件生产的组装技术的发展,黑盒测试方法会越来越普及。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 一个例子(黑盒测试) 假设一个程序P有输入量X和Y及输出量Z。 在字长为32位的计算机上运行。若X、Y取整 数,按黑盒方法进行穷举测试,可能采用的 测试数据组: 232232264 如果测试一 组数据需要1毫秒, 一年工作36524 小时完成所有测试需5亿年。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 白盒测试 白盒测试是对程序内部执行路径进行的。 穷尽测试(程序中每条可能的通路至少都应该执行一次)是不可能的。(一 个例子) 白盒测试是一种程序级的微观上的测试,适合于很小单元的测试,以及从事 软件底层工作、生产构件的测试人员进行的测试。 无论是黑盒测试还是白盒测试,都不可能进行完全测试,因此通过测试并不 能证明程序是正确的。 在实际应用中,常常采用白盒测试和黑盒测试相结合的方法,对软件进行有 限的测试。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 一个例子(白盒测试) 它包括了一个执行20次的循环,不同执行路径数达520条,如果对每一条路径 进行测试需要1毫秒,假定一年工作36524小时,要想把所有路径测试完,需 3170年。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.4.4 软件测试的过程 可见,测试过程需要三类输入: 软件配置:包括软件需求规格说明、软件设计规格说明、源程序代码等; 测试配置:包括测试计划、测试用例等。 测试工具:为了提高软件测试效率,减轻测试过程中手工劳动,可使用一些专 门的测试工具。如测试数据自动生成测试结果分析程序、驱动测试的测试数据 库等。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.4.5 软件测试与开发各阶段的关系 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是 按相反的顺序自底向上,逐步集成的过程: 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.5 测试用例的设计 不同的测试用例发现程序错误的能力有很大的差别。 为了提高测试效率降低测试成本,应该精心选择测试用例。 因为不可能进行穷尽测试,所以,应该选用少量“最有效的”测试用例,尽 可能做到完备测试。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.5.1 逻辑覆盖 属于白盒测试方法 是以程序内部的逻辑结构为基础 是对一系列测试过程总称,这组测试过程按照越来越完全的程度进行路径的 测试。 可分为: 语句覆盖、判定覆盖、条件覆盖、 判定-条件覆盖、条件组合覆盖、路径覆盖 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 语句覆盖 语句覆盖是指选择足够的测试数据,使被测程序中每个语句至少执行一次 。 此例中,为了使 每个语句都执行一 次,程序执行的路 径应该为, 为此可以设计测试 用例如下: 输入:a=2,b=0,x=6 输出:a=2,b=0,x=5 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 判定覆盖 判定覆盖又称为分支覆盖,是指设计若干测试数据,使得程序中每个判定 表达式的每个分支(真假)都至少执行一次。 两种组测试用例见下表(实例图如前): 格式为:输入的(a,b,x),输出的(a,b,x) 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 条件覆盖 条件覆盖,是使得程序中每个判定表达式的每个条件的可能取值至少执行一 次。 在此实例中,两个判定表达式共有四个条件:a1、b=0、a=2和x1,设它们 为真时分别用T1、T2、T3、T4表示,为假时分别用F1、F2、F3、F4表示。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 判定-条件覆盖 判定-条件覆盖是指选取足够多的测试数据,使得判定表达式中的每个条 件的所有可能取值至少执行一次,而且每个判定表达式的所有可能的判定 结果至少执行一次。 一种组测试用例见下表(实例图如前): 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 条件组合覆盖 条件组合覆盖是指选取足够多的测试数据,使得每个判定表达式的所有可能 的条件取值组合至少执行一次。 在此实例中,每个判定各有两个条件、四个条件组合(不要求各个判定的条 件组合再进行组合)设计如下一组测试用例: 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 路径覆盖 路径覆盖是指选取足够多的测试数据,覆盖程序中所有的路径。也就是要求 覆盖每个判定可能取值的所有组合。 一种组测试用例见下表(实例图如前): 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.5.2 等价分类法 一种典型的黑盒测试技术 。 设计出一个以发现若干类错误的测试用例,从而减少必须设计的测试用例的 数目。 两个步骤: 划分等价类:把程序的输入域划分成若干个 数据类; 设计测试用例:从每一类中选取少数代表性 的数据作为测试用例。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 划分等价类 所谓等价类是指某个输入域的子集合,在该子集合中各个输入数据对于揭 露程序中的错误都是等效的。 有效等价类是指对于程序的规格说明来说是合理的,有意义的输入数据构 成的集合,反之则称为无效等价类。 在设计测试用例时,要同时考虑有效等价类和无效等价类的设计 为了正确划分等价类,一方面要注意积累经验,另 一方面要正确分析被测程序的功能。此外,一般不 需要设计测试数据用来暴露编译程序肯定能发现的 错误。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 等价类划分的启发式规则 如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此 范围内),两个无效等价类(输入值小于最小值或大于最大值); 如果规定了输入数据的个数,则类似地也可以划分出一个有效等价类和 两个无效等价类; 如果规定了输入数据的一组值,则允许的输入值集合是一个有效的等价 类,所有不允许的输入值集合是无效等价类; 如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类 (符合规则的)和若干个无效等价类(从各种不同角度违反规则的); 如果确知已划分的等价类中各元素在程序中处理方式不同,则应将此等 价类进一步划分成更小的等价类。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 设计测试用例 划分等价类后,就可以根据等价类设计测试用例。主要使用以下两个步骤 : 设计一个新的测试用例以尽可能多地覆盖尚未被覆盖的有效等价类, 重复这一步骤直到所有有效等价类都被覆盖为止; 设计一个新的测试用例,使它覆盖一个而且只覆盖一个尚未被覆盖的 无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止。 因为某些程序对某一输入错误的检查往往会屏蔽对其他输入错误的检查, 所以必须对每一个无效等价类分别设计测试用例。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 一个实例 变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字 符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合 。请用等价分类法设计测试用例。 划分等价类如下表所示: 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 设计测试用例如下表: 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.5.3 边界值分析法 一种黑盒测试方法,是对等价类划分方法的补充。 经验表明,大量的错误是发生在输入或输出范围的边界上。如数组的下标, 循环的控制等的边界附近等最容易发生错误。 通常输入等价类与输出等价类的边界,就是应着重测试的边界情况。 应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。 选择测试用例的一般原则在很多方面与等价类划分方法类似 。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.5.4 错误猜测法 错误猜测法是指:依靠测试人员的经验和直觉,从各种可能的测试方案 中选出一些最可能引起程序出错的方案进行测试。 基本做法是:列举出程序中可能有的错误和容易发生错误的特殊情况, 并且根据它们设计测试方案。 如输入数据为0,或输出数据为0;输入表格为空或输入表格只有一行等 等。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.5.5 实用综合测试策略 通常,在测试早期主要使用白盒测试方法,后期主要使用黑盒测试方法 。其策略为: 在任何情况下都必须使用边界值分析方法。 必要时用等价类划分方法补充一些测试用例。 用错误猜测法再追加一些测试用例。 对照程序逻辑,设计足够的测试用例,以达到要求的覆盖标准。 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果 图法。 如何设计编写和设计软件测试用例 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.6 测试步骤 测试过程也必须分步骤进行,后一个步骤在逻辑上是前一个步骤的继续。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.6.1 单元测试 又称模块测试。是针对软件设计的最小单位程序模块,进行正确性检验的 测试工作。 目的在于发现模块内部可能存在的各种差错。 在编写出源程序代码并通过编译程序的语法检查之后,就可以进行单元测试 工作。 单元测试需要从程序的内部结构出发设计测试用例。 多个模块可以平行地独立进行单元测试。 单元测试工具C+ Test简介 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 (一)单元测试的内容 一般从5个方面进行测试: 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 模块接口测试 如果数据不能按预定要求进出模块,所有其他测试都是不切实际的。接口测 试主要从如下几个方面考虑: 模块的形参和其驱动模块送来的参数的个数、类型、次序是否一致; 模块传送给被调用模块的参数与其桩模块的参数的个数、类型和次序是否一致 ; 模块传送给库函数的变量个数、类型次序是否正确; 全局变量的定义和用法在各个模块中是否一致; 所使用的外部文件的属性是否正确,打开文件的语句是否正确,缓冲区大小是 否与记录长度相匹配。文件结束判断处理是否一致; 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 局部数据结构测试 模块内部数据是否完整,内容、形式、相互关系是否有错常常是软件错误 的主要来源。应做如下考虑: 错误或不相容的数据说明或使用了尚未初始化的变量; 错误的初始值或不正确的缺省值; 错误的变量名或数据类型不相容; 溢出(上溢或下溢)或地址异常; 全局数据对模块的影响。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 重要路径测试 重点测试由于错误计算、不正确的比较或不适当的控制流而造成的错误。常 见错误如下: 运算的次序错误(误用了运算符的优先级); 混合运算对象的类型彼此不相容; 变量初始值不正确; 精度不够,或由于精度问题两个量不可能相等时,程序中却期待着相等条件 的出现; 错误的修改循环变量,错误的或不可能达到的循环终止条件; “差1”错(多循环1次或少循环1次); 当遇到发散的循环迭代时循环不能终止。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 错误处理测试 好的模块设计应能预见出错的条件,并设置相应的出错处理。重点考虑下 列问题: 对可能出现错误的描述是否难以理解; 出错的描述不足以对错误定位,或不足以确定出错的原因; 显示的错误与实际的错误不符; 对错误的条件处理不正确; 在对错误进行处理之前,错误条件已经引起系统的干预。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 边界测试 边界测试是单元测试中最后的、也可能是最重要的工作。 程序常常在边界上出现错误。 例如,在一段程序内有一个n次循环,当到达第n次循环时就有可能出错 。 要特别注意数据流、控制流中恰好等于、大于或小于确定的比较值时出 错的可能性。要精心设计测试用例对这些地方进行测试。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 (二)单元测试的步骤 基于计算机的单元测试可为三个步骤进行: (1)配置测试环境 驱动模块:一个“主程 序”,接收测试数据,传 给被测模块,打印结果。 桩模块:接收被测模块 的调用,可以做最少量的数据操作,打印相关结 果,并把控制归还给调用它的模块。 桩模块是单元测试中重要的成本开销。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 (二)单元测试的步骤 (2)编写测试数据。 以详细设计说明为依据,从程序的内部结构出发设计测试用例。主要采 用白盒测试,以路径覆盖为最佳测试准则。同时辅之以黑盒测试用例,使 之对任何合理的输入和不合理的输入都能鉴别和响应。 (3)进行多个模块的并行测试。 为了提高测试效率,在进行计算机测试之前,常常首先对源程序代码进行 人工的静态测试。 人工测试和计算机测试是互相补充、相辅相成的,缺少其中任何一种方法 都会使查找错误的效率降低。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.6.2 集成测试 主要目标是发现与接口有关的问题。 根据模块的组装方式有两种测试方式: 1.非渐增式测试 把已经过测试的所有模块一次性组装在一起,然后进行整体测试。 这种测试往往不可能一次成功,查错和改错都很困难。使用较少。 2.渐增式测试 把已经过测试的模块逐个进行组装,在组装的过程中进行测试,最后 得到完整的系统。这种测试方式也可在各模块没有进行测试的前题下进 行。常用渐增式集成策略有三种: 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 自顶向下集成 是从主控模块开始,沿着控制层次自顶向下进行组装。添加模块时可采用深 度优先策略或广度优先策略进行。 具体步骤如下: 测试主控模块:用桩模块代替其直接附属模块; 根据添加策略每次添加一个实际模块进行测试; 进行回归测试。既重新执行以前做过的全部测试或部分测试,排除组装过程 中引入新的错误; 重复上述和,直到所有模块已组装到系统中为止。 优点:能在测试早期对主要的控制或关键的判断进行检验 。 缺点:需建立桩模块,并存在一个逻辑次序问题。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 自底向上集成 从最底层的模块开始,自底向上组装和测试。 具体步骤如下: 由驱动模块控制最底层模块的并行测试; 将低层模块组合族,由驱动模块对其进行测试; 用实际模块代替驱动模块,把它已测试的直属子模块组装成子系统; 为子系统配备驱动模块进行新的测试; 重复述上、,至到已组装到主模块为止。 优点:不需要建立桩模块 ,多个模块可并行测试 。 缺点:程序至到最后一个模块加上去才形成一个实体。这样对主要的控 制直到最后才接触到。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 混合的集成测试 前两种方式各有优缺点,通常混合起来测试。 对结构中较上层的使用自顶向下的集成方法,较下层的使用自底向上的 集成方法。 衍变的自顶向下的集成测试:强化对I/O模块和引入新算法模块的测试 ,并自底向上组装成为的子系统,然后由主模块开始自顶向下集成测试 。 自底向上自顶向下的集成测试:首先对含读操作的子系统自底向上进 行组装和测试,然后对含写操作的子系统自顶向下进行组装和测试。 回归测试:自顶向下测试所修改的模块及其子模块,然后将其视为子系 统自下向上测试,检查该子系统与其上级模块接口是否适配。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.6.3 验收测试 又称为确认测试,主要由用户参加测试,检验软件规格说明的技术标准的 符合程度,是保证软件质量的最后关键环节。 验收测试主要完成下面的工作: (1)有效性测试:在模拟的环境(也许就是开发环境),运用黑盒测试法, 验证软件是否满足需求规格说明书列出的需求。 两种结果:一是功能和性能与用户要求一致,软件是可以接受的。二是功 能或性能与用户的要求有差距,这时就提交一份问题报告。 (2)软件配置复查:保证软件配置的所有成分都齐全,各方面的质量都符合 要求。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 (3)测试和测试 测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”下进 行测试。开发者负责记录错误和使用中遇到的问题。 测试是在受控的环境中进行的。 测试:开发者通常不在测试现场。用户记录下在测试过程中遇到的一切 问题(真实的或想象的),并且定期把这些问题报告给开发者。 测试是软件在开发者不能控制的环境中的“真实”应用。 接收到测试期间报告的问题之后,软件开发者对产品进行修改,并准 备向全体客户发布最终的软件产品。 济南职业学院 申报省级精品课程:软件工程 负责人:赛煜 5.6.4 系统测试 将通过验收测试的软件作为整个计算机系统的一个元素,与计算机硬件 、外设、支持软件、数据和人员等其他系统元素结合在一起进行的综合 测试。 (1)恢复测试:检测重新初始化、数据恢复、重新启动、检验点设置是否 正确,以及人工干预的平均恢复时间是否在允许范围内。 (2)安全测试:检验系统是否有安全保密的漏洞。 (3)强度测试:让系统处于资源的异常数量、异常频率、异常批量的条件 下检验系统的承受能力。一般取比平常限度高510倍的限

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论