白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通
过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部
的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不
顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白
盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,
从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但
即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违
反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程
序中因遗漏路径而出错。第三,穷举路径测试可能发现不了
一些与数据相关的错误。
白盒测试是指在测试时能够了解被测对象的结构,可以查阅被测代码内容的测试工作。它需要知道程序内部的设计结构及具体的代码实现,并以此为基础来设计测试用例。如下例程序代码:
HRESULT Play( char* pszFileName )
{
if ( NULL == pszFileName )
return;
if ( STATE_OPENED == currentState )
{
PlayTheFile();
}
return;
}
读了代码之后可以知道,先要检查一个字符串是否为空,然后再根据播放器当前的状态来执行相应的动作。可以这样设计一些测试用例:比如字符串(文件)为空的话会出现什么情况;如果此时播放器的状态是文件刚打开,会是什么情况;如果文件已经在播放,再调用这个函数会是什么情况。也就是说,根据播放器内部状态的不同,可以设计很多不同的测试用例。这些是在纯粹做黑盒测试时不一定能做到的事情。
白盒测试的直接好处就是知道所设计的测试用例在代码级上哪些地方被忽略掉,它的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。
白盒测试的缺点有:
1)程序运行会有很多不同的路径,不可能测试所有的运行路径;
2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;
3)系统庞大时,测试开销会非常大。