




已阅读5页,还剩169页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机软件技术基础,西安电子科技大学电子工程学院,学习指导信息,同学们在学习本课程的过程中应当注意基本概念、基本方法、算法的阅读理解和算法的设计等方面。软件工程主要涉及基本概念和基本方法;数据结构涉及基本概念、基本方法、算法的阅读理解和算法的设计。在学习过程中可以通过课件的内容、例题、习题来理解和掌握。,电子工程学院,2,第一部分软件工程,软件工程的教学目的和要求,掌握软件生命周期各阶段的划分,各阶段的主要任务以及所建立的软件文档。能够采用结构化分析、结构化设计和结构化程序设计的方法开发软件,掌握软件测试的步骤和方法,了解软件维护的基本概念。,电子工程学院,4,软件工程目录,软件和软件工程的基本概念软件生命周期结构化的软件开发方法软件测试软件维护作业,电子工程学院,5,一、软件和软件工程的基本概念,软件的特点软件是一种逻辑产品。软件产品的生产主要是研制。软件产品不会损坏,不存在磨损、消耗问题。软件产品的生产主要是脑力劳动、手工开发方式,大部分产品是“定做”的。软件开发成本不断提高。,电子工程学院,6,硬件的故障曲线,电子工程学院,7,硬件的故障曲线,软件的理想曲线与实际故障曲线,故障率,修改,由副作用造成故障率的提高,时间,实际曲线,理想曲线,软件的理想曲线与实际故障曲线,电子工程学院,8,软件危机是指在软件的开发和维护过程中所遇到的一系列严重问题。几乎所有软件都不同程度地存在以下问题:对软件开发成本和进度不可控制。用户对“已完成的”软件往往不满意。软件产品的质量不可靠。软件的可维护性差。软件的文档资料不齐备。软件成本在计算机系统总成本中所占的比例过高。软件开发的生产率低。,软件危机的含义,电子工程学院,9,软件危机的产生一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。,消除软件危机的途径研究探索软件开发的技术措施,采用先进的软件开发方法和软件开发工具。加强软件开发过程中的组织管理措施。软件工程正是从技术和管理两个方面研究如何更好地开发和维护计算机软件的一门新兴学科。,产生软件危机的原因,电子工程学院,10,采用工程的概念、原理、技术和方法来开发与维护软件。把经过时间考验而证明正确的管理方法和当前最好的软件开发技术结合起来,以较低的成本开发出高质量的软件并能够有效的对软件进行维护。,软件工程的概念,电子工程学院,11,将软件生命周期划分阶段,严格管理软件的开发与维护。坚持进行阶段评审。实行严格的产品控制。采用现代化的软件开发技术。能够清楚的审查软件各个阶段的结果。开发小组的人员应该少而精。承认不断改进软件工程实践的必要性。,软件工程的基本原理,电子工程学院,12,在软件生命周期全过程中使用的一整套技术的集合称为软件工程方法学。软件工程方法学包括以下三个要素:方法:完成软件开发的各项任务的技术方法。工具:为方法的运用提供自动或半自动的软件支撑环境。过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,软件工程方法学,电子工程学院,13,软件工程方法学分为结构化方法、Jackson方法、维也纳方法、面向对象方法。其中结构化方法和面向对象方法使用最为广泛,又称为软件工程的传统方法学和面向对象方法学。本课程主要介绍结构化方法。,常用的软件工程方法学,电子工程学院,14,【例】,软件产品管理包括版本管理和。答案:开发过程管理软件与物质产品的区别在于软件是一种产品。答案:逻辑目前经常采用的软件工程方法学,是和。答案:传统方法学、面向对象方法学,电子工程学院,15,二、软件生命周期,软件生命周期各阶段的划分,以及各个阶段任务:问题定义问题定义阶段的任务是确定所要开发的目标系统应当解决的问题是什么。2.可行性研究在确定了目标系统应当解决的问题之后,从技术、经济和社会因素三个方面分析问题是否能够解决,以及是否值得解决。,电子工程学院,16,需求分析阶段的任务是在充分了解用户对目标系统的需求之后,确定目标系统应当具有什么功能,而这些功能如何实现在这个阶段并不考虑。本阶段的另外一项重要任务,是用正式文档准确地记录对目标系统的需求,这份文档通常称为系统规格说明书或需求规格说明书。,3.需求分析,电子工程学院,17,这个阶段的基本任务是概括地回答怎样实现目标系统的功能。概要设计又称为总体设计。概要设计的另一项主要任务就是设计目标系统的模块结构图或功能结构图,确定目标系统由哪些模块组成以及模块之间的调用和被调用关系。5.详细设计详细设计阶段设计模块内部的逻辑和数据结构。这个阶段的任务还不是编写程序代码。,4.概要设计,电子工程学院,18,这个阶段是根据详细设计的结果,采用程序设计语言遍写出程序代码。7.测试测试阶段的任务是通过各种类型的测试及相应的调试,使软件达到预定的要求。8.维护维护是在系统运行阶段进行的,通过各种必要的维护活动使系统持久地满足用户的需要。,6.编码,电子工程学院,19,生命周期模型规定了把生命周期划分成哪些阶段及各个阶段进行的顺序。1.瀑布模型瀑布模型清楚地区分系统的逻辑设计与物理设计,尽可能推迟系统的物理实现。每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。,软件生命周期的模型,电子工程学院,20,当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后,再回来继续完成后面阶段的任务。瀑布模型适合于在用户需求明确、开发技术成熟、工程管理严格的场合使用。由于任务顺序固定,瀑布模型的缺点是软件研制周期长,纠正前期错误的代价高。,带有反馈环的瀑布模型,电子工程学院,21,瀑布模型的开发过程,电子工程学院,22,快速原型模型是快速建立起可以在计算机上运行的程序,它所具有的功能往往只是最终软件产品功能的一个子集。快速原型模型首先建立一个能反映用户主要需求的原型系统,让用户试用它,通过试用,用户可以了解目标系统的概貌。软件人员根据用户的意见对原型进行修改,然后再次请用户试用,直到能够满足用户的需求为止。这样所开发的软件可以满足用户的真实需求。快速原型模型适合在用户需求不明确的情况下开发软件。,2.快速原型模型,电子工程学院,23,快速原型模型的开发过程,电子工程学院,24,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。下面给出增量模型的开发过程。,3.增量模型,电子工程学院,25,增量模型的开发过程,电子工程学院,26,【例】,软件生命周期是指一个软件从提出开发要求开始直到为止的整个时期。答案:报废瀑布模型属于整体开发模型,增量模型属于开发模型。答案:非整体说明软件文档的概念。答案:软件文档是有关软件的功能、设计使用的文字和图形资料。说明快速原型模型的优点。答案:能够及早发现问题,随时纠正错误;减少技术应用风险,提高生产率;适应需求变化,能够有效提高系统质量。,电子工程学院,27,三、结构化的软件开发方法,结构化的软件开发方法包括结构化分析(SA方法)、结构化设计(SD方法)和结构化程序设计(SP方法)。SA方法用于需求分析阶段;SD方法用于总体设计阶段;SP方法用于详细设计及编码阶段。,电子工程学院,28,1.需求分析的任务需求分析是发现、求精、建模、规格说明和复审的过程。系统分析员首先要准确地了解用户当前的情况和需要解决的问题,然后反复求精多次细化。最终以软件需求规格说明书的形式完整、准确和具体的表示出用户对目标系统的要求。软件需求规格说明书可以作为软件开发人员与用户之间的软件开发合同,又是软件最终验收的依据。,3.1需求分析,电子工程学院,29,结构化分析实质上是一种创建模型的活动。通过需求分析而建立的模型必须达到下述的三个基本目标:(1)描述用户的需求。(2)为软件设计工作奠定基础。(3)定义一组需求,一旦开发出软件产品之后,就可以用这组需求作为标准验收软件。结构化分析所建立的模型包括:描述数据对象的实体-关系图;描述系统逻辑模型的数据流图;描述系统状态及状态转换的状态转换图。,2.分析建模,电子工程学院,30,实体-关系图来建立数据模型。其中包含了实体(即数据对象)、关系和属性等三种基本成分。(1)实体(数据对象)是具有一组性质或属性的复合信息,用矩形框表示;(2)实体间的关系用菱形框表示;(3)属性是实体或关系的性质,即实体或关系的值,用椭圆框表示。实体之间的关系分为1:1、1:N和M:N联系。,实体-关系图(E-R图),电子工程学院,31,【例】学校教学管理的E-R图,电子工程学院,32,信息在系统流动,实质上经历了一系列的变换。数据流图描述了信息从输入到输出的一系列变换。数据流图具有四种成份:(1)系统的源点或终点:属于系统之外的人员或组织,用表示。(2)加工:具有逻辑加工能力,对数据进行变换处理,用或圆圈表示。(3)数据存储:用于存储数据,用表示。(4)数据流:系统中数据的流向,用表示。,4.数据流图(DFD图),电子工程学院,33,结构化分析运用了“分解”和“抽象”的手段,采用“自顶向下,逐层分解”的分析思路,将系统的加工逻辑用分层数据流图(分层DFD图)来表示。,分层数据流图,电子工程学院,34,接受项目裁判送来的比赛成绩单,使用项目文件和运动员文件,将成绩录入到比赛成绩文件。成绩查询时根据运动员文件和比赛成绩文件产生项目比赛成绩,送大会秘书处。绘制运动会成绩处理的0层数据流图。,【例】运动会成绩处理过程如下:,电子工程学院,35,数据字典用于对数据流图中的成份进行进一步精确、严格的定义,数据字典中的条目由数据流、数据存储和加工的定义组成。数据字典中所使用的符号如下:表示等价于(或定义为)表示和(即,连接两个分量)表示或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号分开供选择的分量表示重复(即,重复花括弧内的分量)()表示可选(即,圆括弧里的分量可有可无.表示数据的范围,5.数据字典,电子工程学院,36,(1)描述身份证号的条目。身份证号=省+市+区(县)+出生日期+编号出生日期=年+月+日月=1.12日=1.31(2)描述班级考试成绩表的条目班级考试成绩表=学号+课程号+姓名+课程名+成绩成绩=优|良|中|及格|不及格,【例】数据字典条目举例。,电子工程学院,37,(1)结构化语言结构化语言是介于自然语言和形式语言之间的一种半形式化语言。它是在自然语言的基础上增加一些限定,使用有限的词汇和有限的语句来描述加工逻辑,它的结构可分为外层和内层两层。外层:用来描述控制结构,采用顺序、选择、重复三种基本结构。内层:一般采用祈使语句。,对加工条目的描述称为小说明,可以采用结构化语言、判定表和判定树等形式。,电子工程学院,38,在有些情况下,每个加工的一组动作依赖于多个逻辑条件的取值。用判定表能够更清晰、严谨地表示复杂的条件组合与相应动作之间的对应关系。判定表由四个部分组成。,列出所有条件,所有可能的动作,各种条件组合的矩阵,每种条件组合相对应的动作,(2)判定表,电子工程学院,39,判定树是判定表的变形,一般情况下它比判定表更直观,且易于理解和使用。【例】某工厂对部分职工重新分配工作的政策:年龄在20岁以下者,初中文化程度脱产学习,高中文化程度当电工;年龄在20岁至40岁之间者,中学文化程度男性当钳工,女性当车工,大学文化程度当技术员;年龄在40岁以上者,中学文化程度当材料员,大学文化程度当技术员。分别用结构化语言、判定表和判定树描述上述问题的加工逻辑。,(3)判定树,电子工程学院,40,IF年龄0THENX1ELSEX2ENDIFS1IFZ0THENZ1IFW0THENW1ELSEW2ENDIFELSEZ2ENDIFS2ENDWHILE,电子工程学院,89,用PAD图进行描述,电子工程学院,90,【例】,程序的三种基本控制结构的共同特点是()。A只能用来描述简单程序B不能嵌套使用C单入口,单出口D仅用于自动控制系统答案:C结构化程序设计采用的三种基本结构是()。A.顺序、分支、选择B.选择、循环、重复C.顺序、选择、重复D.输入、变换、输出答案:C详细描述处理过程常用的三种工具是()。A.SA,SD,SPB.程序流程图,IPO,PADC.SA,SC,SDD.图形,表格,语言答案:D,电子工程学院,91,【例】试比较程序流程图与PAD图的特点。,这两种方法均为详细设计阶段所使用的图形工具。(1)程序流程图直观清晰,易于使用。但控制流程线不易限制,易造成非结构化的程序结构;不易反映逐步求精的过程;不易表示数据结构。(2)PAD图是一种由左往右展开的二维树型结构,能够清晰地反映程序的层次结构,支持逐步求精的设计方法,易写易读,使用方便;可自动生成程序,支持结构化程序设计原理。,电子工程学院,92,【例】简述程序流程图的缺点和克服方法。,流程图的缺点有三个方面,(1)控制流程线不易限制,易造成非结构化的程序结构;(2)不易反映逐步求精的过程;(3)不易表示数据结构。为了克服流程图的缺陷,要求流程图都应由三种基本结构顺序组合或完整嵌套而成,不能出现相互交叉的情况,这样的流程图是结构化的流程图。,电子工程学院,93,3.4软件编码,所谓编码就是把软件设计翻译成计算机可以理解的形式用某种程序设计语言书写的程序代码。程序的质量主要取决于软件设计的质量。但是,所选用的程序设计语言的特点和编码风格也会对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。,电子工程学院,94,程序设计语言特性,1.心理特性语言的心理特性是指影响程序员心理的语言性能,包括:歧义性、简洁性、局部性、顺序性和传统性。2.工程特性从考虑软件开发项目的需要出发,对软件编码有如下要求:可移植性,开发工具的可利用性,软件的可重用性,可维护性。3.技术特性根据项目的特性选择相应特性的语言,满足设计的需求。,电子工程学院,95,程序设计风格,1.源程序文档化(1)标识符的命名标识符作为模块名、变量名、常量名等,其命名应当具有一定的实际意义,做到“见名知义”。(2)程序的注释源程序中添加必要的注释,提高程序的可理解性。注释有以下两个方面:序言性注释:位于每个程序模块的开头,对模块的功能、调用形式、参数等加以说明,以及对模块的修改记录。功能性注释:位于源程序中,用于说明语句或语句块的功能。,电子工程学院,96,(3)程序的视觉组织,程序的视觉组织是指源程序中适当加空格、空行和语句行的缩进,这样有助于分清程序的层次结构,提高程序的可理解性。2.数据说明数据说明有一定的次序,对于复杂的数据结构加以注释。3.语句结构语句的构造应该简单、直接,不能为了追求效率而使语句复杂化。,电子工程学院,97,4.输入/输出风格,有关输入/输出风格的规则:对所有输入数据都进行检验;检查输入项重要组合的合法性;保持输入格式简单;使用数据结束标记,避免指定输入数据的个数;给出交互式输入的提示,并详细说明可用的输入选择或边界值;当程序设计语言对格式有严格要求时,应保持输入格式一致;设计良好的输出报表;给所有输出数据加标志。,电子工程学院,98,5.程序的效率,程序的效率主要指程序运行过程中占用处理机的时间和存储器的容量两个方面。在保证程序的清晰性和可读性的前提下,追求程序的时间和空间效率,从而提高软件的性能。【例】程序设计语言的心理特性在语言中的表现不应当包括()。A歧义性B简洁性C保密性D传统性答案:C,电子工程学院,99,【例】,源程序文档化要求在每个模块之前加序言性注释,该注释内容不包括有()。A.模块的功能B.语句的功能C.模块的接口D.开发历史答案:B为了具有良好的程序设计风格,应注意哪些方面的问题?答案:源程序文档化、数据说明、语句构造、输入输出以及对效率的追求等几个方面。为增加软件的可移植性应注意的问题是什么?答案:在软件结构方面,体现模块的独立性高;在编码方面,在满足开发软件需求的前提下选择高级语言编写源程序。,电子工程学院,100,四、软件测试,4.1软件测试概述软件开发总是伴随着软件质量保证的活动,而软件测试是主要活动之一。软件测试代表了需求分析、设计、编码的最终复审。大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上。测试的目的是发现软件中的各种错误,发现错误之后还必须诊断并改正错误,这就是调试的目的。,电子工程学院,101,软件测试的原则,1.测试用例应由输入数据和预期的输出数据两部分组成。2.测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。3.除了检查程序是否做了它应该做的,还应该检查程序是否做了它不应该做的。4.应制定测试计划并严格执行,排除随意性。5.长期保留测试用例。6.对发现错误较多的程序段,应进行更深入的测试。7.程序员应当避免测试自己的程序。,电子工程学院,102,4.2软件测试方法,软件测试方法一般分为动态测试方法与静态测试方法。动态测试方法又分为黑盒测试法和白盒测试法。1.静态测试静态测试是指被测程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。2.动态测试动态测试指通过运行程序发现错误。动态测试一般有两种方法,分别称为黑盒测试法和白盒测试法。,电子工程学院,103,黑盒测试法,黑盒测试法把被测对象看成一个黑盒子,完全不考虑被测对象的内部结构和处理过程,只是对功能和接口进行的测试,检查其功能是否能够按照规格说明书的规定正常使用,是否能适当地接收输入数据产生正确的输出信息。黑盒测试又称为功能测试。,电子工程学院,104,白盒测试法,白盒测试法是把模块看成一个透明的白盒子,测试人员必须完全了解模块内部的结构和处理过程,按照模块内部的逻辑设计测试用例进行测试,检验逻辑结构中的每条通路是否都能按预定要求正确工作。白盒测试又称为结构测试。,电子工程学院,105,软件测试准则,(1)所有的测试都应该能追溯到用户需求。(2)应当在测试开始之前制定出测试计划。(3)测试中所发现的80%的错误很可能是由程序中20%的模块造成的。(4)测试应该从“小规模”开始,并逐步进行“大规模”测试。(5)穷举测试是不可能的。(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。,电子工程学院,106,程序图,在设计测试方案时,通常用程序图描述程序的控制流程,在程序图中并不表现对数据的具体操作以及分支或循环的具体条件。程序图可以表示程序控制流程的复杂程度。在程序图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一个顺序处理框序列和一个菱形判定框,可以映射为程序图中的一个结点。程序图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。在程序图中一条边必须终止于一个结点。由边和结点围起来的部分称为区域。程序图中区域的个数=流程图中判定框个数+1,电子工程学院,107,【例】由程序流程图映射程序图,程序图中的结点代表流程图中的判定框和处理框。程序图中的边代表流程图中的控制流向。流程图中有3个判定框,程序图中有4个区域。,电子工程学院,108,用PDL表示的处理过程(含有复合条件)映射为程序图,电子工程学院,109,4.3测试用例的设计,每个测试用例包括:(1)具体的测试目的(所要测试的具体功能);(2)应该输入的测试数据;(3)预期的输出结果。通过测试,将实际的输出结果与预期的输出结果进行比较,可以知道是否具有错误。如果有错误,再进行调试,找出产生错误的原因和位置,并对错误进行修改。,电子工程学院,110,白盒测试技术,1.逻辑覆盖逻辑覆盖用于测试分支结构。较复杂的分支结构会有比较多的路径。不同的测试数据发现程序错误的能力差别很大,为了提高测试效率降低测试成本,应该选用高效的测试用例。因为不可能进行穷举测试,应当选用少量“最有效的”测试用例,进行尽可能彻底的测试。按照覆盖程度不同,可以分为6种逻辑覆盖,分别是语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。下面通过例子说明6种逻辑覆盖的含义。,电子工程学院,111,【例】为下列代码设计测试用例。,ifA1andB=0thenX=X/AifA=2orX1thenX=X+1,电子工程学院,112,(1)语句覆盖,选择足够多的测试数据,使被测程序中每个语句至少执行一次。,选择测试数据:A=2,B=0,X=3能够覆盖语句c、e,电子工程学院,113,(2)判定覆盖,选择足够多的测试数据,使每个判定至少取真、假至少一次。,选择两组测试数据:A=3,B=0,X=1使A1ANDB=0为真,A=2ORX1为假(通过路径1235)A=2,B=1,X=2使A1ANDB=0为假,A=2ORX1为真(通过路径1345),电子工程学院,114,(3)条件覆盖,使判定表达式中的每个条件分别取真、假至少一次。上述两个判定表达式中有4个条件:A1,B=0,A=2,X1,选择两组测试数据:A=2,B=0,X=3使A1,B=0,A=2,X1为真,通过路径12345A=1,B=1,X=1使A1,B=0,A=2,X1为假,通过路径135,电子工程学院,115,满足条件覆盖的另外两组测试数据,A=1,B=0,X=3使B=0,X1为真,A1,A=2为假,通过路径1345A=2,B=1,X=1使B=0,X1为假,A1,A=2为真,通过路径1345,这两组测试数据均使A1ANDB=0为假,A=2ORX1为真,不满足判定覆盖。所以满足条件覆盖不一定满足判定覆盖。,电子工程学院,116,(4)判定/条件覆盖,判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,判定/条件覆盖能同时满足这两种覆盖标准。它的含义是,选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。,电子工程学院,117,下面两组测试用例能够满足判定/条件覆盖,A=2,B=0,X=3使A1,B=0,A=2,X1和(A1)AND(B=0),(A=2)OR(X1)为真A=1,B=1,X=1使A1,B=0,A=2,X1和(A1)AND(B=0),(A=2)OR(X1)为假,注意:若将B=0写为B0,而A1为假,X1写为X1,而A=2为真,就测试不出来。,电子工程学院,118,(5)条件组合覆盖,条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。,两个判定表达式中共有4个条件,因此有8种组合:A1,B=0A1,B0A1,B=0A1,B0A=2,X1A=2,X1A2,X1A2,X1,电子工程学院,119,以下4组测试用例可以满足条件组合覆盖,A=2,B=0,X=2满足A1,B=0A=2,X1A=2,B=1,X=1满足A1,B0A=2,X1A=1,B=0,X=2满足A1,B=0A2,X1A=1,B=1,X=1满足A1,B0A2,X1,电子工程学院,120,(6)路径覆盖,以下4组测试用例可以达到路径覆盖:A=2,B=0,X=2覆盖12345A=2,B=1,X=1覆盖1345A=1,B=1,X=1覆盖135A=3,B=0,X=1覆盖1235但不能覆盖A1,B=0和A2,X1。所以满足路径覆盖不一定满足条件组合覆盖。,在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后补充测试用例,达到路径覆盖。,选取足够多的测试数据,覆盖所有可能的路径。,电子工程学院,121,2.循环覆盖,白盒测试技术中的循环测试用于测试循环结构的有效性。在结构化的程序中可以构成三种循环类型,分别是简单循环、串接循环和嵌套循环。,下面分别讨论不同类型循环的测试方法。,电子工程学院,122,(1)简单循环,使用下列测试集来测试简单循环,其中n是允许执行循环体的最大次数。跳过循环。只执行循环体一次。执行循环体两次。执行循体m次,其中mn-1。执行循环体n-1,n,n+1次。,电子工程学院,123,【例】,n=k;/为测试设置的语句i=1;while(in)i=i+1;假设程序中允许循环的最大次数为6,测试时k取值分别为:0:跳过循环1,2:循环体执行1,2次4:循环体执行4次5,6,7:循环体执行5,6,7次,电子工程学院,124,(2)嵌套循环,如果把简单循环的测试方法直接应用到嵌套循环,可能的测试数就会随嵌套层数的增加按几何级数增长,这会导致不切实际的测试数目。下面介绍一种能减少测试数目的方法。从最内层循环开始测试,把所有外层循环都设置为最小值。对最内层循环使用简单循环测试方法,并为越界值或非法值增加一些额外的测试。由内向外,对下一个循环层次进行测试,但保持所有外层循环为最小值,内层嵌套循环为“典型”值。继续进行下去,直到测试完所有循环。,电子工程学院,125,(3)串接循环,如果串接循环的各个循环都彼此独立,则可以使用前面所介绍的测试简单循环的方法来测试串接循环。如果两个循环串接,而且第一个循环的循环计数器值是第二个循环的初始值,则这两个循环并不是独立的。当循环不独立时,可以采用测试嵌套循环的方法来测试串接循环。,电子工程学院,126,黑盒测试技术,黑盒测试技术将被测对象(模块或模块的组合)看作黑盒子,着重测试其功能和接口,测试人员所设计的测试用例应当能够充分检查被测对象是否能够满足功能需求。黑盒测试很可能发现白盒测试不易发现的错误。黑盒测试可以下述类型的错误:功能不正确或遗漏了功能;界面错误;数据结构错误或外部数据库访问错误;性能错误;初始化和终止错误。,电子工程学院,127,1.等价类划分,等价类划分是将被测对象的输入域划分为若干个有效的等价类和若干个无效的等价类。可以合理地做出假定:每个等价类中的一个典型值在测试中的作用与这一等价类中所有其他值的作用相同。因此,可以从每个等价类中只取一组数据作为测试数据。所选取的测试数据应当具有代表性,发现被测对象错误的可能性最大。在确定输入数据的等价类时,还需要分析输出数据的等价类,以便根据输出数据的等价类导出对应的输入数据等价类。,电子工程学院,128,等价类的划分规则,(1)如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),两个无效的等价类(输入值小于最小值和大于最大值)。(2)如果规定了输入数据的个数,则可以划分出一个有效的等价类和两个无效的等价类。(3)如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的输入值是一个有效的等价类,不允许的输入值是一个无效的等价类。(4)如果规定了输入数据为整型,则可以划分出正整数、零和负整数三个有效等价类。,电子工程学院,129,(5)如果规定了输入数据必须遵循的规则,则可以划分出一个符合规则的有效等价类和若干个从各种不同角度违反规则的无效等价类。,(6)如果程序的处理对象是表格,则应该分别以空表、含一项或多项的表作为等价类。,以上规则只是测试时可能遇到的很小一部分。要正确划分等价类,一方面要注意积累经验;另一方面要正确分析被测对象的功能。在划分无效等价类时,对于编译程序一定能够发现的错误,不需要再设计测试用例来暴露这些错误。,电子工程学院,130,根据等价类设计测试用例的步骤,(1)设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类。复重这一步骤直到所有有效等价类都被覆盖为止。(2)设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类。重复这一步骤直到所有无效等价类都被覆盖为止。【例】假设有一个把数字字符串(用字符数组存储)转换成整数的函数。所使用的计算机字长为16位,用二进制补码表示的整数范围是-3276832767。用Delphi语言编写的函数说明如下:,电子工程学院,131,functionstrtoint(dstr:shortstr):integer;,函数的参数类型是shortstr(长度为6的一维字符数组类型)typeshortstr=array1.6ofchar;所存放的的数字串右对齐,如果数字串不足6个字符,则左边补空格。如果数字串是负的,则负号和最高位数字紧相邻(负号在最高位数字左边一位)。划分出如下等价类:(1)有效输入的等价类16个数字字符组成的数字串(最高位数字不是零),如“12345”最高位数字是零的数字串,如“012345”最高位数字左邻是负号的数字串,如“-123”,电子工程学院,132,(2)无效输入的等价类,空字符串(全是空格),例如:“”左部填充的字符既不是零也不是空格,如“*123”最高位数字右面由数字和空格混合组成,如“12345”最高位数字右面由数字和其他字符混合组成,如“12#3”负号与最高位数字之间有空格,如“-123”(3)合法输出的等价类在计算机能表示的最小负整数和零之间的负整数零在零和计算机能表示的最大正整数之间的正整数,电子工程学院,133,(4)非法输出的等价类,比计算机能表示的最小负整数还小的负整数,如-32769比计算机能表示的最大正整数还大的正整数,如32768根据上面划分出的有效等价类,可以设计出下述测试用例,每个测试用例由测试目的、有效输入和预期的输出组成。16个数字组成的数字串,输出是合法的正整数输入:“1”(有效输入)预期的输出:1最高位数字是零的数字串,输出是合法的正整数输入:“000001”(有效输入)预期的输出:1,电子工程学院,134,负号与最高位数字紧相邻,输出合法的负整数,输入:“-00001”(有效输入)预期的输出:-1字符串为全零,输出也是零输入:“000000”(有效输入)预期的输出:0根据上面划分出的无效等价类,可以设计出下述测试用例,每个测试用例由测试目的、无效输入和预期的输出组成。太小的负整数输入:“-47561”(无效输入)预期的输出:“错误无效输入”,电子工程学院,135,太大的正整数,输入:“132767”(无效输入)预期的输出:“错误无效输入”空字符串输入:“”(无效输入)预期的输出:“错误没有数字”字符串左部字符既不是零也不是空格输入:“1”(无效输入)预期的输出:“错误填充错”最高位数字后面有空格输入:“12”(无效输入)预期的输出:“错误无效输入”,电子工程学院,136,最高位数字后面有其他字符,输入:“12”(无效输入)预期的输出:“错误无效输入”负号和最高位数字之间有空格输入:“-12”(无效输入)预期的输出:“错误负号位置错”2.边界值分析经验表明,处理边界情况时程序最容易发生错误。例如,许多程序错误出现在下标、数据结构和循环等的边界附近。因此,设计使程序运行在边界情况附近的测试用例,暴露出程序错误的可能性更大一些。,电子工程学院,137,边界的确定,如果输入条件规定了值的范围或者值的个数。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值。例如输入值的范围是1.100,可取0,1,100,101等值作为测试用例。如果输入值为0或101,则认为是错误的输入。例如一个输入文件可包括1255个记录,可设计有1个,255个,0个和256个记录的输入文件作为测试用例。如果输入0或256个记录,则认为是错误的输入。,电子工程学院,138,4.4测试步骤,测试步骤分为单元测试、集成测试和确认测试。集成测试包括子系统测试和系统测试,确认测试又称为验收测试。单元测试发现详细设计和编码阶段的错误,集成测试发现总体设计阶段的错误,确认测试发现需求分析阶段的错误。,电子工程学院,139,1.单元测试,通常,单元测试和编码属于软件工程过程的同一个阶段。在编写出源程序代码并通过了编译程序的语法检查之后进行单元测试。单元测试对每个模块单独测试,以确保它作为一个单元来说功能是正确的。主要使用白盒测试法进行单元测试,检查模块内部的逻辑是否存在错误,然后再辅以黑盒测试法确定模块任何合理和不合理的输入是否都能鉴别和响应。,电子工程学院,140,单元测试需要驱动模块和桩模块,模块并不是一个独立的程序,因此必须为每个单元测试开发驱动模块和桩模块。驱动模块作为被测试模块的主调模块,产生测试数据,把这些数据传送给被测试的模块,并且打印出被测模块返回的有关结果。桩模块代替被测试模块所调用的模块,它的作用是返回被测试模块所需的信息,并且把控制归还给调用它的被测模块。,电子工程学院,141,2.集成测试,集成测试是按照软件结构设计要求将模块组装起来的同时进行测试,主要目标是发现与接口有关的问题。模块的组装有非渐增式和渐增式两种方法。(1)非渐增式测试方法先分别测试每个模块,再把所有模块按设计要求放在一起结合成完整的程序;(2)渐增式测试方法是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。渐增式又分为自顶向下和自底向上两种集成方法。,电子工程学院,142,自顶向下集成,从主控制模块(主程序)开始,沿着软件的控制层次向下移动,从而逐渐把各个模块结合起来。结合的顺序可以是深度优先或广度优先。采用自顶向下的集成由下述四个步骤完成:(1)对主控制模块进行测试,测试时用桩模块代替所有直接附属于主控制模块的模块;(2)每次用一个实际模块替换一个桩模块(新结合进来的模块往往又需要新的桩模块);(3)在结合进一个模块的同时进行测试;,电子工程学院,143,(4)为了保证加入模块没有引进新的错误,可能需要进行回归测试(即全部或部分地重复以前做过的测试)。,重复上述步骤(2)、(3)、(4),直到构造起完整的软件结构为止。自顶向下集成的优点是在测试的早期可以发现上层模块的问题,并及早解决,还有利于早期实现软件的一个完整的功能,并且检验这个功能。自顶向下集成的缺点在于推迟用实际模块替换桩模块,使许多测试必须推迟到最后才能进行。,电子工程学院,144,自顶向下深度优先集成,先集成主控路径上的模块,例如集成模块M1、M2和M5,然后集成模块M8,如果M2的某功能需要M6,再集成M6,接着集成中间和右边路径上的模块。,电子工程学院,145,自顶向下广度优先集成,逐层集成直接下属的所有模块,把每一层同一水平线的模块逐个集成起来。,电子工程学院,146,自底向上集成,软件结构最低层的模块开始,沿控制层次逐步渐增和测试。测试步骤如下:(1)把低层模块组合成实现某个特定子功能的模块簇;(2)为每一模块簇设计一个驱动模块,用于测试时协调测试用例的输入和输出;(3)对子功能簇进行测试;(4)用实际模块替换驱动模块,沿软件结构自下向上移动,把子功能簇组合成更大的子功能簇,再进行测试直至全部完成。,电子工程学院,147,自底向上集成测试,已集成了3个子功能簇,对3个子功能簇进行测试。,电子工程学院,148,采用自顶向下和自底向上的混合测试策略,在测试实际的软件系统时,应该根据软件的特点以及工程进度安排,选用适当的测试策略。一般说来,纯粹自顶向下或纯粹自底向上的策略可能都不实用。在实际测试中可以对软件总体的较高层模块采用自顶向下的结合方法,对低层模块采用自底向上的结合方法。采用自顶向下和自底向上的混合测试策略有利于减少驱动模块和桩模块,提高测试效率。,电子工程学院,149,3.确认测试,确认测试也称为验收测试,它的目标是验证软件的有效性。确认(Validation)和验证(Verification)是两个不同的术语,验证是指保证软件正确地实现了某一特定要求的一系列活动,而确认是指保证软件的最终实现能够满足了用户需求的一系列活动。(1)确认测试必须有用户积极参与,或者以用户为主进行。(2)确认测试的一个重要内容是复查软件配置。(3)确认测试又分为Alpha和Beta测试。,电子工程学院,150,Alpha与Beta测试的区别,Alpha测试在受控的环境中进行的,由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录错误和使用中遇到的问题。Beta测试由软件的最终用户们在一个或多个客户场所进行。开发者通常不在测试的现场,是软件在开发者不能控制的环境中的“真实”应用。用户记录测试过程中遇到的一切问题,并且定期把这些问题报告给开发者。接收到Beta测试期间报告的问题之后,软件开发者对产品进行修改,并最终向全体客户发布最终的软件产品。,电子工程学院,151,4.5调试,调试是在测试发现错误之后,确定错误的原因和位置,排除错误的过程。,电子工程学院,152,调试方法,(1)简单的调试方法:在程序中插入打印语句、运行部分程序、借助于调试工具(如Debug程序)等。(2)回溯法:从程序产生错误的地方出发,人工沿程序的逻辑路径返向搜索,直到找到错误的原因为止。(3)原因排除法:列出所有可能的错误原因的假设;排除不适当的假设;精化余下的假设。重复上述步骤,直到确定出错位置为止。,电子工程学院,153,【例】,软件静态测试的方法之一为()。A.计算机辅助静态分析B.黑盒法C.因果图D.路径覆盖答案:A用白盒测试技术设计测试用例,()是最弱的覆盖标准。A.语句覆盖B.路径覆盖C.条件组合覆盖D.判定覆盖答案:A软件调试技术包括()。A.错误推断B.集成测试C.回溯法D.边界值分析答案:C,电子工程学院,154,【例】,用白盒法技术设计测试用例的方法包括()。A错误推测B因果图C基本路径测试D边界值分析答案:C软件测试中根据测试用例设计的方法不同,分为黑盒测试和白盒测试两种,它们()。A前者属于静态测试,后者属于动态测试B前者属于动态测试,后者属于静态测试C都属于静态测试D都属于动态测试答案:D,电子工程学院,155,【例】,用白盒技术设计测试用例的方法包括()。A.边界值分析B.循环覆盖C.因果图D.错误推测答案:B软件测试的目的是()。A.为了表明程序没有错误B.为了说明程序能正确地执行C.为了发现程序中的错误D.为了评价程序的质量答案:C针对软件需求分析所进行的软件测试是指()。A.集成测试B.确认测试C.黑盒子测试D.白盒子测试答案:B,电子工程学院,156,【例】,单元测试阶段主要涉及()的文档。A.需求设计B.编码和详细设计C.详细设计D.概要设计答案:B在软件测试中,白盒测试方法是通过分析程序的()来设计测试用例的方法。A.应用范围B.内部逻辑C.功能D.输入数据答案:B下列属于用白盒技术设计测试用例的是()。A错误推测B逻辑覆盖C等价类划分D因果图答案:B,电子工程学院,157,【例】,在单元测试时,需要为被测模块设计_。答案:驱动模块和桩模块采用自顶向下的渐增式测试,需要_。答案:桩模块采用自底向上的渐增式测试,需要_。答案:驱动模块自底向上集成测试,需要_模块测试子功能簇。答案:驱动确认测试又分为_和_测试。答案:AlphaBeta,电子工程学院,158,【例】,下图是一个被测程序流程图,采用条件覆盖方法设计测试用例。,电子工程学院,159,实现条件覆盖,使每个条件至少取真、假各一次。设4个条件的取值符号为:,电子工程学院,160,测试用例如下:,电子工程学院,161,【例】,根据下列条件使用边界值分析法设计测试用例。用一个字节存放一个八进制数,取值范围是177177。八进制常数定义为:以零开头的数是八进制整数。如:05,0127,065答案:取-0200,-0177,0177,0200作为测试用例。根据下列条件使用边界值分析法设计测试用例。用一个字节存放一个十六进制数,取值范围是-0 x7f0 x7f。十六进制常数定义为:以0 x开头的数是十六进制整数。如:0 x16,0 x7A,-0 x10答案:取-0 x80,-0 x7f,0 x7f,0 x80作为测试用例。,电子工程学院,162,五、软件维护,维护阶段是软件生存周期中的最后一个阶段,也是时间最长,所花费的精力和费用最多的一个阶
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 搪瓷制品焊接工艺环境适应性工艺考核试卷及答案
- EPDM地面耐冲击性施工规范考核试卷及答案
- 润肺止咳的清蒸百合 教案-2023-2024学年高一上学期劳动技术
- 触电事故应急知识培训课件
- 朗诵瑜伽知识培训课件
- 2025年中药提取与分离技术产业竞争力提升策略报告
- 解剖百合花课件
- 2025年安全生产安全知识试题及答案
- 呼吸科实习生出科理论考试试题及答案
- 中级银行从业资格之中级银行业法律法规与综合能力题库检测模拟题及答案详解1套
- 业余足球比赛技术统计表
- 社情民意写作基本知识要点课件
- 医疗器械生产企业GMP培训专家讲座
- 2023年中远海运船员管理有限公司招聘笔试题库及答案解析
- 辐射及其安全防护(共38张PPT)
- 金风15兆瓦机组变流部分培训课件
- 膀胱镜检查记录
- 沈阳终止解除劳动合同证明书(三联)
- 化工装置静设备基本知识
- 电脑节能环保证书
- 美国共同基金SmartBeta布局及借鉴
评论
0/150
提交评论