您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 软件工程第九章软件测试
1软件测试第九章本章要点掌握软件测试的目标与原则;理解软件测试方法;掌握等价类划分法、边界值分析法、错误推测法等黑盒法测试用例的设计;熟悉逻辑覆盖法等白盒法测试用例的设计;理解软件测试的过程;了解软件测试工具;了解软件调试概念;了解面向对象软件测试的特点。29.1软件测试概述第9章软件测试的目的是为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量。软件测试是软件开发过程中的一个重要阶段,是软件产品正式投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试的结果也是分析软件可靠性的重要依据。测试阶段的根本目标是以最少的人力、物力和时间,尽可能多地发现并排除软件中潜在的错误,最终把一个高质量的软件系统交给用户使用。9.1.1软件测试的目标39.1软件测试概述第9章在软件测试中,应注意以下指导原则:(1)所有测试都应追溯到需求。(2)坚持“尽早地和不断地进行软件测试”。(3)测试用例应由输入数据和预期的输出结果两部分组成。(4)程序员应避免测试自己的程序。(5)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。(6)充分注意测试中的群集现象。(7)严格执行测试计划,排除测试的随意性。(8)应当对每个测试结果做全面检查。(9)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。(10)应长期保留所有测试用例。9.1.2软件测试的原则49.1软件测试概述第9章软件测试时需要三类测试信息流,如图9-1所示。9.1.3软件测试的信息流59.2软件测试方法第9章软件测试方法很多,按照测试过程是否执行程序来分,一般分为静态测试方法和动态测试方法。动态测试方法又根据测试用例的设计方法不同,分为黑盒测试和白盒测试两类。测试方法的分类如图9-2所示。69.2软件测试方法第9章静态测试包括代码检查、静态结构分析、代码质量度量等,是指不在计算机上执行被测试软件,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。经验表明,人工测试能有效发现30%~70%的逻辑设计错误和编码错误。(1)人工测试:是指不依靠计算机而靠人工审查程序或评审软件。人工审查程序的重点是对编码质量的检查,而软件审查除了审查编码还要对各阶段的软件产品(各种文档)进行复查。人工检测可以发现计算机不易发现的错误,特别是软件总体设计和详细设计阶段的错误。(2)计算机辅助静态分析:指不需要执行所测试的程序,而只是通过扫描程序正文,对程序的数据流和控制流等信息进行分析,找出系统的缺陷,得出测试报告。9.2.1静态测试79.2软件测试方法第9章动态测试是真正运行被测程序,在执行过程中,通过输入有效的测试用例,对输入与输出的对应关系进行分析,以达到检测的目的。通常意义上的测试大多是指动态测试。设计高效、合理的测试用例是动态测试的关键。同测试任何产品一样,动态测试一般有黑盒测试法与白盒测试法两种,前者是测试产品的功能,后者是测试产品的内部结构和处理过程。9.2.2动态测试89.2软件测试方法第9章1.黑盒测试法黑盒法又称功能测试或数据驱动测试,该方法把被测试对象看成一个不透明的“黑盒子”,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口(界面)处进行测试,依据需求说明书,检查程序是否满足功能要求,是否能很好地接收数据,并产生正确的输出。通过黑盒测试主要发现以下错误:(1)是否有不正确或遗漏了的功能。(2)界面是否有错,能否正确地接受输入数据,能否产生正确的输出信息。(3)是否有数据结构或外部数据库访问错误。(4)性能是否满足要求。(5)是否有初始化或终止性错误。9.2.2动态测试99.3测试用例的设计第9章常用的黑盒测试技术有等价类划分、边界值分析、错误推测法、因果图等。1.等价类划分法(1)等价类划分法的基本思想把所有可能的输入或输出数据(有效的和无效的)划分成若干个等价的子集,称为等价类,使得每个子集中的一个典型值在测试中的作用与这一子集中所有其他值的作用相同,可从每个子集中选取一组数据来测试程序,这种方法称等价类划分法。等价类可分为有效等价类和无效等价类两种。前者主要用来检验程序是否实现了规格说明中的功能;后者主要用来检验程序否做了规格说明以外的事情。9.3.1黑盒技术109.3测试用例的设计第9章(2)等价类划分的一般规则划分等价类需要一定的经验,下面几条启发式规则有助于等价类的划分:①如果输入条件是一个布尔量,则可定义一个有效等价类和一个无效等价类。②如果输入条件规定了确切的取值范围,可定义一个有效等价类和两个无效等价类。③如果规定了输入数据的个数,则可定义一个有效等价类和两个无效等价类。④如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。⑤如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。⑥如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。⑦如果处理对象是表格,则应使用空表、只含1项的表,包含多项的表。9.3.1黑盒技术119.3测试用例的设计第9章(3)用等价类划分法设计测试用例的步骤①划分等价类,形成等价类表,为每一等价类规定一个唯一的编号;②根据等价类选取相应的测试用例。设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被覆盖。设计一个新的测试用例,使其覆盖一个而且只覆盖一个尚未覆盖的无效等价类,重复这一步骤,直到所有无效等价类均被覆盖。注意:通常程序发现一类错误后就不再检查是否还有其他错误,因此,应该使每个测试方案只覆盖一个无效的等价类。9.3.1黑盒技术129.3测试用例的设计第9章2.边界值分析法边界值分析是一种补充等价类划分法的测试用例设计技术。边界值分析就是测试边界线数据。使用边界值分析法设计测试用例时,应考虑选取正好等于、刚刚大于和刚刚小于边界的值作为测试数据,这样发现程序中错误的概率较大。3.错误推测法错误推测法是根据经验来设计测试用例以找出可能存在但尚未发现的错误的方法。错误推测法的基本思想是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据这些情况选择测试用例。9.3.1黑盒技术139.3测试用例的设计第9章4.因果图法因果图法用于检查程序输入条件的各种组合情况。等价类划分法和边界值分析法都侧重考虑输入数据,而因果图法主要考虑输入数据之间的联系。该方法能够生成没有重复的且发现错误能力强的测试用例,而且对输入输出数据同时进行分析。9.3.1黑盒技术149.3测试用例的设计第9章9.3.2白盒技术159.3测试用例的设计第9章前面介绍的软件测试方法,各有所长。每种方法都能设计出一组有用的测试用例,用这组用例可能容易发现某种类型的错误,但可能不易发现另一种类型的错误。因此,对软件系统进行实际测试时,应该联合使用各种测试方法,形成综合策略。通常是先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。具体方法如下:(1)在任何情况下都应该使用边界值分析方法。(2)用等价类划分法补充测试用例。(3)用错误推测法补充测试用例。(4)对照程序逻辑,检查已经设计出的测试用例的逻辑覆盖程度,如果没有达到所要求的覆盖标准,则应当再补充一些测试用例。(5)如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。9.3.3综合测试策略169.3测试用例的设计第9章下面给出一个三角形分类程序的测试方案的设计。程序的功能是,读入三个整数值代表三角形的三条边的长度,程序判断这三个值能否构成三角形,如果能够,则输出三角形是等边、等腰或任意三角形的分类信息。综合使用边界值分析、等价类划分和错误推测等技术为此程序设计测试用例。第一步:确定测试策略。因为在本例中对被测程序已有明确的要求,即:判断能否构成三角形,如能构成,则再判断能构成等边、等腰或任意三角形哪一种。因此,可首先运用黑盒测试法设计测试用例,然后再用白盒测试法验证其完整性,必要时再补充测试用例。第二步:在黑盒测试中首先要用等价类划分法划分输入等价类,然后用边值分析法和错误推测法作补充。9.3.4测试实例分析179.4软件测试步骤第9章与软件的开发过程类似,测试必须分步骤进行。对于大型的软件系统,测试基本上由单元测试、集成测试、确认测试和系统测试四个步骤组成,如图9-4所示。189.4软件测试步骤第9章单元测试又称模块测试,主要是检查每个程序模块是否正确实现了规定的功能。集成测试又称组装测试,主要检查概要设计中模块接口设计问题。确认测试主要检查已实现的软件是否满足需求说明书中确定的各种需求。系统测试是综合检验软件与整个计算机系统的测试。测试的每个过程都可以采用灵活的测试方法和测试策略,通常在单元测试中采用白盒测试方法,而在其他测试中主要采用黑盒测试方法。199.4软件测试步骤第9章单元测试是对软件设计的最小单位——程序模块的测试,也是对程序模块进行正确性检验的测试,其目的在于发现各模块内部可能存在的各种差错。通常单元测试可以放在编码阶段,程序员在编写完成一个模块且无编译错误后就可以进行,主要是检查模块是否实现了详细设计说明书规定的模块功能和算法。单元测试需要从程序的内部结构出发设计测试用例,通常采用白盒测试方法,以路径覆盖为最佳测试准则。多个模块可以并行独立地进行单元测试。9.4.1单元测试209.4软件测试步骤第9章1.单元测试的内容单元测试的内容主要有以下五方面:(1)模块接口测试(2)局部数据结构测试(3)重要路径测试(4)错误处理测试(5)边界测试9.4.1单元测试219.4软件测试步骤第9章2.单元测试的步骤(1)配置测试环境(2)编写测试数据(3)进行多个单元的并行测试9.4.1单元测试229.4软件测试步骤第9章集成测试也称组装测试或联调,是在单元测试的基础上,将所有模块按照软件设计要求组装成系统并进行测试的过程。组装测试主要通过检查模块间的结构和通信发现软件设计阶段产生的错误,通常采用黑盒测试方法。在组装测试过程中,需要考虑如下几个问题:(1)数据穿越模块接口是否会丢失。(2)一个模块的功能是否会对另一个模块的功能产生不利的影响。(3)各个子功能组合起来,能否达到预期要求的父功能。(4)全局数据结构是否有问题。(5)单个模块的误差累积起来,是否会放大,以至于达到不能接受的程度。9.4.2集成测试239.4软件测试步骤第9章把多个模块组装成系统,通常有两种方式:非渐增式组装和渐增式组装。1.非渐增式组装方式也称整体拼装。即将单元测试后的模块按照系统总体结构图一次性集成起来,然后进行全程序测试。其优点是效率高,缺点是发现错误难以诊断定位,所以又称“莽撞测试”,只适宜小规模的系统。2.渐增式组装方式也称增殖式方式。从一个模块开始,测试一次添加一个模块,边组装边测试,以发现与接口相联系的问题,直至所有模块全部集成到程序中。该方式适合于大规模的系统。渐增式组装方式有两种:自顶向下组装和自底向上组装。9.4.2集成测试249.4软件测试步骤第9章确认测试也称有效性测试,目的是确认组装完毕的软件是否满足软件需求规格说明书的要求。典型的确认测试通常包括有效性测试和软件配置审查等内容,测试结束后,软件就要交付验收了。1.有效性测试2.软件配置审查3.α测试β测试4.验收测试9.4.3确认测试259.4软件测试步骤第9章系统测试是把已经经过确认的软件纳入实际运行环境中,与其他系统成分组合在一起进行测试。其目的是检查软件能否与系统的其余部分协调运行,并且实现软件需求规格说明书的要求。系统测试是验收测试的一部分,应由用户单位组织实施。软件开发单位应该为系统测试创造良好的条件,负责回答和解决测试中可能发现的一切质量问题。常见的系统测试主要有以下几方面。(1)恢复测试:主要检查系统的容错能力。当
本文标题:软件工程第九章软件测试
链接地址:https://www.777doc.com/doc-1991080 .html