黑盒法:黑盒法着重测试软件的功能。黑盒测试并不能取代白盒测试,它与白盒法互补,能发现白盒测试不易发现的其他类型的错误。
黑盒法主要发现以下类型错误:
功能不正确或遗漏了功能;
界面(接口)错误;
数据结构错误或外部数据库访问错误;
性能错误;
初始化和终止错误。
白盒测试在早期阶段进行,黑盒法主要在后期进行;
黑盒法分为等价划分、边界值分析、错误推测;
什么事等价类划分?
把程序的输入域划分成若干个数据等价类;
测试中,一个等价类中的一个典型值的作用与这一类中所有其他值的作用相同,因此,只取一组数据用于测试;
根据等级类设计测试用例:
为每个等价类编号;
设计一个测试用例,以尽可能地覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类都被测试用例覆盖为止;
设计一个测试用例,使其只覆盖一个无效等价类,重复这一步骤,直到所有无效等价类均被覆盖为止。
边界值分析:
大量的软件缺陷发生在输入域和输出域的边界上。所以在设计测试用例的时候,应该重视边界。
例:只有一个输入条件时,可以这么选取测试用例。(以坐标轴举例。以红点表示测试用例)
例:当有两个输入条件的时候,可以这么选取测试用例。(以红点表示测试用例)
小结:
边界值测试是一种最基本的黑盒测试方法,它是“等价类划分”这种测试方法的良好补充。但该方法会有较大的冗余和漏洞。边界值测试对布尔型无效(因为布尔型不是“true”就是“false”,不存在边界值的概念)。当然,边界值测试并非黑盒测试独有,它也可以应用在白盒测试(比如数组边界的测试、对循环次数边界的测试……)。
错误推测:
根据经验和程序特点,推测出错点,设计针对性的测试用例,往往更有效。
为什么可以用错误推测法?
使用边界值分析和等价划分技术,都是出于全面性的考虑,一般来说,测试的数据量都比较大。
而不用类型不同特点的程序通常又有一些特殊的容易出错的情况,有时依靠测试人员的经验和直觉,从各种可能的测试方案中选出一些最可能引起程序出错的方案,是效率最高的测试。
对于程序中可能存在哪类错误的推测,是挑选测试方案时的一个重要因素。
如何推测错误?
错误推测法在很大程度上靠直觉和经验进行。
它的基本想法是例举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。
对于程序中容易出错的情况也有一些经验总结出来,例如,输入数据为零或输出数据为零往往容易发生错误。
如果输入或输出的数目允许变化(例如:被检索的或生成的表的项数),则输入或输出的数目为0和1的情况(例如:表为空或只有一项)是容易出错的情况。
还应该仔细分析程序规格说明书,注意找出其中遗漏或省略的部分,以便设计相应的测试方案,检测程序员对这些部分的处理是否正确。