您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 软件测试-测试用例及黑盒测试方法
软件测试技术黑盒测试方法及测试用例NumenHaoqiang.hao@hisoft.com内容软件测试基本概念黑盒测试方法等价类划分法边界值分析法错误推测法因果图法判定表驱动法功能图法测试用例什么是软件测试软件测试的经典定义:在规定条件下对软件进行操作,以发现错误,对软件质量进行评估的过程。但事实上软件是由文档、数据以及程序组成的,软件测试不仅仅只包括对程序本身的测试,而应该包括对软件形成过程中的文档、数据以及程序的测试。有资料表明60%以上的软件错误并不是程序错误,而是分析和设计错误。软件测试的目的早期的软件测试定义指出软件测试的目的是寻找bug,并且尽最大可能找出最多的bug。测试是一个为了寻找错误而运行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。软件测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷来提高软件质量,回避软件发布后由于潜在的bug造成的隐患所带来的商业风险。软件测试是对软件质量的度量和评估,以验证软件的质量满足用户的需求的程度,并且通过最终的验收测试,可以证明软件满足了用户的需求,树立用户使用软件的信心。软件测试的内容软件测试主要工作内容是验证(verification)和确认(validation)验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Dotherightthing)1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;2.程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;3.评审、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Doitright)1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的基本原则尽早地并不断地进行软件测试程序员或程序设计机构应避免测试自己设计的程序测试用例中不仅要有输入数据,还要有与之对应的预期结果测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据在对程序修改之后要进行回归测试程序中尚未发现的错误的数量通常与该程序中已发现的错误的数量成正比妥善保留测试计划、全部测试用例、出错统计和最终分析报告,并把它们作为软件的组成部分之一,为维护提供方便应当对每一个测试结果做全面检查严格执行测试计划,排除测试的随意性所有软件测试都应该追溯到用户需求黑盒测试技术黑盒测试通过软件外部表现来发现其缺陷和错误,黑盒测试把测试对象看作一个黑盒子,完全不考虑程序内部结构和处理过程,只是检查测试对象是否按照需求规格说明书的规定正常实现:等价类划分法边界值分析法错误推测法因果图法判定表驱动法功能图法黑盒内部实现不可见输入输出黑盒测试技术优点与缺点优点:对较大的代码单元来说,黑盒测试比白盒测试的效率高测试人员不需要了解实现得细节,包括特定的编程语言测试人员和编程人员是相互独立的从用户的角度进行测试,很容易被接受和理解有助于暴露任何与设计不一致或者歧异的地方测试用例可以在设计完成后马上进行缺点:不能测试程序内部特定部位只有一小部分可能的输入被测试到,要测试每个可能的输入流几乎是不可能的没有清晰的和简明的需求和设计文档,测试用例很难被设计等价类划分等价类划分:就是把输入数据的可能值划分为若干等价类(等价类是指某个输入域的子集合。在该集合中,各个输入数据对于揭露程序中的错误都是等价的)。因此,可以把全部输入数据合理地划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,这样就可以少量的代表性测试数据,来取得较好的测试结果。有效等价类:是指对于程序的规格说明来说,是合理的有意义的输入数据构成的集合。利用它可以检验程序是否实现预先规定的功能和性能。无效等价类:是指对于程序的规格说明来说,是不合理的,是无意义的输入数据构成的集合。程序员主要利用这一类测试用例来检查程序中功能和性能的实现是否不符合规格说明要求。等价类划分实例测试一个判断三条边能构成什么三角形的函数:F(inta,intb,intc),如果a、b、c三条边能构成三角形的三条边就必须满足:a0,b0,c0,且a+bc,b+ca,c+ab,如果是等腰的,还要判断a=b或b=c或a=c,如果是等边的,则需判断是否a=b且b=c且a=c,列出等价类表:输入条件有效等价类无效等价类是否能构成三角形的三条边a0,(1)b0,(2)c0,(3)a+bc,(4)b+ca,(5)a+cb(6)a=0,(7)b=0,(8)c=0,(9)a+b=c,(10)b+c=a,(11)a+c=b,(12)是否等腰三角形a=b,(13)b=c,(14)c=a,(15)a!=b&&b!=c&&c!=a,(16)是否等边三角形a=b&&b=c&&c=a,(17)a!=b,(18)b!=c,(19)c!=a,(20)等价类划分法设计测试用例输入数据:输入顺序是[a、b、c]序号[a、b、c]覆盖等价类输出1[3、4、5](1)、(2)、(3)、(4)、(5)、(6)一般三角形2[0、1、2](7)不能构成三角形3[1、0、2](8)4[1、2、0](9)5[1、2、3](10)6[1、3、2](11)7[3、2、1](12)8[3、3、4](1)、(2)、(3)、(4)、(5)、(6)、(13)等腰三角形9[3、4、4](1)、(2)、(3)、(4)、(5)、(6)、(14)10[3、4、3](1)、(2)、(3)、(4)、(5)、(6)、(15)11[3、4、5](1)、(2)、(3)、(4)、(5)、(6)、(16)非等腰三角形12[3、3、3](1)、(2)、(3)、(4)、(5)、(6)、(17)等边三角形13[3、4、4](1)、(2)、(3)、(4)、(5)、(6)、(14)、(18)非等边三角形14[3、4、3](1)、(2)、(3)、(4)、(5)、(6)、(14)、(19)15[3、3、4](1)、(2)、(3)、(4)、(5)、(6)、(14)、(20)11边界值分析法边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法做为对等价类划分法的补充。这种情况下,期测试用例来自等价类的边界。三角形问题的边界值分析测试用例在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1,100]。边界值分析法–用例设计原则对于使用边界值分析法进行测试用例设计应遵循以下几条原则:1、如果输入条件规定了值的范围,则应该取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。2、如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。3、根据设计书说明的每个输出条件,使用规则(1)。4、根据设计书说明的每个输出条件,使用规则(2)。5、如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素进行测试。6、如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值进行测试。7、分析设计书,找出其他可能存在的边界条件。边界值分析法NextDate函数在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050错误推测法错误推测法就是基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法,基本思想是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如:设计一些非法、错误、不正确和垃圾数据进行输入测试是很有意义的。如果模块要求输入数字,就输入字母。如果模块只接受正整数,就输入负数,小数等因果图法因果图(Cause-EffectGraphing)提供了一个把规格转化为判定表的系统化方法,从该图中可以产生测试数据。其中原因是表示输入条件,结果是对输入执行的一系列计算后得到的输出。因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。4种符号分别表示了规格说明中向4种因果关系因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。因果图关系①恒等:若ci是1,则ei也是1;否则ei为0。②非:若ci是1,则ei是0;否则ei是1。③或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。④与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。因果图法约束输入状态相互之间还可能存在某些依赖关系,称为约束。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。因果图约束A.输入条件的约束有以下4类:①E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1②I约束(或):a、b和c中至少有一个必须是1,即a、b和c不能同时为0③O约束(唯一);a和b必须有一个,且仅有1个为1④R约束(要求):a是1时,b必须是1,即不可能a是1时b是0B.输出条件约束类型输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0因果图实例某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。一、对说明进行分析,得到原因和结果:原因:1:第一列字符是A;2:第一列字符是B;3:第二列字符是一数字。结果:21:修改文件;22:给出信息L;23:给出信息M。二、其对应的因果图如下:11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束三、根据因果图建立判定表。表中8种情况的左面两列情况中,原因①和原因②同时为1,这是不可能出现的,故应排除这两种情况。四、把判定表的每一列拿出来作为依据,设计测试用例我们把表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。因果图法设计测试用例因果图法设计测试用例步骤1、分析待测得系统规格,找出原因与结果分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予一个标识符。2、画出因果图分析软件规格说明描述中的语义。找出原因与结果之间,原因与原因之间对应的关系。根据这些关系,画出因果图。3、标记约束或限制条件由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况下不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。4、把因果图转换为判定表。5、用判定表中的每一项生成测试用例。判定表法判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。它是一个表格,分为四个部分,其左部是条件或数组元素的名称,右上部是所有条件的组合,左下部是处理中活动的名称,右下部标明条件组合和相应的活动的对应关系。优点能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件
本文标题:软件测试-测试用例及黑盒测试方法
链接地址:https://www.777doc.com/doc-4004806 .html