(本科)第八章 软件测试ppt课件.pptx
课程主讲人:第八章 软件测试软件测试所设计的软件符合要求吗?用户满意吗?还是先做测试吧!q软件测试的基本概念软件测试的基本概念 q测试技术测试技术q黑盒测试黑盒测试q白盒测试白盒测试 q测试策略测试策略q面向对象的软件测试面向对象的软件测试q程序的调试程序的调试 软件测试概述基本概念典型案例 美国航天局火星极地登陆 英特尔奔腾CPU浮点除法错误 使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别 (4195835/3145727)*3145727-4195835 =?软件测试 为了发现程序中的错误而执行程序的过程。具体地说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例测试用例,并利用测试用例来运行程序,以发现程序错误的过程。软件测试概述基本概念软件本身的特点所置:智力产品软件为什么会产生缺陷或错误?软件测过程软件软件配置配置测试测试测试测试配置配置测试测试工具工具结果结果分析分析排错排错可靠性可靠性 分析分析测试测试结果结果错误错误预期预期结果结果出错率出错率 改正改正的软件的软件预测预测的可的可靠性靠性需求规格说明书需求规格说明书软件设计说明书软件设计说明书 被测源程序被测源程序 测试计划测试计划 测试用例测试用例( (测试数据测试数据) )测试驱动程序测试驱动程序测试目标与原则测试目标 好的测试用例能够发现至今尚未发现的错误 测试是一个为了发现错误而执行程序的过程 及早发现不能满足需求的错误测试原则 测试应该贯穿于开发全过程一个成功的测试是发现了至今尚未发现的错误必须制订完善合理的测试计划80:20原则也同样适用于测试测试人员不应是开发人员测试应该由小到大完全的测试是不可能的测试分类大全 测试步骤与策略 测试技术测试环境测试的功能 单元测试集成测试确认测试系统测试测试测试黑盒测试白盒测试静态分析动态测试配置测试兼容性测试语言测试文档测试特殊测试压力测试不执行被测代码,只对相关文档进行静态审查选取输入的有效值或无效值;根据程序的功能预期输出的结果;将选取值作为程序的输入,执行程序;观察程序的输出并记录;将输出结果与预期结果进行比较,如不一致则说明程序存在错误,如一致再选择下一组值重复进行。 测试软件对各种硬件平台的兼容性测试软件对其它软件的兼容性测试软件在高负荷下的性能测试软件在各种语言下的适应性测试软件文档的正确性WEB测试C/S测试嵌入式系统测试实时系统测试测试用例测试用例的好处 测试用例是为某个测试目标而编制的一组测试输入、执行条件以及预期结果的方案,以便测试某个程序路径或核实是否满足某个特定需求。 测试用例反映了用户的需求。对测试过程可以进行有效的监督,可以准确、有效的评估测试的工作量。 可以对测试结果进行评估,并且对测试是否完成产生一个量化的结果。 可以在回归测试的过程中准确、快速的进行正确的回归。 测试用例的使用令软件测试的实施重点突出、目的明确。在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。 测试用例测试用例应基于用户需求 测试用例的设计测试用例的设计测试用例应考虑使用对象 测试用例设计应由粗到细 所有的用例都必须经过评审 测试用例的格式测试用例的格式l 编号:惟一编号l前置条件:说明测试路径l输入:输入的条件l期望输出:期望输出的结果 实际输出:实际输出的结果l是否正确:是/否l执行人:测试用例执行人标志执行时间:测试用例执行的时间 黑盒测试及测试用例黑盒测试黑盒测试闭着眼睛测试闭着眼睛测试软件输入输入不深入代码细节的测试方法称为动态黑盒测试不深入代码细节的测试方法称为动态黑盒测试软件测试员充当客户来使用它软件测试员充当客户来使用它输出输出v功能与性能是否满足要求v输出是否正确v外部信息能否保持完整v是否存在初始化或终止性错误黑盒测试及测试用例等价类法等价分类法基本思想等价分类法基本思想将所有可能的输入数据划分成苦干个等价类,可以假设:每类将所有可能的输入数据划分成苦干个等价类,可以假设:每类中的一个典型值在测试中的作用与这一类中所有其他值的作用中的一个典型值在测试中的作用与这一类中所有其他值的作用是相同的。因此可以从每个等价类中只取一组数据作为测试数是相同的。因此可以从每个等价类中只取一组数据作为测试数据。这样选取的测试数据最具有代表性,最有可能发现程序中据。这样选取的测试数据最具有代表性,最有可能发现程序中的错误。的错误。 案例 例例: :某报表处理系统要求用户输入处理某报表处理系统要求用户输入处理 报表的日期,日期限制在报表的日期,日期限制在20012001年年1 1 月至月至20052005年年1212月,即系统只能对该月,即系统只能对该 段期间内的报表进行处理,如日期段期间内的报表进行处理,如日期 不在此范围内,则显示输入错误信不在此范围内,则显示输入错误信 息。息。 系统日期规定由年、月的系统日期规定由年、月的6 6位数字位数字 字符组成,前四位代表年,后两位字符组成,前四位代表年,后两位 代表月。代表月。 如何用等价类划分法设计测试用例如何用等价类划分法设计测试用例, , 来测试程序的日期检查功能?来测试程序的日期检查功能?黑盒测试及测试用例等价类法如何划分等价类如何划分等价类划分原则 有效等价类有效等价类( (合理等价类合理等价类) )无效等价类无效等价类( (不合理等价类不合理等价类) ) 覆盖:所选类别应能覆盖所有可能的类别覆盖:所选类别应能覆盖所有可能的类别不相交:一种取值只测试某一种等价类不相交:一种取值只测试某一种等价类代表性:取值能代表某一种等价类代表性:取值能代表某一种等价类等价类 黑盒测试及测试用例等价类法划分等价类规则划分等价类规则如果输入条件规定了取值范围,可定义一个有如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类效等价类和两个无效等价类规则1 例例: :输入值是学生成绩,范围是输入值是学生成绩,范围是0 01001000 1000 100 无效等价类无效等价类 成绩成绩0100100黑盒测试及测试用例等价类法划分等价类规则划分等价类规则v 如果输入条件代表集合的某个元素,则可定义一个有如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类效等价类和一个无效等价类。规则规则2 2 v 如规定了输入数据的一组值,且程序对不同输入值做如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类并有一个无效等价类( (所有不允许的输入值的集合所有不允许的输入值的集合) )。规则规则3 3 例例: :输入值是学历,允许值:输入值是学历,允许值:专科、本科、硕士、博士专科、本科、硕士、博士有效等价类有效等价类专科专科本科本科硕士硕士博士博士无效等价类:其它任何学历无效等价类:其它任何学历黑盒测试及测试用例等价类法划分等价类规则划分等价类规则如果规定了输入数据应该遵守的规则,则可以将如果规定了输入数据应该遵守的规则,则可以将符合规则划分为一个有效的等价类,而将不符合符合规则划分为一个有效的等价类,而将不符合规则作为一个无效的等价类规则作为一个无效的等价类 。规则4如果规定输入的数据必须是整数,则可以划分出如果规定输入的数据必须是整数,则可以划分出正整数、零、负整数等三个有效类。正整数、零、负整数等三个有效类。 规则5 黑盒测试及测试用例等价类法根据等价类设计测试用例根据等价类设计测试用例形成等价类表,每一等价类规定一个惟一的编号形成等价类表,每一等价类规定一个惟一的编号设计一测试用例,使其尽可能多地覆盖尚未覆盖设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;价类均被测试用例所覆盖;设计一新测试用例,使其只覆盖一个无效等价类设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖;,重复这一步骤直到所有无效等价类均被覆盖;步骤等价类法案例案例报表日期输入测试用例报表日期输入测试用例步骤1:等价类划分输入等价类输入等价类 有效等价类有效等价类 无效等价类无效等价类 3 3位数字字符位数字字符(1)(1)有非数字字符有非数字字符 (4)(4)少于少于6 6个数字字符个数字字符 (5)(5)多于多于6 6个数字字符个数字字符 (6)(6)年份范围年份范围在在2001200120052005之间之间 (2)(2)小于小于20012001 (7) (7)大于大于20052005 (8) (8)月份范围月份范围在在1 11212之间之间(3)(3)“报表日期报表日期”输入条件的等价类表输入条件的等价类表小于小于1 1 (9) (9)大于大于1212 (10) (10)报表日期的报表日期的类型及长度类型及长度等价类法案例案例报表日期输入测试用例报表日期输入测试用例步骤2:设计有效类的测试用例对表中编号为对表中编号为1,2,31,2,3的的3 3个有效等价类用一个测试用例覆盖个有效等价类用一个测试用例覆盖 测试数据测试数据 期望结果期望结果 覆盖范围覆盖范围200105200105等价类等价类(1)(2)(3)(1)(2)(3)输入有效输入有效案例案例报表日期输入测试用例报表日期输入测试用例步骤3:设计无效类的测试用例对上表中每个无效类至少设计一个测试用例对上表中每个无效类至少设计一个测试用例测试数据测试数据期望结果期望结果覆盖范围覆盖范围001WAY200152001005200005200805200100200113输入无效输入无效输入无效输入无效输入无效输入无效输入无效输入无效输入无效输入无效输入无效输入无效输入无效输入无效等价类等价类(4)(4)等价类等价类(5)(5)等价类等价类(6)(6)等价类等价类(7)(7)等价类等价类(8)(8)等价类等价类(9)(9)等价类等价类(10)(10)不能出不能出现相同现相同的测试的测试用例用例边界值分析法基本思想边界值分析法基本思想边界值分析法是使用一些输入边界值分析法是使用一些输入/ /输出值正好等于、小于或输出值正好等于、小于或大于边界值的测试用例对程序进行测试。边界值分析法作大于边界值的测试用例对程序进行测试。边界值分析法作为一种测试技术,通常作为等价分类法的补充。为一种测试技术,通常作为等价分类法的补充。边界条件的确定边界条件的确定能够作为边界条件的数据类型通常是数值、字符、位能够作为边界条件的数据类型通常是数值、字符、位置、数量、速度、尺寸等置、数量、速度、尺寸等 接近边界的合法数据和刚超过边界的非法数据接近边界的合法数据和刚超过边界的非法数据 注意隐含在程序内部或数据结构内的边界数据注意隐含在程序内部或数据结构内的边界数据如果在程序中使用了内部数据结构如数组,则应该选如果在程序中使用了内部数据结构如数组,则应该选择这个结构的边界值进行测试择这个结构的边界值进行测试 错误推测法错误推测法基本思想错误推测法基本思想列举出程序可能有的错误和容易发生错误的特殊列举出程序可能有的错误和容易发生错误的特殊情况,并据此设计测试用例。情况,并据此设计测试用例。错误的确定错误的确定输入数据为输入数据为0 0或使输出数据为或使输出数据为0 0的输入最有可能出现的输入最有可能出现错误错误 如果分别使用每组测试数据都没有问题,可以输入如果分别使用每组测试数据都没有问题,可以输入这些数据的组合这些数据的组合 如果分别使用每组测试数据都没有问题,可以输入如果分别使用每组测试数据都没有问题,可以输入这些数据的组合这些数据的组合 白盒测试及测试用例白盒测试白盒测试戴上戴上X光眼睛测试光眼睛测试3581322.293419985680302829734315? ?250*(1+0.015)*(1+0.015)360-1)/0.015250*(1+0.015)*(1+0.015)360-1)/0.015假如知道一个盒子包含一台计算机假如知道一个盒子包含一台计算机, ,而另一个盒子而另一个盒子是人用纸笔计算是人用纸笔计算, ,就会选择不同的测试用例就会选择不同的测试用例了解软件的运作方式会影响测试手段了解软件的运作方式会影响测试手段静态白盒分析静态白盒分析静态白盒分析代码审查代码审查审查准备审查准备审查规则审查规则审查问题审查问题审查报告审查报告审查重点数据引用错误数据引用错误数据声明错误数据声明错误计算错误计算错误比较错误比较错误控制流错误控制流错误过程参数错误过程参数错误输入输出错误输入输出错误其他错误其他错误动态白盒测试动态白盒测试动态白盒测试目的目的保证一个模块中的所有独立路径至少被执行一次保证一个模块中的所有独立路径至少被执行一次对所有的逻辑值均需要测试真、假两个分支对所有的逻辑值均需要测试真、假两个分支 在上下边界及可操作范围内运行所有循环在上下边界及可操作范围内运行所有循环 检查内部数据结构以确保其有效性检查内部数据结构以确保其有效性 测试方法测试方法逻逻辑辑覆覆盖盖法法基基本本路路径径测测试试动态白盒测试动态白盒测试动态白盒测试目的目的保证一个模块中的所有独立路径至少被执行一次保证一个模块中的所有独立路径至少被执行一次对所有的逻辑值均需要测试真、假两个分支对所有的逻辑值均需要测试真、假两个分支 在上下边界及可操作范围内运行所有循环在上下边界及可操作范围内运行所有循环 检查内部数据结构以确保其有效性检查内部数据结构以确保其有效性 测试方法测试方法逻辑覆盖法逻辑覆盖法基本路径测试基本路径测试语语句句覆覆盖盖 判判断断覆覆盖盖 条条件件覆覆盖盖 判判定定条条件件覆覆盖盖 条条件件组组合合覆覆盖盖 循循环环覆覆盖盖 动态白盒测试void DoWork(int x,int y,int z)void DoWork(int x,int y,int z) int k=0,j=0; int k=0,j=0; if (x3)&(z3)&(z5) if (x= =4)|(y5) j=x j=x* *y+10; /y+10; /语句块语句块2 2 j=j%3; / j=j%3; /语句块语句块3 3 案例:源程序案例:源程序动态白盒测试案例:程序流程图案例:程序流程图No执行语句块1(x3)&(z3)&(z5)(x=4)|(y5)入口执行语句块2执行语句块3结束acbedYesNoYes动态白盒测试动态白盒测试动态白盒测试语句覆盖语句覆盖设计若干个测试用例,运行被测试程序,使得每一条可执行设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次语句至少执行一次 案例分析案例分析只要设计一个测试用例就可以把三个执行语句块中的只要设计一个测试用例就可以把三个执行语句块中的语句覆盖了语句覆盖了( (测试路径为测试路径为ABD)ABD)。测试用例可设计为:。测试用例可设计为: x=4 x=4、y=5y=5、z=5 z=5 语句覆盖是语句覆盖是最弱最弱的逻辑覆盖的逻辑覆盖动态白盒测试动态白盒测试动态白盒测试判断覆盖判断覆盖设计若干个测试用例,运行所测程序,使程序中每个判断的设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次取真分支和取假分支至少执行一次 案例分析案例分析设计两个测试用例则可以满足条件覆盖的要求。测试用例设计两个测试用例则可以满足条件覆盖的要求。测试用例可设计为:可设计为: x=4 x=4、y=5y=5、z=5z=5,通过的路径为,通过的路径为abdabd; x=2 x=2、y=5y=5、z=5z=5,通过的路径为,通过的路径为aceace。 判断覆盖仍然是判断覆盖仍然是弱弱的逻辑覆盖的逻辑覆盖动态白盒测试动态白盒测试动态白盒测试条件覆盖条件覆盖设计足够多的测试用例,运行所测程序,使程序中每个判断的每设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次个条件的每个可能取值至少执行一次 案例分析案例分析设:对于第一个判断:设:对于第一个判断:条件条件x3 x3 取真值为取真值为T1T1,取假值为,取假值为-T1-T1条件条件z10 z5 y5 取真值为取真值为T4T4,取假值为,取假值为-T4-T4测试用例测试用例 通过路径通过路径 条件取值条件取值 覆盖分支覆盖分支 x=4,y=6,z=5abdT1,T2,T3,T4bdx=2,y=5,z=5ace-T1,T2,-T3,-T4cex=4,y=5,z=15acdT1,-T2,T3,-T4cd分析?分析?动态白盒测试动态白盒测试动态白盒测试判断判断/条件覆盖条件覆盖设计足够多的测试用例,运行所测程序,使程序中每个判断的每设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次也至少执行一次 案例分析案例分析基于同样的假设,所设计的测试用例如下:基于同样的假设,所设计的测试用例如下:测试用例测试用例 通过路径通过路径 条件取值条件取值 覆盖分支覆盖分支 x=4,y=6,z=5abdT1,T2,T3,T4T1,T2,T3,T4bdx=2,y=5,z=11 ace-T1,-T1,- -T2,-T3,-T4T2,-T3,-T4ce能同时满足判定、条件两种覆盖标准,但逻辑表达式中的错误不能同时满足判定、条件两种覆盖标准,但逻辑表达式中的错误不一定能够查出来一定能够查出来 动态白盒测试动态白盒测试动态白盒测试条件组合覆盖条件组合覆盖设计足够多的测试用例,运行所测程序,使程序中每个判断的所设计足够多的测试用例,运行所测程序,使程序中每个判断的所有可能的条件取值组合至少执行一次有可能的条件取值组合至少执行一次 案例分析案例分析基于同样的假设,两个条件两个判断共有基于同样的假设,两个条件两个判断共有8 8种可能,因此,所设种可能,因此,所设计的测试用例如下:计的测试用例如下:测试用例测试用例 通过路径通过路径 条件取值条件取值 覆盖分支覆盖分支 x=4,y=6,z=5 abdT1,T2,T3,T4T1,T2,T3,T4bdx=4,y=5,z=15 acdT1,-T2,T3,-T4T1,-T2,T3,-T4cdx=2,y=6,z=5 acd-T1,T2,-T3,T4-T1,T2,-T3,T4cdx=2,y=5,z=15 ace-T1,-T1,- -T2,-T3,-T4T2,-T3,-T4ce既覆盖了各种条件的可能取值的组合,又覆盖了所有判断的可既覆盖了各种条件的可能取值的组合,又覆盖了所有判断的可取分支取分支 动态白盒测试动态白盒测试动态白盒测试循环覆盖循环覆盖简单循环简单循环 循环分类循环分类设设N N为最大循环次数为最大循环次数跳过循环跳过循环 只有一次通过循环只有一次通过循环 两次通过循环两次通过循环 m m次通过循环,其中次通过循环,其中mn m 0)4 while (iRecordNum 0)5 5 6 6 if(0=iType) if(0=iType)7 7x=y+2;x=y+2;8 else8 else9 9 if(1= =iType) if(1= =iType)10 10 x=y+10; x=y+10;11 else11 else12 x=y+20;12 x=y+20;13 13 14 14 案例:源程序案例:源程序动态白盒测试基本路径测试基本路径测试流图绘制流图绘制顺序结构顺序结构ifif结构结构whilewhile结构结构untiluntil结构结构casecase结构结构动态白盒测试7案例:流程图案例:流程图流图绘制流图绘制46871011131446813101114动态白盒测试基本路径测试基本路径测试流图的环复杂度计算流图的环复杂度计算给定流图给定流图G的环复杂度的环复杂度V(G) 有两种计算方法:有两种计算方法:uV(G)=E-N+2,E是流图中边的数量,是流图中边的数量,N是流图中结点的数量是流图中结点的数量 uE=10,N=8,V(G)=10-8+2=4 uV(G)=P+1,P是流图是流图G中判定结点的数量中判定结点的数量 u流图中有三个判定结点流图中有三个判定结点4、6、8,所以,所以V(G)=3+1=4 需测试的独立路径确定需测试的独立路径确定最小测试路径数等于环复杂度最小测试路径数等于环复杂度V(G)=4 V(G)=4 v路径路径1:4-14v路径路径2:4-6-7-14v路径路径3:4-6-8-10-13-4-14v路径路径4:4-6-8-11-13-4-14每条独立路径都必须至少包含一条新的每条独立路径都必须至少包含一条新的边,独立路径不能重复,也不能是其它边,独立路径不能重复,也不能是其它独立路径的简单合并独立路径的简单合并 动态白盒测试基本路径测试基本路径测试设计测试用例设计测试用例确定了测试路径就可以设计测试用例:确定了测试路径就可以设计测试用例:编号编号 输入数据输入数据 期望结果期望结果 测试路径测试路径 1iRecordNum=0或=-10 04-142iRecordNum=1,iType=00 04-6-7-143iRecordNum=1,iType=110104-6-8-10-13-4-144iRecordNum=1,iType=220204-6-8-11-13-4-14动态白盒测试墨盒测试墨盒测试&白盒测试白盒测试u墨盒测试:功能测试、数据驱动测试、墨盒测试:功能测试、数据驱动测试、 基于规格基于规格说明书的测试说明书的测试u白盒测试:白盒测试:开盒测试、结构测试、玻璃盒测试、基于开盒测试、结构测试、玻璃盒测试、基于覆盖的测试覆盖的测试名称名称测试测试依据依据u墨盒测试:从用户观点,按规格说明书要求的输墨盒测试:从用户观点,按规格说明书要求的输入数据与输出数据的对应关系设计测试用例入数据与输出数据的对应关系设计测试用例,是根据是根据程序程序外部特征外部特征进行测试。进行测试。u白盒测试:是根据程序白盒测试:是根据程序内部逻辑结构内部逻辑结构进行测试。进行测试。动态白盒测试黑盒测试黑盒测试白盒测试白盒测试优点优点适用于各阶段测试适用于各阶段测试从产品功能角度测试从产品功能角度测试容易入手生成测试数容易入手生成测试数 据据可构成测试数据使特定程可构成测试数据使特定程 序部分得到测试序部分得到测试有一定的充分性度量手段有一定的充分性度量手段可或较多工具支持可或较多工具支持缺点缺点某些代码得不到测试某些代码得不到测试如果规格说明有误,则无法如果规格说明有误,则无法发现发现不易进行充分性测试不易进行充分性测试不易生成测试数据不易生成测试数据(通常通常)无法对未实现规格说明的部分无法对未实现规格说明的部分进行测试进行测试工作量大,通常只用于单元测工作量大,通常只用于单元测试,有应用局限试,有应用局限性质性质 是一种是一种确认确认技术,回答技术,回答“我们我们在构造一个正确在构造一个正确 的系统吗的系统吗”是一种是一种验证验证技术,回答技术,回答“我们在我们在正正确地构造一个系统吗确地构造一个系统吗?”软件测试策略测试流程与组织软件测试总体流程软件测试总体流程设计信息集成集成测试测试确认确认测试测试已测模块1.单元单元测试测试模块模块1已测模块n单元单元测试测试模块模块n已集成的软件软件需求系统系统测试测试已确认的软件其他系统元素可运行的系统软件测试策略测试流程与组织软件测试步骤软件测试步骤执行测试执行测试撰写测试报告撰写测试报告消除软件缺陷消除软件缺陷制定测试计划制定测试计划审批审批设计测试用例设计测试用例审批审批回归测试回归测试完成完成测试测试完成完成准则准则启动启动准则准则测试流程与组织测试技术员:负责建立测试硬件和软件配置,执行简单的测试脚本,测试技术员:负责建立测试硬件和软件配置,执行简单的测试脚本,可以进行软件缺陷的分离、再现可以进行软件缺陷的分离、再现 测试工程师:能够进行测试用例与测试程序的编写,可以参与设计和测试工程师:能够进行测试用例与测试程序的编写,可以参与设计和各种文档的审查,具有编写测试自动化或测试工具的能力,在进行白各种文档的审查,具有编写测试自动化或测试工具的能力,在进行白盒测试时可以与程序员密切合作盒测试时可以与程序员密切合作 测试负责人:负责软件项目主要部分的测试,有时负责整个小型项目测试负责人:负责软件项目主要部分的测试,有时负责整个小型项目的测试。通常要制订测试计划,监督其他测试员实施测试的测试。通常要制订测试计划,监督其他测试员实施测试 测试管理员:监督整个项目甚至多个项目的测试,测试负责人要向他测试管理员:监督整个项目甚至多个项目的测试,测试负责人要向他们报告。他们与项目管理员、开发管理员一起设计进度、优先级与目们报告。他们与项目管理员、开发管理员一起设计进度、优先级与目标,同时还要为项目提供合适的资源标,同时还要为项目提供合适的资源人员、设备、场地等人员、设备、场地等 软件测试策略测试计划软件测试计划的构成软件测试计划的构成错误级别错误级别u项目基本情况项目基本情况 u测试任务测试任务 u测试的策略测试的策略 u测试组织测试组织 u测试评价测试评价 致命性错误致命性错误 严重性错误严重性错误 一般性错误一般性错误 告警性错误告警性错误 建设性的建议建设性的建议 软件测试策略软件测试策略测试计划测试计划软件测试计划的构成软件测试计划的构成错误级别错误级别u项目基本情况项目基本情况 u测试任务测试任务 u测试的策略测试的策略 u测试组织测试组织 u测试评价测试评价 致命性错误致命性错误 严重性错误严重性错误 一般性错误一般性错误 告警性错误告警性错误 建设性的建议建设性的建议 软件测试策略单元测试单元测试的主要内容单元测试的主要内容规程与环境规程与环境被测被测模块模块测试用例接口局部数据结构路径错误处理边界条件驱动模块桩模块桩模块测试结果驱动模块驱动模块(driver)相当于所测模相当于所测模块的主程序。它接收测试数据,块的主程序。它接收测试数据,把这些数据传送给所测模块,最把这些数据传送给所测模块,最后再输出实际测试结果后再输出实际测试结果 桩模块桩模块(stub)用于代替所测模块用于代替所测模块调用的子模块。桩模块可以做少调用的子模块。桩模块可以做少量的数据操作量的数据操作 模块接口测试模块接口测试 局部数据结构测试局部数据结构测试 路径测试路径测试 错误处理测试错误处理测试 边界测试边界测试 案例文档之十四案例文档之十四单元测试用例单元测试用例软件测试策略集成测试集成测试的目的集成测试的目的集成策略集成策略集成一般不可能一次成功,集成中总存在这样那样的错误集成一般不可能一次成功,集成中总存在这样那样的错误 当将多个模块通过接口相连集成在一起时,数据可能在接口中产当将多个模块通过接口相连集成在一起时,数据可能在接口中产生错误甚至丢失生错误甚至丢失集成后一个模块可能对另一个模块产生副作用,全局的数据结构集成后一个模块可能对另一个模块产生副作用,全局的数据结构也有可能出现问题也有可能出现问题 非增量式集成,即按照系统结构图一次性地将所有模块全部组装非增量式集成,即按照系统结构图一次性地将所有模块全部组装起来,然后进行测试,也就是所谓的起来,然后进行测试,也就是所谓的“一步到位一步到位” ” 注定要失败注定要失败增量集成,即按照系统结构图采用自顶而下或自底向上的方式一增量集成,即按照系统结构图采用自顶而下或自底向上的方式一步一步地构造测试,逐步组装直到系统完成。步一步地构造测试,逐步组装直到系统完成。 软件测试策略集成测试集成的方式集成的方式自顶而下集成:首先集成主控模块自顶而下集成:首先集成主控模块( (主程序主程序) ),然后按照系统结构图的,然后按照系统结构图的层次结构逐步向下集成。层次结构逐步向下集成。M1M2M4M5M6M8M7M3装配顺序装配顺序深深度度优优先先宽宽度度优优先先深度优先深度优先宽度优先宽度优先M2M4M5M6M8M3M7软件测试策略集成测试集成的方式集成的方式自底向上集成是从系统结构的最底层的模块开始自底向上集成是从系统结构的最底层的模块开始来构造系统的,逐步安装,逐步测试来构造系统的,逐步安装,逐步测试。 特点特点不再需要桩模块,但它需要驱动模块不再需要桩模块,但它需要驱动模块 设计测试用例比较容易设计测试用例比较容易 只有将最后一个模块组装完成后,系统才能作为一个整体存在只有将最后一个模块组装完成后,系统才能作为一个整体存在 软件测试策略确认测试有效性测试有效性测试有效性测试要求在模拟环境下通过一系列黑盒测试以验证所测软件功有效性测试要求在模拟环境下通过一系列黑盒测试以验证所测软件功能与用户的需求是否一致能与用户的需求是否一致 。 可执行程序、源程序、配置脚本、测试程序或脚本可执行程序、源程序、配置脚本、测试程序或脚本 主要的开发类文档:主要的开发类文档:需求分析说明书需求分析说明书、概要设计说明书概要设计说明书 主要的管理类文档:主要的管理类文档:项目计划书项目计划书、质量控制计划质量控制计划、配置配置管理计划管理计划 配置复审配置复审 软件配置软件配置 复审步骤复审步骤问题追踪问题追踪计划计划预备会议预备会议准备准备审核审核软件测试策略确认测试测试测试测试是指软件开发公司组织内部人员模拟各类测试是指软件开发公司组织内部人员模拟各类用户或由某些用户在开发场所对即将面市的软件用户或由某些用户在开发场所对即将面市的软件产品(称为产品(称为版本)进行测试,试图发现错误并版本)进行测试,试图发现错误并修正修正 软件开发公司组织各方面的典型用户在日常工作软件开发公司组织各方面的典型用户在日常工作中实际使用中实际使用版本,并要求用户报告异常情况、版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对提出批评意见。然后软件开发公司再对版本进版本进行改错和完善行改错和完善 测试测试软件测试策略系统测试系统测试系统测试系统测试是基于实际应用环境对计算机系统的一种多方系统测试是基于实际应用环境对计算机系统的一种多方位的测试,每一种测试都具有不同的目的,但所有的测位的测试,每一种测试都具有不同的目的,但所有的测试都是为了检验各个系统成分能否正确集成到一起并且试都是为了检验各个系统成分能否正确集成到一起并且是否能完成预定的功能是否能完成预定的功能 测试目的测试目的恢复测试:恢复测试: 测试计算机系统在一定时间内在错误情况测试计算机系统在一定时间内在错误情况下恢复并能继续运行的能力下恢复并能继续运行的能力 安全性测试:测试计算机系统内的保护机制能否保护系安全性测试:测试计算机系统内的保护机制能否保护系统不受到非法侵入统不受到非法侵入 压力测试压力测试 :测试软件对非正常情况的处理能力:测试软件对非正常情况的处理能力 性能测试性能测试 :测试软件在集成系统中的运行性能:测试软件在集成系统中的运行性能 软件测试策略测试分析报告报告内容报告内容项目基本情况介绍项目基本情况介绍 测试计划的执行情况测试计划的执行情况 主要说明测试的组织情况、每个项目主要说明测试的组织情况、每个项目的测试结果等的测试结果等 测试评价测试评价 说明经过测试所表明的软件能力、存在的缺陷及说明经过测试所表明的软件能力、存在的缺陷及限制以及可能对软件运行所带来的影响、弥补缺陷的建议,限制以及可能对软件运行所带来的影响、弥补缺陷的建议,最后说明能否通过的测试结论最后说明能否通过的测试结论 案例文档之十五案例文档之十五测试分析报告测试分析报告面向对象的软件测试OOT影响OOT对传统测试的影响对传统测试的影响OOA/OOD/OOP/OOT OOA/OOD/OOP/OOT 信息隐蔽和封装性对测试的影响信息隐蔽和封装性对测试的影响 继承性对测试的影响继承性对测试的影响 多态性和动态绑定对测试的影响多态性和动态绑定对测试的影响 软件的基本构造模块软件的基本构造模块 OOT策略与步骤OOT策略策略测试的视角要扩大,测试应该贯穿于系统开发的全过程测试的视角要扩大,测试应该贯穿于系统开发的全过程 传统的单元测试和集成测试策略必须有较大的改传统的单元测试和集成测试策略必须有较大的改变,要适应面向对象的一些基本特性变,要适应面向对象的一些基本特性 测试用例的设计必须考虑测试用例的设计必须考虑OOOO软件的特征软件的特征 传统的测试传统的测试OOP软件的测试软件的测试采用的测试方法采用的测试方法静态测试观察单元测试方法测试类测试对象测试白盒测试黑盒测试集成测试类的集成测试黑盒测试确认测试确认测试黑盒测试系统测试系统测试黑盒测试 测试层次测试层次OOT策略与步骤静态测试静态测试静态测试主要是对静态测试主要是对OOOO软件的软件的GUIGUI进行测试,只是进行测试,只是从从GUIGUI的表面来观察软件的正确性与可靠性。的表面来观察软件的正确性与可靠性。 案例文档之十六案例文档之十六测评系统测评系统的的GUI静态检查表静态检查表 方法测试类测试类测试 对象测试代码测试,可以用传统的白盒代码覆盖技术进行测代码测试,可以用传统的白盒代码覆盖技术进行测试,如逻辑覆盖、基本路径覆盖等测试方法来进行试,如逻辑覆盖、基本路径覆盖等测试方法来进行 对象测试主要是指对各种窗口、菜单、工具栏的测对象测试主要是指对各种窗口、菜单、工具栏的测试,它可以被认为是前述试,它可以被认为是前述GUIGUI静态测试的延伸静态测试的延伸 OOT策略与步骤类集成测试类集成测试面向对象的集成测试通常需要在整个程序编译完成面向对象的集成测试通常需要在整个程序编译完成 进行基进行基于墨盒的集成测试。于墨盒的集成测试。 静态静态测试测试 动态动态测试测试针对程序的结构进行,借助于适当的工具通过与针对程序的结构进行,借助于适当的工具通过与OODOOD结果的比较,检测程序结构是否符合设计要求,其目结果的比较,检测程序结构是否符合设计要求,其目的是检验的是检验OODOOD是否达到设计要求是否达到设计要求 通过墨盒测试法,设计一定的测试用例,使得测试能通过墨盒测试法,设计一定的测试用例,使得测试能够达到一定的覆盖率。够达到一定的覆盖率。OOT策略与步骤确认测试确认测试当集成测试完成以后,类之间连接的细节将会消失。借助当集成测试完成以后,类之间连接的细节将会消失。借助于于USE-Case,USE-Case,与传统确认一样,确认测试关注于用户可见的与传统确认一样,确认测试关注于用户可见的动作和用户可识别的系统输出动作和用户可识别的系统输出 系统测试必须对所有类和主程序构成的整个系统进行整体系统测试必须对所有类和主程序构成的整个系统进行整体测试。其测试目的主要是针对系统准确性和完整性,测试。其测试目的主要是针对系统准确性和完整性, 以验以验证软件系统的正确性和性能指标等满足需求规格说明书和证软件系统的正确性和性能指标等满足需求规格说明书和任务书所指定的要求。系统测试完全采用黑盒法进行任务书所指定的要求。系统测试完全采用黑盒法进行 系统测试系统测试程序调试调试技术程序错误的性质程序错误的性质错误的外部特征有时会远离引起错误的内部原因错误的外部特征有时会远离引起错误的内部原因 。纠正一个错误造成了另一错误现象(暂时)的消失纠正一个错误造成了另一错误现象(暂时)的消失 某些错误征兆只是一种假象某些错误征兆只是一种假象 因操作人员一时疏忽造成的某些错误征兆不易追踪因操作人员一时疏忽造成的某些错误征兆不易追踪 错误是由于时间而不是程序引起错误是由于时间而不是程序引起 输入条件难以精确地再构造输入条件难以精确地再构造 错误征兆时有时无,此现象对嵌入式系统尤其普遍错误征兆时有时无,此现象对嵌入式系统尤其普遍 错误是由于把任务分布在若干台不同处理机上运行而造成的错误是由于把任务分布在若干台不同处理机上运行而造成的 调试技术调试技术输出存储器内容输出存储器内容 适当插入输出语句适当插入输出语句 使用专用的调试工具使用专用的调试工具 程序调试调试策略程序调试的策略程序调试的策略试探策略试探策略 :主要思想是:主