问个测试的问题
有关白盒测试的问题。
白盒测试的用例大家是怎么来确定的。是看着
程序代码来确定用例吗?还是看着功能需求书来确定用例。
下面的例子中由于程序员A和B的水平不一样,写出来的代码不一样。那么对应这两种不同的实现方法,白盒测试的用例应该一样吗?
功能需求
 输入一个数字(年)检查该年是否是闰年			
 四年一润,百年一润,四百年不润
程序员A的实现代码
int divided(int a,int b)					
{					
	int ii=0;				
	for(;a>=b;){				
		a= a-b;			
	}				
					
	if(a==0){				
		ii=0;			
	}else{				
		i=1;			
	}				
					
	return ii;				
}					
int isLeapYear(int year)								
{								
	int result =0;							
	if( divided(year, 4)==0)							
	{							
		if(divided(year, 100)==0)						
		{						
			if(divided(year, 400)==0)					
			{					
				result = 1;				
			}else{					
				result = 0;				
			}					
		}else{						
			result = 0;					
		}						
	}else{							
		result =1;						
	}							
								
	return result;							
}								
			
程序员B的实现代码
		int isLeapYear(int year)								
		{								
			int result =0;							
			if(year % 4==0)							
			{							
				if(year %100==0)						
				{						
					if(year%400==0)					
					{					
						result =1;				
					}else{					
						result =0;				
					}					
				}else{						
					result = 0;					
				}						
			}else{							
				result =1;						
			}							
										
			return result;							
		}								
										
------解决方案--------------------考察角度不同,黑盒测试更关注的是稳定性、容错性和健壮性。
这里面几类问题:
1、不是所有功能都会直接对应到业务需求,尤其是底层核心功能;
2、有些功能是技术性功能,供上层所调用的,白盒测试不易覆盖,比如一些异常处理、重试机制之类的;
3、需求不是永远一层不变的,变化的需求是常态,由此引发很多系统变更和关联性影响。
不过仍然是之前那句话,白盒测试做的不多,一般只有重要的核心功能;如果你所开的东西是操作系统或者JVM啥的,白盒测试就显得十分重要了。