正在加载图片...
个如图5.7所示的小程序的流程图,其中包括了一个执行达20次的循环。那么它所包含的 不同执行路径数高达520(=1013)条,若要对它进行穷举测试,覆盖所有的路径。假使测试 程序对每一条路径进行测试需要1毫秒,同样假定一天工作24小时,一年工作365天,那 么要想把如图5.7所示的小程序的所有路径测试完,则需要3170年 以上的分析表明,实行穷举测试,由于工作量过大,实施起来是不现实的。任何软件开 发项目都要受到期限、费用、人力和机时等条件的限制,尽管为了充分揭露程序中所有隐藏 错误,需要针对所有可能的数据进行测试,但事实告诉我们,这样做是不可能的 软件工程的总目标是充分利用有限的人力、物力资源,高效率、高质量、低成本地完成 软件开发项目。在测试阶段既然穷举测试不可行,为了节省时间和资源,提高测试效率,就 必须要从数量极大的可用测试用例中精心地挑选少量的测试数据,使得采用这些测试数据能 够达到最佳的测试效果,能够高效率地把隐臧的错误揭露出来 (2)逻辑覆盖 逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。属白盒测试。这一方 法要求测试人员对程序的逻辑结构有清楚的了解,甚至要能掌握源程序的所有细节。由于覆 盖测试的目标不同,逻辑覆盖又可分为:语句覆盖、判定覆盖、判定一条件覆盖、条件组合 覆盖及路径覆盖 ①语句覆盖:语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语 句至少执行一次。这种覆盖又称为点覆盖,它使得程序中每个可执行语句都得到执行,但它 是最弱的逻辑覆盖准,效果有限,必须与其它方法交互使用。 ②判定覆盖:判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判 断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。 判定覆盖只比语句覆盖稍强一些,但实际效果表明,只是判定覆盖,还不能保证一定能 查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件 ③条件覆盖:条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判 断的每个条件的可能取值至少执行一次 条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求 ④判定一条件覆盖:判定一条件覆盖就是设计足够的测试用例,使得判断中每个条件 的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。换言 即是要求各个判断的所有可能的条件取值组合至少执行一次 判定一条件覆盖有缺陷。从表面上来看,它测试了所有条件的取值。但是事实并非如此。 往往某些条件掩盖了另一些条件。会遗漏某些条件取值错误的情况。为彻底地检查所有条件 的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流 程图。这样就可以有效地检查所有的条件是否正确了 <(A>1)∧(B=0) A X=X/A (A=2)(x1)> x-X+ X>1 X=X+1 图58(a)复合判定的例子 图S8(b)改为单个条件判定的嵌套结构的例子11 一个如图 5.7 所示的小程序的流程图,其中包括了一个执行达 20 次的循环。那么它所包含的 不同执行路径数高达 5 20(=1013)条,若要对它进行穷举测试,覆盖所有的路径。假使测试 程序对每一条路径进行测试需要 1 毫秒,同样假定一天工作 24 小时,一年工作 365 天, 那 么要想把如图 5.7 所示的小程序的所有路径测试完,则需要 3170 年。 以上的分析表明,实行穷举测试,由于工作量过大,实施起来是不现实的。任何软件开 发项目都要受到期限、费用、人力和机时等条件的限制,尽管为了充分揭露程序中所有隐藏 错误,需要针对所有可能的数据进行测试,但事实告诉我们,这样做是不可能的。 软件工程的总目标是充分利用有限的人力、物力资源,高效率、高质量、低成本地完成 软件开发项目。在测试阶段既然穷举测试不可行,为了节省时间和资源,提高测试效率,就 必须要从数量极大的可用测试用例中精心地挑选少量的测试数据,使得采用这些测试数据能 够达到最佳的测试效果,能够高效率地把隐藏的错误揭露出来。 (2) 逻辑覆盖 逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。属白盒测试。这一方 法要求测试人员对程序的逻辑结构有清楚的了解,甚至要能掌握源程序的所有细节。由于覆 盖测试的目标不同,逻辑覆盖又可分为:语句覆盖、判定覆盖、判定-条件覆盖、条件组合 覆盖及路径覆盖。 ① 语句覆盖 :语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语 句至少执行一次。这种覆盖又称为点覆盖,它使得程序中每个可执行语句都得到执行,但它 是最弱的逻辑覆盖准,效果有限,必须与其它方法交互使用。 ② 判定覆盖 :判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判 断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。 判定覆盖只比语句覆盖稍强一些,但实际效果表明,只是判定覆盖,还不能保证一定能 查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件。 ③ 条件覆盖 :条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判 断的每个条件的可能取值至少执行一次。 条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。 ④ 判定-条件覆盖 :判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件 的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。换言 之,即是要求各个判断的所有可能的条件取值组合至少执行一次。 判定-条件覆盖有缺陷。从表面上来看,它测试了所有条件的取值。但是事实并非如此。 往往某些条件掩盖了另一些条件。会遗漏某些条件取值错误的情况。为彻底地检查所有条件 的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流 程图。这样就可以有效地检查所有的条件是否正确了。 图 5.8(a) 复合判定的例子 图 5.8(b) 改为单个条件判定的嵌套结构的例子
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有