1、1目录页软件测试第九章本章本章要点要点n 掌握软件测试的目标与原则;n 理解软件测试方法;n 掌握等价类划分法、边界值分析法、错误推测法等黑盒法测试用例的设计;n 熟悉逻辑覆盖法等白盒法测试用例的设计;n 理解软件测试的过程;n 了解软件测试工具;n 了解软件调试概念;n 了解面向对象软件测试的特点。2目录页软件测试第九章项目项目任务任务n对瑞天图书管理系统主要模块进行功能测试,设计测试用例;n对瑞天图书管理系统主要模块进行界面测试,设计测试用例;n 根据本节提供的测试用例,完成对瑞天图书管理系统相应模块的实际测试。3目录页9.1 软件测试概述第9章软件测试的目的是为了发现软件产品中存在的软件
2、缺陷,进而保证软件产品的质量。软软件测试的目的是为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量。软件测试是软件开发过程中的一个重要阶段,是软件产品正式投入运行前,对软件需求分析、件测试是软件开发过程中的一个重要阶段,是软件产品正式投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试的结果也是分析软设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试的结果也是分析软件可靠性的重要依据。件可靠性的重要依据。测试阶段的根本目标是以最少的人力、物力和时间,尽可能多地发现并排除软件中潜在测试阶段的根本目标是以最少的人力、物力和时间,尽可能多地
3、发现并排除软件中潜在的错误,最终把一个高质量的软件系统交给用户使用。的错误,最终把一个高质量的软件系统交给用户使用。9.1.1 软件测试的目标软件测试的目标4目录页9.1 软件测试概述第9章在软件测试中,应注意以下指导原则:在软件测试中,应注意以下指导原则:(1)所有测试都应追溯到需求。)所有测试都应追溯到需求。(2)坚持)坚持“尽早地和不断地进行软件测试尽早地和不断地进行软件测试”。(3)测试用例应由输入数据和预期的输出结果两部分组成。)测试用例应由输入数据和预期的输出结果两部分组成。(4)程序员应避免测试自己的程序。)程序员应避免测试自己的程序。(5)在设计测试用例时,应当包括合理的输入条
4、件和不合理的输入条件。)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。(6)充分注意测试中的群集现象。)充分注意测试中的群集现象。(7)严格执行测试计划,排除测试的随意性。)严格执行测试计划,排除测试的随意性。(8)应当对每个测试结果做全面检查。)应当对每个测试结果做全面检查。(9)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。的事。(10)应长期保留所有测试用例。)应长期保留所有测试用例。9.1.2 软件测试的原则软件测试的原则 5目录页9.1 软件测试概述第9章软件测试时
5、需要三类测试信息流,如图软件测试时需要三类测试信息流,如图9-1所示。所示。9.1.3 软件测试的信息流软件测试的信息流 6目录页9.2 软件测试方法第9章软件测试方法很多,按照测试过程是否执行程序来分,一般分为静态测试方法和动态测软件测试方法很多,按照测试过程是否执行程序来分,一般分为静态测试方法和动态测试方法。动态测试方法又根据测试用例的设计方法不同,分为黑盒测试和白盒测试两类。测试方法。动态测试方法又根据测试用例的设计方法不同,分为黑盒测试和白盒测试两类。测试方法的分类如图试方法的分类如图9-2所示。所示。7目录页9.2 软件测试方法第9章静态测试包括代码检查、静态结构分析、代码质量度量
6、等,是指不在计算机上执行被测静态测试包括代码检查、静态结构分析、代码质量度量等,是指不在计算机上执行被测试软件,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态测试可以由试软件,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。经验表明,人工测人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。经验表明,人工测试能有效发现试能有效发现30%70%的逻辑设计错误和编码错误。的逻辑设计错误和编码错误。(1)人工测试:是指不依靠计算机而靠人工审查程序或评审软件。人工审查程序的重点)人工测试
7、:是指不依靠计算机而靠人工审查程序或评审软件。人工审查程序的重点是对编码质量的检查,而软件审查除了审查编码还要对各阶段的软件产品(各种文档)进行是对编码质量的检查,而软件审查除了审查编码还要对各阶段的软件产品(各种文档)进行复查。人工检测可以发现计算机不易发现的错误,特别是软件总体设计和详细设计阶段的错复查。人工检测可以发现计算机不易发现的错误,特别是软件总体设计和详细设计阶段的错误。误。(2)计算机辅助静态分析:指不需要执行所测试的程序,而只是通过扫描程序正文,对)计算机辅助静态分析:指不需要执行所测试的程序,而只是通过扫描程序正文,对程序的数据流和控制流等信息进行分析,找出系统的缺陷,得出
8、测试报告。程序的数据流和控制流等信息进行分析,找出系统的缺陷,得出测试报告。9.2.1 静态测试静态测试 8目录页9.2 软件测试方法第9章动态测试是真正运行被测程序,在执行过程中,通过输入有效的测试用例,对输入与输动态测试是真正运行被测程序,在执行过程中,通过输入有效的测试用例,对输入与输出的对应关系进行分析,以达到检测的目的。通常意义上的测试大多是指动态测试。设计高出的对应关系进行分析,以达到检测的目的。通常意义上的测试大多是指动态测试。设计高效、合理的测试用例是动态测试的关键。同测试任何产品一样,动态测试一般有黑盒测试法效、合理的测试用例是动态测试的关键。同测试任何产品一样,动态测试一般
9、有黑盒测试法与白盒测试法两种,前者是测试产品的功能,后者是测试产品的内部结构和处理过程。与白盒测试法两种,前者是测试产品的功能,后者是测试产品的内部结构和处理过程。9.2.2 动态测试动态测试 9目录页9.2 软件测试方法第9章1黑盒测试法黑盒测试法黑盒法又称功能测试或数据驱动测试,该方法把被测试对象看成一个不透明的黑盒法又称功能测试或数据驱动测试,该方法把被测试对象看成一个不透明的“黑盒子黑盒子”,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口(界面)处进行测试,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口(界面)处进行测试,依据需求说明书,检查程序是否满足功能要求
10、,是否能很好地接收数据,并产生正确的输出。依据需求说明书,检查程序是否满足功能要求,是否能很好地接收数据,并产生正确的输出。通过黑盒测试主要发现以下错误:通过黑盒测试主要发现以下错误:(1)是否有不正确或遗漏了的功能。)是否有不正确或遗漏了的功能。(2)界面是否有错,能否正确地接受输入数据,能否产生正确的输出信息。)界面是否有错,能否正确地接受输入数据,能否产生正确的输出信息。(3)是否有数据结构或外部数据库访问错误。)是否有数据结构或外部数据库访问错误。(4)性能是否满足要求。)性能是否满足要求。(5)是否有初始化或终止性错误。)是否有初始化或终止性错误。9.2.2 动态测试动态测试 10目
11、录页9.3 测试用例的设计第9章常用的黑盒测试技术有等价类划分、边界值分析、错误推测法、因果图等。常用的黑盒测试技术有等价类划分、边界值分析、错误推测法、因果图等。1.等价类划分法等价类划分法(1)等价类划分法的基本思想等价类划分法的基本思想把所有可能的输入或输出数据(有效的和无效的)划分成若干个等价的子集,称为等价把所有可能的输入或输出数据(有效的和无效的)划分成若干个等价的子集,称为等价类,使得每个子集中的一个典型值在测试中的作用与这一子集中所有其他值的作用相同,可类,使得每个子集中的一个典型值在测试中的作用与这一子集中所有其他值的作用相同,可从每个子集中选取一组数据来测试程序,这种方法称
12、等价类划分法。从每个子集中选取一组数据来测试程序,这种方法称等价类划分法。等价类可分为有效等价类和无效等价类两种。前者主要用来检验程序是否实现了规格说等价类可分为有效等价类和无效等价类两种。前者主要用来检验程序是否实现了规格说明中的功能;后者主要用来检验程序否做了规格说明以外的事情。明中的功能;后者主要用来检验程序否做了规格说明以外的事情。9.3.1 黑盒技术黑盒技术11目录页9.3 测试用例的设计第9章(2)等价类划分的一般规则等价类划分的一般规则 划分等价类需要一定的经验,下面几条启发式规则有助于等价类的划分划分等价类需要一定的经验,下面几条启发式规则有助于等价类的划分:如果输入条件是一个
13、布尔量,则可定义一个有效等价类和一个无效等价类。如果输入条件是一个布尔量,则可定义一个有效等价类和一个无效等价类。如果输入条件规定了确切的取值范围,可定义一个有效等价类和两个无效等价类。如果输入条件规定了确切的取值范围,可定义一个有效等价类和两个无效等价类。如果规定了输入数据的个数,则可定义一个有效等价类和两个无效等价类。如果规定了输入数据的个数,则可定义一个有效等价类和两个无效等价类。如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类是一个有效等价类,并有一个
14、无效等价类(所有不允许的输入值的集合所有不允许的输入值的集合)。如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则无效等价类(从不同角度违反规则)。如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。小的等价类。如果处理对象是表格,则应使用空表、只含如果处理对象是表格,则应使用空表、只含1项的表,包含多项的表。项的表,包含多项的表。9.3.1 黑盒技术黑盒技术1
15、2目录页9.3 测试用例的设计第9章(3)用等价类划分法设计测试用例的步骤)用等价类划分法设计测试用例的步骤划分等价类,形成等价类表,为每一等价类规定一个唯一的编号;划分等价类,形成等价类表,为每一等价类规定一个唯一的编号;根据等价类选取相应的测试用例。根据等价类选取相应的测试用例。设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被覆盖。直到所有有效等价类均被覆盖。设计一个新的测试用例,使其覆盖一个而且只覆盖一个尚未覆盖的无效等价类,重复这设计一个新的测试用例,使其覆盖一
16、个而且只覆盖一个尚未覆盖的无效等价类,重复这一步骤,直到所有无效等价类均被覆盖。一步骤,直到所有无效等价类均被覆盖。注意:通常程序发现一类错误后就不再检查是否还有其他错误,因此,应该使每个测试注意:通常程序发现一类错误后就不再检查是否还有其他错误,因此,应该使每个测试方案只覆盖一个无效的等价类。方案只覆盖一个无效的等价类。9.3.1 黑盒技术黑盒技术13目录页9.3 测试用例的设计第9章2.边界值分析法边界值分析法边界值分析是一种补充等价类划分法的测试用例设计技术。边界值分析就是测试边界线边界值分析是一种补充等价类划分法的测试用例设计技术。边界值分析就是测试边界线数据。使用边界值分析法设计测试
17、用例时,应考虑选取正好等于、刚刚大于和刚刚小于边界数据。使用边界值分析法设计测试用例时,应考虑选取正好等于、刚刚大于和刚刚小于边界的值作为测试数据,这样发现程序中错误的概率较大。的值作为测试数据,这样发现程序中错误的概率较大。3.错误推测法错误推测法错误推测法是根据经验来设计测试用例以找出可能存在但尚未发现的错误的方法。错误推测法是根据经验来设计测试用例以找出可能存在但尚未发现的错误的方法。错误推测法的基本思想是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,错误推测法的基本思想是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据这些情况选择测试用例。根据这些情况选择测试用例
18、。9.3.1 黑盒技术黑盒技术14目录页9.3 测试用例的设计第9章4.因果图法因果图法因果图法用于检查程序输入条件的各种组合情况。等价类划分法和边界值分析法都侧重因果图法用于检查程序输入条件的各种组合情况。等价类划分法和边界值分析法都侧重考虑输入数据,而因果图法主要考虑输入数据之间的联系。该方法能够生成没有重复的且发考虑输入数据,而因果图法主要考虑输入数据之间的联系。该方法能够生成没有重复的且发现错误能力强的测试用例,而且对输入输出数据同时进行分析。现错误能力强的测试用例,而且对输入输出数据同时进行分析。9.3.1 黑盒技术黑盒技术15目录页9.3 测试用例的设计第9章9.3.2 白盒技术白
19、盒技术16目录页9.3 测试用例的设计第9章前面介绍的软件测试方法,各有所长。每种方法都能设计出一组有用的测试用例,用这前面介绍的软件测试方法,各有所长。每种方法都能设计出一组有用的测试用例,用这组用例可能容易发现某种类型的错误,但可能不易发现另一种类型的错误。组用例可能容易发现某种类型的错误,但可能不易发现另一种类型的错误。因此,对软件系统进行实际测试时,应该联合使用各种测试方法,形成综合策略。通常因此,对软件系统进行实际测试时,应该联合使用各种测试方法,形成综合策略。通常是先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。具体方法如下:是先用黑盒法设计基本的测试用例,再用白盒
20、法补充一些必要的测试用例。具体方法如下:(1)在任何情况下都应该使用边界值分析方法。)在任何情况下都应该使用边界值分析方法。(2)用等价类划分法补充测试用例。)用等价类划分法补充测试用例。(3)用错误推测法补充测试用例。)用错误推测法补充测试用例。(4)对照程序逻辑,检查已经设计出的测试用例的逻辑覆盖程度,如果没有达到所要求)对照程序逻辑,检查已经设计出的测试用例的逻辑覆盖程度,如果没有达到所要求的覆盖标准,则应当再补充一些测试用例。的覆盖标准,则应当再补充一些测试用例。(5)如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。)如果程序的功能说明中含有输入条件的组合情况,则
21、一开始就可选用因果图法。9.3.3 综合测试策略综合测试策略 17目录页9.3 测试用例的设计第9章下面给出一个三角形分类程序的测试方案的设计。程序的功能是,读入三个整数值代表下面给出一个三角形分类程序的测试方案的设计。程序的功能是,读入三个整数值代表三角形的三条边的长度,程序判断这三个值能否构成三角形,如果能够,则输出三角形是等三角形的三条边的长度,程序判断这三个值能否构成三角形,如果能够,则输出三角形是等边、等腰或任意三角形的分类信息。边、等腰或任意三角形的分类信息。综合使用边界值分析、等价类划分和错误推测等技术为此程序设计测试用例。综合使用边界值分析、等价类划分和错误推测等技术为此程序设
22、计测试用例。第一步:确定测试策略。因为在本例中对被测程序已有明确的要求,即:判断能否构成第一步:确定测试策略。因为在本例中对被测程序已有明确的要求,即:判断能否构成三角形,如能构成,则再判断能构成等边、等腰或任意三角形哪一种。因此,可首先运用黑三角形,如能构成,则再判断能构成等边、等腰或任意三角形哪一种。因此,可首先运用黑盒测试法设计测试用例,然后再用白盒测试法验证其完整性,必要时再补充测试用例。盒测试法设计测试用例,然后再用白盒测试法验证其完整性,必要时再补充测试用例。第二步:在黑盒测试中首先要用等价类划分法划分输入等价类,然后用边值分析法和错第二步:在黑盒测试中首先要用等价类划分法划分输入
23、等价类,然后用边值分析法和错误推测法作补充。误推测法作补充。9.3.4 测试实例分析测试实例分析18目录页9.4 软件测试步骤 第9章与软件的开发过程类似,测试必须分步骤进行。对于大型的软件系统,测试基本上由单与软件的开发过程类似,测试必须分步骤进行。对于大型的软件系统,测试基本上由单元测试、集成测试、确认测试和系统测试四个步骤组成,如图元测试、集成测试、确认测试和系统测试四个步骤组成,如图9-4所示。所示。19目录页9.4 软件测试步骤 第9章单元测试又称模块测试,主要是检查每个程序模块是否正确实现了规定的功能。单元测试又称模块测试,主要是检查每个程序模块是否正确实现了规定的功能。集成测试又
24、称组装测试,主要检查概要设计中模块接口设计问题。集成测试又称组装测试,主要检查概要设计中模块接口设计问题。确认测试主要检查已实现的软件是否满足需求说明书中确定的各种需求。确认测试主要检查已实现的软件是否满足需求说明书中确定的各种需求。系统测试是综合检验软件与整个计算机系统的测试。系统测试是综合检验软件与整个计算机系统的测试。测试的每个过程都可以采用灵活的测试方法和测试策略,通常在单元测试中采用白盒测测试的每个过程都可以采用灵活的测试方法和测试策略,通常在单元测试中采用白盒测试方法,而在其他测试中主要采用黑盒测试方法。试方法,而在其他测试中主要采用黑盒测试方法。20目录页9.4 软件测试步骤 第
25、9章单元测试是对软件设计的最小单位单元测试是对软件设计的最小单位程序模块的测试,也是对程序模块进行正确性检程序模块的测试,也是对程序模块进行正确性检验的测试,其目的在于发现各模块内部可能存在的各种差错。通常单元测试可以放在编码阶验的测试,其目的在于发现各模块内部可能存在的各种差错。通常单元测试可以放在编码阶段,程序员在编写完成一个模块且无编译错误后就可以进行,主要是检查模块是否实现了详段,程序员在编写完成一个模块且无编译错误后就可以进行,主要是检查模块是否实现了详细设计说明书规定的模块功能和算法。细设计说明书规定的模块功能和算法。单元测试需要从程序的内部结构出发设计测试用例,通常采用白盒测试方
26、法,以路径覆单元测试需要从程序的内部结构出发设计测试用例,通常采用白盒测试方法,以路径覆盖为最佳测试准则。多个模块可以并行独立地进行单元测试。盖为最佳测试准则。多个模块可以并行独立地进行单元测试。9.4.1 单元测试单元测试 21目录页9.4 软件测试步骤 第9章1单元测试的内容单元测试的内容单元测试的内容主要有以下五方面:单元测试的内容主要有以下五方面:(1)模块接口测试)模块接口测试(2)局部数据结构测试)局部数据结构测试(3)重要路径测试)重要路径测试(4)错误处理测试)错误处理测试(5)边界测试)边界测试9.4.1 单元测试单元测试 22目录页9.4 软件测试步骤 第9章2单元测试的步
27、骤单元测试的步骤(1)配置测试环境)配置测试环境(2)编写测试数据)编写测试数据(3)进行多个单元的并行测试)进行多个单元的并行测试9.4.1 单元测试单元测试 23目录页9.4 软件测试步骤 第9章集成测试也称组装测试或联调,是在单元测试的基础上,将所有模块按照软件设计要求集成测试也称组装测试或联调,是在单元测试的基础上,将所有模块按照软件设计要求组装成系统并进行测试的过程。组装测试主要通过检查模块间的结构和通信发现软件设计阶组装成系统并进行测试的过程。组装测试主要通过检查模块间的结构和通信发现软件设计阶段产生的错误,通常采用黑盒测试方法。在组装测试过程中,需要考虑如下几个问题:段产生的错误
28、,通常采用黑盒测试方法。在组装测试过程中,需要考虑如下几个问题:(1)数据穿越模块接口是否会丢失。)数据穿越模块接口是否会丢失。(2)一个模块的功能是否会对另一个模块的功能产生不利的影响。)一个模块的功能是否会对另一个模块的功能产生不利的影响。(3)各个子功能组合起来,能否达到预期要求的父功能。)各个子功能组合起来,能否达到预期要求的父功能。(4)全局数据结构是否有问题。)全局数据结构是否有问题。(5)单个模块的误差累积起来,是否会放大,以至于达到不能接受的程度。)单个模块的误差累积起来,是否会放大,以至于达到不能接受的程度。9.4.2 集成测试集成测试 24目录页9.4 软件测试步骤 第9章
29、把多个模块组装成系统,通常有两种方式:非渐增式组装和渐增式组装。把多个模块组装成系统,通常有两种方式:非渐增式组装和渐增式组装。1非渐增式组装方式非渐增式组装方式也称整体拼装。即将单元测试后的模块按照系统总体结构图一次性集成起来,然后进行也称整体拼装。即将单元测试后的模块按照系统总体结构图一次性集成起来,然后进行全程序测试。其优点是效率高,缺点是发现错误难以诊断定位,所以又称全程序测试。其优点是效率高,缺点是发现错误难以诊断定位,所以又称“莽撞测试莽撞测试”,只,只适宜小规模的系统。适宜小规模的系统。2渐增式组装方式渐增式组装方式也称增殖式方式。从一个模块开始,测试一次添加一个模块,边组装边测
30、试,以发现与也称增殖式方式。从一个模块开始,测试一次添加一个模块,边组装边测试,以发现与接口相联系的问题,直至所有模块全部集成到程序中。该方式适合于大规模的系统。接口相联系的问题,直至所有模块全部集成到程序中。该方式适合于大规模的系统。渐增式组装方式有两种:自顶向下组装和自底向上组装。渐增式组装方式有两种:自顶向下组装和自底向上组装。9.4.2 集成测试集成测试 25目录页9.4 软件测试步骤 第9章确认测试也称有效性测试,目的是确认组装完毕的软件是否满足软件需求规格说明书的确认测试也称有效性测试,目的是确认组装完毕的软件是否满足软件需求规格说明书的要求。典型的确认测试通常包括有效性测试和软件
31、配置审查等内容,测试结束后,软件就要要求。典型的确认测试通常包括有效性测试和软件配置审查等内容,测试结束后,软件就要交付验收了。交付验收了。1.有效性测试有效性测试2.软件配置审查软件配置审查3.测试测试测试测试4.验收测试验收测试9.4.3 确认测试确认测试 26目录页9.4 软件测试步骤 第9章系统测试是把已经经过确认的软件纳入实际运行环境中,与其他系统成分组合在一起进系统测试是把已经经过确认的软件纳入实际运行环境中,与其他系统成分组合在一起进行测试。其目的是检查软件能否与系统的其余部分协调运行,并且实现软件需求规格说明书行测试。其目的是检查软件能否与系统的其余部分协调运行,并且实现软件需
32、求规格说明书的要求。系统测试是验收测试的一部分,应由用户单位组织实施。软件开发单位应该为系统的要求。系统测试是验收测试的一部分,应由用户单位组织实施。软件开发单位应该为系统测试创造良好的条件,负责回答和解决测试中可能发现的一切质量问题。常见的系统测试主测试创造良好的条件,负责回答和解决测试中可能发现的一切质量问题。常见的系统测试主要有以下几方面。要有以下几方面。(1)恢复测试:主要检查系统的容错能力。当系统出现错误时,能否在指定时间间隔内)恢复测试:主要检查系统的容错能力。当系统出现错误时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统能否修正
33、错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统能否尽快恢复。尽快恢复。9.4.4 系统测试系统测试 27目录页9.4 软件测试步骤 第9章(2)安全测试:主要检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非)安全测试:主要检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线,检验系统预防机制的漏洞。法入侵者,采用各种办法试图突破防线,检验系统预防机制的漏洞。(3)强度测试:主要检查程序对异常情况的抵抗能力。强度测试总是迫使系统在异常的)强度测试:主要检查程序对异常情况的抵抗能力。强度测试总是迫使系统在异常的资源配置下运
34、行。如运行一些超过正常输入量或需要最大存储空间的测试用例。资源配置下运行。如运行一些超过正常输入量或需要最大存储空间的测试用例。(4)性能测试:主要检查软件在集成的系统中的运行性能。它对实时系统和嵌入式系统)性能测试:主要检查软件在集成的系统中的运行性能。它对实时系统和嵌入式系统尤为重要。性能测试常与强度测试相结合进行。经常需要其他软硬件的配套支持。尤为重要。性能测试常与强度测试相结合进行。经常需要其他软硬件的配套支持。9.4.4 系统测试系统测试 28目录页9.5 软件测试工具简介第9章测试工具即测试软件,就是可以替代部分人工测试工作的高效测试手段,既可以显著减测试工具即测试软件,就是可以替
35、代部分人工测试工作的高效测试手段,既可以显著减少测试开销,也能够保证测试的有效性。但到目前为止,完全自动化的测试软件还没有实现,少测试开销,也能够保证测试的有效性。但到目前为止,完全自动化的测试软件还没有实现,自动化测试只是针对大部分的测试工作。市场上有独立的软件测试工具,也有集成多个功能自动化测试只是针对大部分的测试工作。市场上有独立的软件测试工具,也有集成多个功能的自动测试工具集。下面简要的自动测试工具集。下面简要介绍一些自动测试工具。介绍一些自动测试工具。1静态分析程序静态分析程序2动态分析程序动态分析程序3断言处理程序断言处理程序4测试数据生成程序测试数据生成程序5文件比较程序文件比较
36、程序6性能测试工具性能测试工具29目录页9.6 调试第9章软件测试的目的是尽可能多地发现程序中的错误,而调试则是指成功的测试之后才开始软件测试的目的是尽可能多地发现程序中的错误,而调试则是指成功的测试之后才开始的工作。调试的目的是根据测试时发现的错误,找出错误的原因和具体位置,并改正错误,的工作。调试的目的是根据测试时发现的错误,找出错误的原因和具体位置,并改正错误,因此,调试也称为纠错或排错。测试与调试的不同如表因此,调试也称为纠错或排错。测试与调试的不同如表9-8所示。所示。9.6.1 调试的目的和步骤调试的目的和步骤 30目录页9.6 调试第9章调试是技巧性很强的工作,调试的关键在于推断
37、程序内部的错误位置及原因。调试工作调试是技巧性很强的工作,调试的关键在于推断程序内部的错误位置及原因。调试工作的困难与人的心理因素和技术因素都有关系,而心理因素的影响常常高于技术手段而占主导的困难与人的心理因素和技术因素都有关系,而心理因素的影响常常高于技术手段而占主导地位。常用的调试策略有:地位。常用的调试策略有:1.强行排错强行排错2.回溯法回溯法3.归纳法归纳法4.演绎法演绎法9.6.2 调试策略调试策略 31目录页9.6 调试第9章由于调试工作有查错和排错两项任务,因此调试原则也分成两组:由于调试工作有查错和排错两项任务,因此调试原则也分成两组:1查错原则查错原则(1)注重用头脑去分析
38、思考与错误征兆有关的信息。)注重用头脑去分析思考与错误征兆有关的信息。(2)避免用试探法,最多只能把它当作最后手段。)避免用试探法,最多只能把它当作最后手段。(3)调试工具不能代替人的思考,只能把它当作辅助手段来使用。)调试工具不能代替人的思考,只能把它当作辅助手段来使用。(4)避开死胡同。)避开死胡同。9.6.3 调试原则调试原则 32目录页9.6 调试第9章2排错原则排错原则(1)注意错误的群集现象,在错误近邻检查。)注意错误的群集现象,在错误近邻检查。(2)采用回归测试,避免因修改引起的新错误。)采用回归测试,避免因修改引起的新错误。(3)不能只修改错误的表现,要找到错误的本质并修改。)
39、不能只修改错误的表现,要找到错误的本质并修改。(4)要修改源代码,而不要修改目标代码。)要修改源代码,而不要修改目标代码。9.6.3 调试原则调试原则 33目录页9.7 面向对象软件测试简述第9章面向对象的测试模型是一种在整个软件开发过程中不断测试的测试模型,它使开发阶段面向对象的测试模型是一种在整个软件开发过程中不断测试的测试模型,它使开发阶段的测试与编码完成后的单元测试、集成测试、确认测试和系统测试成为一个整体。测试模型的测试与编码完成后的单元测试、集成测试、确认测试和系统测试成为一个整体。测试模型如图如图9-9所示。所示。9.7.1 面向对象的测试模型面向对象的测试模型 34目录页9.7
40、 面向对象软件测试简述第9章面向对象的测试模型是一种在整个软件开发过程中不断测试的测试模型,它使开发阶段面向对象的测试模型是一种在整个软件开发过程中不断测试的测试模型,它使开发阶段的测试与编码完成后的单元测试、集成测试、确认测试和系统测试成为一个整体。测试模型的测试与编码完成后的单元测试、集成测试、确认测试和系统测试成为一个整体。测试模型如图如图9-9所示。所示。9.7.1 面向对象的测试模型面向对象的测试模型 35目录页9.7 面向对象软件测试简述第9章1.面向对象分析测试(面向对象分析测试(OOA测试)测试)对面向对象分析的测试应从以下五个方面考虑:对面向对象分析的测试应从以下五个方面考虑
41、:(1)对认定的对象的测试。)对认定的对象的测试。(2)对认定的结构的测试。)对认定的结构的测试。(3)对认定的主题的测试。)对认定的主题的测试。(4)对定义的属性和实例关联的测试。)对定义的属性和实例关联的测试。(5)对定义的服务和消息关联的测试。)对定义的服务和消息关联的测试。9.7.1 面向对象的测试模型面向对象的测试模型 36目录页9.7 面向对象软件测试简述第9章2.面向对象设计测试(面向对象设计测试(OOD测试)测试)对面向对象设计的测试应从以下三方面考虑:对面向对象设计的测试应从以下三方面考虑:(1)对认定的类的测试。)对认定的类的测试。(2)对构造的类层次结构的测试。)对构造的
42、类层次结构的测试。(3)对类库的支持的测试。)对类库的支持的测试。3.面向对象编程的测试(面向对象编程的测试(OOP测试)测试)(1)数据成员是否满足封装的要求。)数据成员是否满足封装的要求。(2)类是否实现了所要求的功能。)类是否实现了所要求的功能。9.7.1 面向对象的测试模型面向对象的测试模型 37目录页9.7 面向对象软件测试简述第9章1面向对象的单元测试面向对象的单元测试面向对象的单元测试是进行面向对象集成测试的基础。面向对象的单元测试以类或对象面向对象的单元测试是进行面向对象集成测试的基础。面向对象的单元测试以类或对象为单位。由于类包含一组不同的操作,并且某些特殊的操作可能被多个类
43、共享,因此,单元为单位。由于类包含一组不同的操作,并且某些特殊的操作可能被多个类共享,因此,单元测试不能孤立地测试某个操作,而是将操作作为类的一部分来测试。测试不能孤立地测试某个操作,而是将操作作为类的一部分来测试。2面向对象的集成测试面向对象的集成测试因为在面向对象的软件中没有层次的控制结构,并且构成类的成分彼此之间存在着直接因为在面向对象的软件中没有层次的控制结构,并且构成类的成分彼此之间存在着直接或间接的交互作用,所以,传统意义上的自顶向下和自底向上的集成策略将不再适用。或间接的交互作用,所以,传统意义上的自顶向下和自底向上的集成策略将不再适用。9.7.2 面向对象的测试策略面向对象的测
44、试策略38目录页9.7 面向对象软件测试简述第9章3面向对象的确认测试面向对象的确认测试在确认测试层次,不需要再考虑类的实现和交互的具体细节,只要验证交互过程及功能,在确认测试层次,不需要再考虑类的实现和交互的具体细节,只要验证交互过程及功能,包括提供的用户界面,用户可见的操作,软件的反应和输出的结果等情况,其中测试用例的包括提供的用户界面,用户可见的操作,软件的反应和输出的结果等情况,其中测试用例的选择主要是依据动态模型和系统的脚本描述。选择主要是依据动态模型和系统的脚本描述。4面向对象的系统测试面向对象的系统测试面向对象的系统测试要以面向对象需求分析的结果为依据,应该参考面向对象的系统测试
45、要以面向对象需求分析的结果为依据,应该参考OOA分析的结果,分析的结果,对需求分析中描述的对象模型、交互模型等各种分析模型进行检验。对需求分析中描述的对象模型、交互模型等各种分析模型进行检验。9.7.2 面向对象的测试策略面向对象的测试策略39目录页9.7 面向对象软件测试简述第9章传统意义的软件测试用例的设计是从软件的传统意义的软件测试用例的设计是从软件的IPO视图或各个模块的算法细节得出的,而面视图或各个模块的算法细节得出的,而面向对象软件的测试用例更关注于设计适当的操作序列以检查类的状态,目前,还处于研究和向对象软件的测试用例更关注于设计适当的操作序列以检查类的状态,目前,还处于研究和发
46、展阶段。通常,黑盒测试也适用于面向对象的软件测试。测试用例设计的要点如下:发展阶段。通常,黑盒测试也适用于面向对象的软件测试。测试用例设计的要点如下:(1)每个测试用例都要有一个唯一的标识,并与被测试的一个或几个类相关联。)每个测试用例都要有一个唯一的标识,并与被测试的一个或几个类相关联。(2)每个测试用例都要陈述测试目的。)每个测试用例都要陈述测试目的。(3)对每个测试用例都要有相应的测试步骤,包括被测试对象的特定状态、所使用的消)对每个测试用例都要有相应的测试步骤,包括被测试对象的特定状态、所使用的消息和操作、可能产生的错误及测试需要的外部环境等。息和操作、可能产生的错误及测试需要的外部环
47、境等。9.7.3 面向对象的测试用例设计面向对象的测试用例设计40目录页9.8 项目实践:图书管理系统软件测试第9章用户登录界面用户登录界面9.8.1 功能测试功能测试41目录页9.8 项目实践:图书管理系统软件测试第9章用户登录测试用例用户登录测试用例(样式一)(样式一)9.8.1 功能测试功能测试编号测试内容测试步骤预期结果实际结果1密码正确时登录选择用户名admin,输入密码123,单击“确定”按钮登录成功,进入主界面2密码错误时登录选择用户名admin,输入密码135,单击“确定”按钮错误提示“密码错误,请重输”3密码为空时登录选择用户名admin,不输入任何密码,单击“确定”按钮错误
48、提示“密码错误,请重输”4能否选择用户选择用户名“高树芳”,输入密码abc123,单击“确定”按钮登录成功,进入主界面5密码大小写选择用户名“高树芳”,输入密码ABC123,单击“确定”按钮错误提示“密码错误,请重输”6取消按钮不论输入信息与否,单击“取消”按钮关闭对话框,结束登录7已停用用户能否登录检查用户名下拉框是否包括“张老师”不包括用户“张老师”42目录页9.8 项目实践:图书管理系统软件测试第9章用户登录测试用例用户登录测试用例(样式二)(样式二)9.8.1 功能测试功能测试功能名称用户登录用例编号YHDL-01测试模块用户登录模块测试类型单元测试测试日期测试人测试目标验证用户能否登
49、录测试步骤:1)在用户名处下拉框中选择用户,如admin;2)在密码处输入用户密码,如123;3)单击“确定”按钮或单击“取消”按钮。预期结果:1)当用户密码正确时,用户登录成功,进入图书管理系统主界面;2)当用户密码不正确、为空、或者字母大小写不正确时,提示“密码错误,请重输”信息;3)不论是否输入密码,单击“取消”按钮时,都关闭对话框,结束登录操作;4)已停用的用户不在用户名处下拉框中出现。测试结果记录:审查结果:该功能正确该功能不正确,请说明:审查日期审查人43目录页9.8 项目实践:图书管理系统软件测试第9章系统主窗口界面系统主窗口界面9.8.2 界面测试界面测试44目录页9.8 项目
50、实践:图书管理系统软件测试第9章界面测试用例界面测试用例9.8.2 界面测试界面测试编号测试内容测试步骤预期结果测试结果1主窗口初始状态。包括控件状态、位置;菜单状态;工具栏状态;导航栏状态;各个按钮的有效性等目测主窗口各元素的状态和位置;要从易用性、规范性、合理性、美观与协调性方面检查如:各按钮使用的图标要能直观地代表要完成的操作,按钮名称易懂,用词准确,能望文知义;界面按Windows界面的规范设计;界面符合美学观点,感觉协调舒适2菜单及菜单项的的组成、位置及有效性目测菜单及菜单项的组成和位置;依次单击各个菜单条和各菜单栏中的菜单项,检查能否显示对应的窗体菜单栏应有“系统设置”、“资料管理