针对以下C语言程序,请按要求回答问题。 下面是一个简单的C语言程序: int funcl(int a,b,c) { int k=1; if((a>0 || b<0)) k=k+a; else k=k+b

admin2013-03-13  30

问题 针对以下C语言程序,请按要求回答问题。
   下面是一个简单的C语言程序:
   int funcl(int a,b,c)
   {  int k=1;
      if((a>0 || b<0))    k=k+a;
      else k=k+b;
      if(c>0) k=k+c;
      return k;
   }
设计特殊的测试用例,说明各种逻辑覆盖之间的关系。

选项

答案这个程序有3个输入:a、b、c,其输入数据组合是非常大的。下面对该程序分别应用不同的逻辑覆盖准则,设计测试用例。 首先根据源程序画出程序流图比较容易,然后分析学过的所有的逻辑覆盖(如语句覆盖,分支覆盖,路径覆盖等),分析针对每种逻辑覆盖的标准来设计测试用例。通过设计测试用例来体现各种逻辑覆盖之间的关系。 1.语句覆盖 根据语句覆盖准则,只需要采用两个输入数据组合:(a,b,c)=(1,1,1)、(-1,1,1),便可以把该程序的所有5个语句执行一遍。 2.分支覆盖(判定覆盖) 根据分支覆盖准则,只需要采用两个输入数据组合:(a,b,c)=(1,1,-1)、(-1,1,1),便可以把该程序的所有4个分支走遍。但未考虑b<0的情况,故不满足条件覆盖。说明满足分支覆盖的测试用例未必满足条件覆盖。 3.条件覆盖 根据条件覆盖准则,只需要采用两个输入数据组合:(a,b,c)=(1,1,-1)、(-1,-1,1),便可以把该程序的3个条件的真假情况都覆盖到。由于表达式(a>0)||(b<0)的计算值都为真,不会执行else语句,即不满足分支覆盖和语句覆盖。说明满足条件覆盖的未必满足分支覆盖和语句覆盖。 4.条件组合覆盖 根据条件组合的覆盖准则,只需要采用4个输入数据组合:(a,b,c)=(1,-1,1)、(1,1,1)、(-1,1,-1)、(-1,-1,-1),便可以把该程序的6个条件组合情况覆盖到。但执行的路径数只有2个,故不满足路径覆盖。说明满足条件组合的覆盖不一定满足路径覆盖。 5.路径覆盖 根据路径覆盖的准则,只需要采用4个输入数据组合:(a,b,c)=(1,1,1)、(1,1,-1)、(-1,1,1)、(-1,1,-1),便可以把该程序的所有4条路径都覆盖。路径覆盖是最强的覆盖准则。

解析
转载请注明原文地址:https://kaotiyun.com/show/G4NZ777K
0

相关试题推荐
最新回复(0)