首页 软件工程第七章电子教案

软件工程第七章电子教案

举报
开通vip

软件工程第七章电子教案第7章软件测试学习目标掌握软件测试的目的和原则掌握软件测试的过程和策略掌握软件测试用例设计的方法掌握程序调试的概念和方法第7章软件测试教学内容7.1软件测试的基本概念7.2黑盒测试7.3白盒测试7.4软件测试的步骤及过程7.5软件的调试及排错7.6面向对象的软件测试本章小结7.1软件测试的基本概念主要教学内容:7.1.1软件测试的定义7.1.2软件测试的目的和原则7.1.3软件测试的对象及信息流返回目录7.1软件测试的基本概念返回目录7.1.1软件测试的定义软件测试是为了发现错误而执行程序的过程。软件测试是在软件投...

软件工程第七章电子教案
第7章软件测试学习目标掌握软件测试的目的和原则掌握软件测试的过程和策略掌握软件测试用例设计的方法掌握程序调试的概念和方法第7章软件测试教学内容7.1软件测试的基本概念7.2黑盒测试7.3白盒测试7.4软件测试的步骤及过程7.5软件的调试及排错7.6面向对象的软件测试本章小结7.1软件测试的基本概念主要教学内容:7.1.1软件测试的定义7.1.2软件测试的目的和原则7.1.3软件测试的对象及信息流返回目录7.1软件测试的基本概念返回目录7.1.1软件测试的定义软件测试是为了发现错误而执行程序的过程。软件测试是在软件投入运行前,对软件需求分析、设计规格说明书和编码进行的最终复审,是保证软件质量的关键步骤。7.1.2软件测试的目的和原则软件测试的目的:测试是程序的执行过程,目的在于发现错误;一个好的测试用例在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。7.1软件测试的基本概念软件测试的原则:应当尽早规划和不断地进行软件测试。测试用例设计应包括测试输入数据和与之对应的预期输出结果这两部分。程序员应避免检查自己的程序在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。严格执行测试 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 ,排除测试的随意性。应当对每一个测试结果做全面检查。妥善保存测试计划,测试用例,出错统计和最终分析 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 ,为维护提供方便。测试应有一个终止的标准。返回目录7.1软件测试的基本概念7.1.3软件测试的对象及信息流软件测试应贯穿于软件定义与开发的整个期间。因此软件测试的对象不仅包括源程序,还包括需求规格说明书、概要设计说明书、详细设计规格说明都应成为软件测试的对象。软件开发在每个环节都需要进行确认和验证工作以保证它的正确性。确认与验证工作都属于软件测试。7.1软件测试的基本概念在软件测试过程需要有三类输入:软件配置:包括软件需求规格说明、软件设计规格说明、源代码等;测试配置:包括测试计划、测试用例、测试驱动程序等;测试工具:测试工具为测试的实施提供某种服务。测试信息流如图7-1所示。图7-1测试信息流返回目录7.2黑盒测试黑盒测试就是依据软件的需求规格说明书,检查程序的功能是否符合用户要求。这种测试不需要考虑程序内部的逻辑结构和内部特性,完全把测试对象看作一个黑盒子。黑盒测试主要针对以下内容:程序是否按照需求完整正确地实现了功能。程序的接口是否正确有效。程序输出的数据或外部数据库访问是否正确。程序性能是否符合需求。程序初始化和终止是否正确。黑盒测试常用的方法有:等价类划分、边界值分析、错误推测、因果图和功能图。返回目录7.2黑盒测试主要教学内容:7.2.1等价类划分法7.2.2边界值分析法7.2.3错误推测法7.2.4因果图法7.2.5功能图返回目录7.2黑盒测试—等价类划分法7.2.1等价类划分法等价类是指某个输入域的子集合。测试某等价类的代表值就等价于对这一类其它值的测试。对于等价类的划分要考虑两种不同的情况:有效等价类:指对于程序规格说明来说是合理的、有意义的输入数据构成的集合。利用这些数据可以检验程序是否实现了规格说明预先规定的功能和性能。无效等价类:指对于程序规格说明来说是不合理的、无意义的输入数据构成的集合。利用这些数据,可以检查程序功能和性能的实现是否有不符合规格说明要求的地方。7.2黑盒测试—等价类划分法例子:学生成绩管理系统的案例中,某功能要求输入的数据是数字字符,在0~100之间,超出这个范围的为无效数字。带非数字的也为无效字符。要求对完成这一功能的程序,用等价类划分法设计测试用例,进行程序功能测试。第一步:划分等价类。输入数据有效等价类无效等价类英语成绩①2位数字字符或100②有非数字字符③少于1个数字符④多于3个数字符(不包括100)对应数值⑤在0-100之间⑥<0⑦>100表7-1“出生年月”的等价分类7.2黑盒测试—等价类划分法第二步:设计有效等价类需要的测试用例。表7-1中的①、⑤2个有效等价类,可共用一个测试用例例如:测试数据预期结果测试覆盖98输入有效①、⑤7.2黑盒测试—等价类划分法第三步:为每一无效等价类至少设计一个测试用例。因为有5个无效等价类,需要不少于5个测试用例。如:测试数据预期结果测试范围M8输入无效②(没有数字字符输入)输入无效③978输入无效④-96输入无效⑥103输入无效⑦7.2黑盒测试—等价类划分法等价类划分法设计测试用例的方法步骤如下:(1)划分等价类把输入数据划分成若干个有效等价类和无效等价类。如何划分等价类,是使用等价类划分的一个重要问题。确定等价类的原则如下:如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。7.2黑盒测试—等价类划分法如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,且程序对这组可能的值做相同的处理,这时可确立一个有效等价类和一个无效等价类。如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。7.2黑盒测试—等价类划分法如果规定了输入数据的一组值,且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。7.2黑盒测试—等价类划分法(2)确立测试用例在确立了等价类之后,建立等价类表,列出所有划分出的等价类:7.2黑盒测试—等价类划分法再从划分出的等价类中按以下原则选择测试用例:为每一个等价类规定一个惟一的编号;设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一过程,直到所有的有效等价类都被覆盖为止:设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。返回目录7.2黑盒测试—边界值分析法7.2.2边界值分析使用这种方法设计测试用例,首先应确定边界情况。通常输入等价类与输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于、刚刚大于、或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。如对于等价类划分法中的例子,学生成绩的100和0做为边界条件必须能正确处理,这两个数据需要重点测试。边界值分析方法是一种有效的黑盒测试方法,它常与等价类划分法结合使用。返回目录7.2黑盒测试—错误推测法7.2.3错误推测法错误推测法是人们靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。有一些在模块测试中常见的错误,做为经验的 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf ,常常用来做为错误推测的依据。此外,对于在程序中容易出错的情况,也有一些经验总结出来。返回目录7.2黑盒测试—因果图法7.2.4因果图法利用因果图法生成测试用例的基本步骤是:分析软件规格说明描述中,哪些是原因,哪些是结果,并给每个原因和结果赋予一个标识符。分析软件规格说明描述中的语义,找出原因与结果之间的关系,根据这些关系,画出因果图。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。把因果图转换成判定表。把判定表的每一列拿出来作为依据,设计测试用例。返回目录7.2黑盒测试—功能图7.2.5功能图功能图是对程序功能的形式化说明,功能图由状态转移图和逻辑模型组成。在状态转换图中,起始点称为初始状态,活动的终止点称为终止状态。给定一个非终止状态,输入相应的数据,系统产生对应的数据输出并转移到后继状态。逻辑功能模型表示状态的输入条件与输出条件之间的对应关系。测试用例描述了测试执行的一系列状态转换及每一状态的输入/输出条件。返回目录7.3白盒测试软件的白盒测试是把测试对象看作一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要对程序模块进行如下的检查:对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。返回目录7.3白盒测试在测试阶段穷举测试不可行,必须要从数量极大的可用测试用例中精心地挑选少量的测试数据,使得采用这些测试数据能够达到最佳的测试效果,能够高效率地把隐藏的错误揭露出来。下面介绍几种白盒测试设计测试用例的方法。主要教学内容:7.3.1逻辑覆盖7.3.2基本路径测试7.3白盒测试7.3.1逻辑覆盖逻辑覆盖是以程序内部的逻辑结构为基础设计测试用例的技术,属于白盒测试。这一方法要求测试人员对程序的逻辑结构有清楚的了解,甚至要求能掌握源程序的所有细节。逻辑覆盖又可分为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖。7.3白盒测试发现错误的能力 弱 ↓ 强语句覆盖每个语句至少能执行一次判定覆盖每个判定的分支至少执行一次。条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次判断/条件覆盖同时满足判定覆盖和条件覆盖的要求条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次表7-2逻辑覆盖测试的5种标准7.3白盒测试如图7-3所示,该程序段有两个判断,4条不同的路径,各判断的取真和取假分支分别命名为b、c、d和e。4条路径分别表示为L1(a→c→e),L2(a→b→d),L3(a→b→e),L4(a→c→d),可简写为ace、abd、abe、acd。图7-3逻辑覆盖的例子7.3白盒测试若把各条路径应满足的逻辑表达式综合起来,其中的上划线表示“非”运算,通过推导可得出如下的逻辑表达式:L1(a→c→e)={(A>1)and(B=0)}and{(A=2)or(X/A>1)}=(A=2)and(B=0)or(A>1)and(B=0)and(X/A>1) L2(a→b→d)—————————————={(A>1)and(B=0)}and{(A=2)or(X>1)}=(A≤1)and(X≤1)or(B≠0)and(A≠2)and(X≤1) 7.3白盒测试L3(a→b→e)——————={(A>1)and(B=0)}and{(A=2)or(X>1)}=(A≤1)and(X>1)or(B≠0)and(A=2)or(B≠0)and(X>1)L4(a→c→d)———————={(A>1)and(B=0)}and{(A=2)or(X/A>1)}=(A>1)and(B=0)and(A≠2)and(X/A≤1)依据以上推导出来的结果就可以设计满足要求的测试用例。测试用例的设计格式为:[输入的(A,B,x),输出的(A,B,x)]返回目录7.3白盒测试1、语句覆盖语句覆盖就是设计若干个测试用例,运行被测程序,使得每一条可执行语句至少执行一次。如图7-3所示,则设计满足语句覆盖的测试用例是:[(2,0,4),(2,0,3)]覆盖路径ace即L1假设图7-3所示,程序中两个判断的逻辑运算符有问题,如第一个判断中的逻辑运算符“∧”错写成了“∨”,利用上面的测试用例,仍可覆盖所有4条可执行语句。这说明虽然做到了语句覆盖,但可能发现不了判断中逻辑运算出现的错误。语句覆盖是最弱的逻辑覆盖准则,效果有限,必须与其他方法交互使用。返回目录7.3白盒测试2、判定覆盖判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少执行经历一次。判定覆盖又称为分支覆盖。如图7-3所示,选择路径L1和L2,就可得到满足要求的测试用例:[(3,0,6),(3,0,3)]覆盖路径ace即L1[(1,1,1),(1,1,1)]覆盖路径abd即L2如果选择路径L3和L4,还可得到另一组测试用例:[(1,4,2),(1,4,3)]覆盖路径abe即L3[(3,0,3),(3,0,1)]覆盖路径acd即L4返回目录7.3白盒测试从上面的例子可以看出,测试用例的取法不惟一。判定覆盖比语句覆盖稍强一些,但实际效果表明,只是判定覆盖还不能保证一定能查出在判断的条件中存在的错误,如图7-3所示,如果把第二个判断中的条件x>1错写成x<1,那么利用上面两组测试用例,仍能得到同样结果。因此,还需要更强的逻辑覆盖准则去检验判断的内部条件。3、条件覆盖条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。如图7-3所示,假设对所有条件的取值加以标记如下:返回目录7.3白盒测试对于第一个判断:条件A>1取真值为T1,取假值为~T1条件B=0取真值为T2,取假值为~T2对于第二个判断:条件A=2取真值为T3,取假值为~T3条件x>1取真值为T4,取假值为~T4满足条件覆盖则可选取测试用例如下:b,eT1~T2T3~T4abe(L3)[(2,1,1),(2,1,2)]b,d~T1T2~T3~T4abd(L)[(1,0,1),(1,0,1)]c,eT1T2T3T4ace(L1)[(2,0,4),(2,0,3)]覆盖分支条件取值通过路径测试用例7.3白盒测试也可以选择另一组测试用例,如:b,eT1~T2T3~T4abe(L3)[(2,1,1),(2,1,2)]b,e~T1T2~T3T4abe(L3)[(1,0,3),(1,0,4)]覆盖分支条件取值通过路径测试用例第一组测试用例不但覆盖了所有判断的取真分支和取假分支,而且覆盖了判断中所有条件的可能取值。但是第二组测试用例虽满足了条件覆盖,但只覆盖了第一个判断的取假分支和第二个判断的取真分支,不满足判定覆盖的要求。7.3白盒测试4、判定-条件覆盖判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。换言之,即是要求各个判断的所有可能的条件取值组合至少执行一次。如图7-3中的各判断,若T1,T2,T3,T4及~T1,~T2,~T3,~T4的含义如前所述,则只需设计以下两个测试用例便可覆盖图7-3的8个条件取值以及4个判断分支。7.3白盒测试这种覆盖从表面上看,它测试了所有条件的取值。但往往某些条件掩盖了另一些条件。对于条件表达式(A>1)and(B=0)来说,若(A>1)的测试结果为假,可以立刻确定表达式的结果为假。这时,往往就不再测试(B=0)的取值了。因此,条件(B=0)就没有检查。b,d~T1~T2~T3~T4abd(L2)[(1,1,1),(1,1,1)]c,eT1T2T3T4ace(L1)[(2,0,4),(2,0,3)]覆盖分支条件取值通过路径测试用例返回目录7.3白盒测试5、条件组合覆盖设计足够的测试用例,运行被测程序,使每个判断的所有可能的条件取值组合至少执行一次。如图7-3所示的例子,先对各个判断的条件取值组合加以标记。记①A>1,B=0作T1T2,属第一个判断的取真分支;②A>1,B≠0作T1~T2,属第一个判断的取假分支;③A≯1,B=0作~T1T2,属第一个判断的取假分支;④A≯1,B≠0作~T1~T2,属第一个判断的取假分支;⑤A=2,x>1作T3T4,属第二个判断的取真分支;⑥A=2,x≯1作T3~T4,属第二个判断的取真分支;⑦A≠2,x>1作~T3T4,属第二个判断的取真分支;⑧A≠2,x≯1作~T3~T4,属第二个判断的取假分支。7.3白盒测试对于每个判断,要求所有可能的条件取值的组合都必须取到。在图7-3中的每个判断各有两个条件,所以,各有4个条件取值的组合。取4个测试用例,可用以覆盖上面8种条件取值的组合。④,⑧~T1~T2~T3~T4abd(L2)[(1,1,1),(1,1,1)]②,⑥T1~T2T3~T4abe(L3)[(2,1,1),(2,1,2)]③,⑦~T1T2~T3~T4abe(L3)[(1,0,3),(1,0,4)]①,⑤T1T2T3T4ace(L1)[(2,0,4),(2,0,3)]覆盖组合号条件取值通过路径测试用例这组测试用例覆盖了所有条件的可能取值的组合,覆盖了所有判断的可取分支,但路径漏掉了L4,测试还不完全。返回目录7.3白盒测试6、路径覆盖路径覆盖测试是设计足够的测试用例,覆盖程序中所有可能的路径。如图7-3所示,则可以选择如下的一组测试用例,覆盖该程序段的全部路径。~T1~T2~T3~T4abd(L2)[(1,1,1),(1,1,1)]T1T2~T3~T4acd(L4)[(3,0,3),(3,0,1)]~T1~T2~T3T4abe(L3)[(1,1,2),(1,1,3)]T1T2T3T4ace(L1)[(2,0,4),(2,0,3)]覆盖条件通过路径测试用例返回目录7.3白盒测试7.3.2基本路径测试基本路径测试方法把覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。它是在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一条可执行语句至少要执行一次。基本路径测试离不开程序图。程序图是一种简化了的 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图。在基本路径测试中,它是用来考察测试路径的有用工具。返回目录7.4软件测试的步骤及过程主要教学内容:7.4.1单元测试7.4.2集成测试7.4.3确认测试7.4.4系统测试7.4.5人工测试7.4.6软件测试过程返回目录7.4软件测试的步骤及过程软件的测试过程一般按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。图7-3显示出软件测试经历4个步骤。图7-3软件测试的过程7.4软件测试的步骤及过程单元测试集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。然后,进行集成测试,根据设计规定的软件体系结构,把已测试过的模块组装起来。在组装过程中,检查程序结构组装的正确性。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。最后是系统测试,把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。7.4软件测试的步骤及过程—单元测试7.4.1单元测试是对程序设计的最小可编译单元进行的正确性检验。其目的在于发现各单元内部可能存在的各种差错,保证每个单元能正确运行。1、单元测试的主要内容:单元接口测试:局部数据结构测试路径测试出错处理测试边界测试7.4软件测试的步骤及过程—单元测试2、单元测试的步骤:通常单元测试在编码阶段进行。在源程序代码编制完成,经过评审和验证,确认没有语法错误之后,就开始进行单元测试的测试用例设计。程序单元并不一定是一个独立的程序,在考虑测试单元时,同时要考虑它和外界的联系,用一些辅助单元去模拟与被测单元相联系的其它单元。这些辅助单元分为两种:驱动程序和桩程序。7.4软件测试的步骤及过程—单元测试被测单元、相关的驱动程序及桩程序同构成了一个“测试环境”,见图7-4。如果一个单元要完成多种功能,对其中的每个小程序先进行单元测试要做的工作,对关键单元还要做性能测试。对支持某些标准规程的程序,更要着手进行互联测试。图7-4单元测试的测试环境返回目录7.4软件测试的步骤及过程—集成测试7.4.2集成测试在单元测试的基础上,将所有单元按照设计要求组装成为系统。这时需要考虑如下问题:在把各个模块连接起来时,穿越模块接口的数据是否会丢失。一个模块的功能是否会对另一个模块的功能产生无法预料的副作用。各个子功能组合起来,能否达到预期要求的主要功能。全局数据结构是否有问题。单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。单个模块的错误是否会导致数据库错误。7.4软件测试的步骤及过程—集成测试传统的集成测试中把模块组装成为系统的方式有两种:1、一次性集成方式这是一种非增殖式集成方式。首先分别测试每个模块,然后再把所有模块按设计要求组装在一起进行测试,最终得到要求的软件系统。由于程序中不可避免地存在涉及模块间接口、全局数据结构等方面的问题,所以一次试运行成功的可能性并不大。7.4软件测试的步骤及过程—集成测试2、增殖式集成方式自顶向下的增殖方式自底向上的增殖方式混合增殖式测试3、集成测试的组织和实施集成测试是一种正规测试过程,必须精计划,并与单元测试的完成时间协调起来。返回目录7.4软件测试的步骤及过程—确认测试7.4.3确认测试确认测试又称有效性测试。它的任务是验证软件的有效性,即验证软件的功能和性能及其他特性是否与用户的要求一致。在确认测试阶段需要做的工作如图7-6所示。首先要进行有效性测试以及软件配置复审,然后进行验收测试和安装测试,在通过了专家鉴定之后,才能成为可交付的软件。7.4软件测试的步骤及过程—确认测试图7-6确认测试的步骤7.4软件测试的步骤及过程—确认测试1、进行有效性测试(功能测试)2、软件配置复查3、验收测试4、α测试和β测试返回目录7.4软件测试的步骤及过程—系统测试7.4.4系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。系统测试的测试用例应根据需求分析规格说明来设计,并在实际使用环境下运行。返回目录7.4软件测试的步骤及过程—人工测试7.4.5人工测试软件测试需要进行人工测试和机器运行测试两部分,人工测试不要求在计算机上执行被测试程序,而是以一些人工的模拟技术和一些类似动态分析的方式对程序进行静态分析和测试。静态分析主要是对源程序进行静态分析,通常采用生成各种引用表和静态错误分析的方法。静态分析中进行人工测试的主要方法有桌前检查、代码会审和走查。通过软件的人工测试和机器测试,会发现更多的软件潜在错误。这对保证软件质量有很大的益处,必须同样重视。返回目录7.4软件测试的步骤及过程—软件测试过程7.4.6软件测试过程一个典型的软件测试过程模型。如图7-7所示。启动结束测试规划测试需求分析测试设计测试规程实现测试执行总结生成报告评审评审过程跟踪与管理评审更改图7-7软件测试过程模型7.4软件测试的步骤及过程软件测试过程包括以下6个主要活动:测试规划,确定测试的基本原则、生成测试概要计划。测试需求分析。测试设计,包括测试用例设计和测试规程规格说明。测试规程实现。测试执行。总结生成报告。返回目录7.5软件的调试及排错主要教学内容:7.5.1错误的诊断及排除7.5.2常用的几种调试方法返回目录7.5软件的调试及排错软件测试发现了软件中的错误,对于这些发现的错误需要进一步诊断和改正,这一过程属于软件调试的主要任务。软件调试是在进行了成功的测试之后才开始的,它由两部分组成:确定程序中可疑错误的确切性质和位置;对程序(设计,编码)进行修改,排除这个错误。7.5.1错误的诊断及排除对错误进行定位和排除。可以按以下步骤进行:7.5软件的调试及排错从错误的外部表现形式入手,确定程序的出错位置。研究有关部分的程序,找出错误的内在原因。修改设计和代码,以排除这个错误。重复进行暴露了这个错误的原始测试或某些有关测试,以确认该错误是否被排除;是否引进了新的错误。如果所做的修正无效,则撤消这次改动,重复上述过程,直到找到一个有效的解决办法为止。7.5软件的调试及排错查找错误的难度主要在于以下几个方面:现象与原因所处的位置可能相距甚远。当纠正其它错误时,这一错误所表现出的现象可能会暂时消失,但并未实际排除。现象实际上是由一些非错误原因引起的。现象可能是由于一些不容易发现的人为错误引起的。错误是由于时序问题引起的,与处理过程无关。现象是由于难于精确再现的输入状态引起。现象可能是周期出现的。在软、硬件结合的嵌入式系统中常常遇到。返回目录7.5软件的调试及排错7.5.2常用的几种调试方法1、强行排错这是目前使用较多,效率较低的调试方法。2、回溯法排错先分析错误征兆,确定最先发现“症状”的位置。然后,人工沿程序的控制流程,反向追踪源程序代码,直到找到错误根源或确定错误的范围。7.5软件的调试及排错3、归纳法排错归纳法是一种从特殊推断一般的系统化思考方法。归纳法排错的基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。4、演绎法排错演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。返回目录7.6面向对象的软件测试主要教学内容:7.6.1面向对象的测试模型7.6.2面向对象软件的测试策略7.6.3面向对象软件测试用例设计返回目录7.6面向对象的软件测试7.6.1面向对象的测试模型面向对象的测试模型是一种在整个软件开发过程中不断测试的测试模型,使开发阶段的测试与编码完成后的单元测试、集成测试、系统测试成为一个整体。测试模型如图7-8所示。图7-8测试模型7.6面向对象的软件测试OO:面向对象OOP:面向对象编程OOATest:面向对象分析的测试OODTest:面向对象设计的测试OOPTest:面向对象编程的测试OOUnitTest:面向对象单元测试OOIntegrateTest:面向对象集成测试OOSystemTest:面向对象系统测试表7-3符号表返回目录7.6面向对象的软件测试7.6.2面向对象软件的测试策略面向对象软件测试和传统软件测试一样,也是从单元测试开始,然后经集成测试,最后进入确认与系统测试。面向对象的软件测试是在整个软件开发过程中不断测试的过程,在开发各阶段的测试与编码完成后进行的单元测试、集成测试和系统测试成为一个整体。1、面向对象分析(OOA)的测试面向对象分析的测试从下面几个方面考虑:对认定的对象的测试7.6面向对象的软件测试对认定的结构的测试对认定的主题的测试对定义的属性和实例关联的测试对定义的服务和消息关联的测试2、面向对象设计的测试面向对象设计的测试应从以下几个方面考虑:对认定的类的测试对构造的类层次结构的测试对类库的支持的测试7.6面向对象的软件测试3、面向对象软件的单元测试面向对象软件的类测试等价于传统软件的单元测试。一些传统的测试方法在面向对象的单元测试中都可以使用。如等价类划分法、因果图法、边值分析法、逻辑覆盖法等。单元测试一般建议由程序员完成。面向对象编程的特性使得对成员函数的测试,又不完全等同于传统的函数或过程测试。尤其是继承特性和多态特性,使子类继承或重载的父类成员函数出现了传统测试中未遇见的问题。7.6面向对象的软件测试4、面向对象的集成测试面向对象的集成测试可分成两步进行:先进行静态测试,再进行动测试。静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求。动态测试设计测试用例时,要确定不需被重复测试的部分。5、面向对象的确认测试与系统测试集成测试后,还必须经过规范的确认测试和系统测试。确认测试与系统测试主要采用黑盒法,对面向对象分析阶段所描述的用户交互进行测试。系统测试应该尽量在与用户实际使用环境相同的情况下进行,以保证被测系统的完整性。返回目录7.6面向对象的软件测试7.6.3面向对象软件测试用例设计面向对象软件的测试用例设计研究一直在进行,并取得了一定的成果。Berard提出了指导面向对象测试用例设计的方法要点:每个测试用例都要有一个惟一的标识,并与被测试的一个或几个类相关联起来。每个测试用例都要陈述测试的目的。对每个测试用例都要有相应的测试步骤,包括被测试对象的特定状态、所使用的消息和操作、可能产生的错误及测试需要的外部环境等。7.6面向对象的软件测试1、面向对象概念对测试用例设计的影响在设计面向对象的测试用例时需要考虑以下两方面的问题:继承的成员函数是否都需要测试?若存在以下两种情况则需要对成员函数重新测试:a)继承的成员函数在子类中做了改动;b)成员函数调用了改动过的成员函数的部分。对父类的测试是否能照搬到子类?7.6面向对象的软件测试2、类测试用例设计具体设计测试用例时,可参考下列步骤:先选定检测的类,参考面向对象设计分析的结果,仔细分出类的状态和相应的行为、类或成员函数间传递的消息、输入或输出的界定等。确定覆盖标准。利用结构关系图确定待测类的所有关联。根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态、使用类的服务和期望产生什么行为等。返回目录本章小结软件测试是为了发现错误而执行程序的过程;一个好的测试用例在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。软件测试应贯穿于软件定义与开发的整个期间。软件测试的对象包括源程序和相关文档。软件的黑盒测试是依据软件的需求规格说明书,检查程序的功能是否符合用户要求。这种测试不需要考虑程序内部的逻辑结构和内部特性,完全把测试对象看作一个黑盒子。本章小结黑盒测试常用的方法有:等价类划分、边界值分析、错误推测、因果图和功能图。软件的白盒测试是把测试对象看作一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试常用的方法有逻辑覆盖和基本路径测试。逻辑覆盖又包括多种标准。本章小结软件的测试过程一般按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。软件测试发现了软件中的错误,软件调试确定程序中可疑错误的确切性质和位置,对程序(设计,编码)进行修改,排除这个错误。面向对象的测试包括面向对象分析的测试、面向对象设计的测试、面向对象编程的测试、面向对象单元测试、面向对象集成测试和面向对象系统测试。本章小结面向对象软件的测试策略与传统测试策略有许多不同。面向对象的软件测试是在整个软件开发过程中不断测试的过程,在开发各阶段的测试与编码完成后进行的单元测试、集成测试和系统测试成为一个整体。面向对象软件的测试用例设计研究一直在进行,并取得了一定的成果。在设计面向对象的测试用例时需要考虑继承的成员函数是否都需要测试、对父类的测试是否能照搬到子类。同时类测试用例的设计也要考虑周全。返回目录
本文档为【软件工程第七章电子教案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
正方体
暂无简介~
格式:ppt
大小:233KB
软件:PowerPoint
页数:76
分类:建筑/施工
上传时间:2022-05-10
浏览量:0