对【判断闰年】函数的白盒测试

  最近学习了白盒测试。白盒测试的测试方法有很多种:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:

1.语句覆盖每条语句至少执行一次。
2.判定覆盖每个判定的每个分支至少执行一次。
3.条件覆盖每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。
 
下面对月初的【判断闰年】的程序做白盒测试。
需要测试的源代码:
 
改良前的代码:

void LeapYear(int year); 

void main() { 

   int year=0; 

   LeapYear(year); 

}

void LeapYear(int year) { 

   cout<<"请输入年份:"<<endl; 

   cin>>year; 

   while(!(year>=1811 && year<=2013)) { 

           cout<<"年份超过界限,请重新输入"<<endl; 

           cin>>year; 

   }

   if((year%4==0 && year%100!=0) || (year%400==0)) { //检查闰年

           cout<<"闰年"<<endl;

   }

   else{

           cout<<"不是闰年"<<endl;

   }

}

测试用例:

改良后的代码:

public void handle(MouseEvent arg0) {
  boolean judge1 = true;
  boolean judge2 = true;
  String s = textfiled1.getText();
  if ((s.length() > 6) || (s.length() < 1))
  {
    text.setText(str2);
  return;
   for (int i = 0; i < s.length();i++)

  {
 char c = s.charAt(i);
 if (!((c >= 'A' && c <= 'Z')||(c >= 'a' && c <='z')||(c >= '0' && c <= '9')))
 {
 judge1 = false;
 break;
 }
  }
  
  if (!judge1)
  {
  text.setText(str2);
  return;
  }
  
  s = textfiled2.getText();
  if ((s.length() > 6) || (s.length() < 1))
  {
    text.setText(str2);
  return;
  }
  
  for (int i = 0; i < s.length();i++)
  {
 char c = s.charAt(i);
 if (!((c >= 'A' && c <= 'Z')||(c >= 'a' && c <='z')||(c >= '0' && c <= '9')))
 {
 judge2 = false;
 break;
 }
  }
  
  if (!judge2)
  {
  text.setText(str2);
  return;
  }
  
  s = textfiled3.getText();
  int i=Integer.parseInt(s);
  if (i != a)
  {
  text.setText(str2);
  }
  else
  {
  text.setText(str1);
  }
  
}
});*/

测试用例:

 

原文地址:https://www.cnblogs.com/summer23/p/4439956.html