文档详情

白盒测试黑盒测试软件测试.ppt

发布:2017-06-25约字共10页下载文档
文本预览下载声明
白盒测试_黑盒测试软件测试 白盒测试技术 逻辑覆盖 控制结构测试 逻辑覆盖 逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。这一方法要求测试人员对程序的逻辑结构有清楚的了解,甚至要能掌握源程序的所有细节。 由于覆盖测试的目标不同,逻辑覆盖又可分为: 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖 语句覆盖 语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这种覆盖又称为点覆盖,它使得程序中每个可执行语句都得到执行,但它是最弱的逻辑覆盖准,效果有限,必须与其它方法交互使用。 判定覆盖 判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。 判定覆盖只比语句覆盖稍强一些,但实际效果表明,只是判定覆盖,还不能保证一定能查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件。 条件覆盖 条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判定的每个条件的可能取值至少执行一次。 条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。 条件覆盖不一定包含判定覆盖 判定覆盖也不一定包含条件覆盖 判定-条件覆盖 既然判定条件不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,就自然会提出一种能同时满足两种覆盖标准的逻辑覆盖,这就是判定/条件覆盖。 判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。换言之,即是要求各个判断的所有可能的条件取值组合至少执行一次。 判定-条件覆盖 判定-条件覆盖 判定-条件覆盖 条件组合覆盖 条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。 这是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确。它不但可覆盖所有条件的可能取值的组合,还可覆盖所有判断的可取分支,但可能有的路径会遗漏掉。测试还不完全。 A>1, B=0 A>1, B≠0 A≯1, B=0 A≯1, B≠0 A=2, X>1 A=2, X≯1 A≠2, X>1 A≠2, X≯1 路径覆盖 路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。这是最强的覆盖准则。但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。 路径覆盖 通过分析由控制构造的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。 为了使用图论的知识和术语,引入流图(亦即程序图)的概念,流图即把流程图中结构化构件改用一般有向图的表示形式。 流图(flow graph ) 在流图中用圆表示节点,一个圆代表一条或多条语句。程序流程图中的一个处理框序列和一个菱形判定框,可以映射成流图中的一个节点。流图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个节点,即使这个节点并不代表任何语句(实际上相当于一个空语句)。由边和节点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。 流图 导出程序流程图的拓扑结构-流图 计算流图G的环路复杂度V(G) 确定只包含独立路径的基本路径集 设计测试用例 Step1 根据程序的逻辑结构画出流程图 void Func(int nPosX, int nPosY) { while (nPosX 0) { int nSum = nPosX + nPosY; if (nSum 1) { nPosX--; nPosY--; } else { if (nSum -1) nPosX -= 2; else nPosX -= 4; } // end of if } // end of while } Step3 确定基本路径的集合 流图的环形复杂度正好是基本路径的数目 Step4 对每条基本路径设计测试用例 路径1 – 11 nPosX 取-1, nPosY取任意值 路径1 – 2 – 3 – 4 – 5 – 10 – 1 – 11 nPosX 取1, nPosY取1 路径1 – 2 – 3 – 6 – 8 – 9 – 10 – 1 – 11 nPosX 取1, nPosY取-3 路径1 – 2 – 3 – 6 – 7 – 9 – 10 – 1 – 11 nPosX 取1, nPosY取-1 白盒测试是不完备的 对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个
显示全部
相似文档