问个测试的问题
有关白盒测试的问题。
白盒测试的用例大家是怎么来确定的。是看着程序代码来确定用例吗?还是看着功能需求书来确定用例。
下面的例子中由于程序员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啥的,白盒测试就显得十分重要了。