软件测试
功能性测试
功能性测试的基本观点是,任何程序都可以看作是将从输入定义与取值映射到输出值域的函数。这种观点常常在工程中使用,将系统看作是黑盒,于是产生术语黑盒测试,其中,黑盒的内容(实现)是不知道的,而用输入和输出表示的黑盒函数则被完全了解。在《摩托维护的技巧与艺术》中,Pirsig把他叫做“浪漫”理解,很多时候我们可以运用黑盒知识很有效地操作。事实上,这种方法是面向对象的核心,例如,大多数人都可以成功地仅仅凭借黑盒知识来操作摩托车。
采用功能性方法识别测试用例,所使用的唯一信息就是软件的规格说明,功能性测试用例具有两个显著的优点:(1)功能性测试与软件如何实现无关,所以实现发生变化,测试用例仍然有用;(2)测试用例开发可以与实现并行进行,因此可压缩总的项目开发时间,在缺点方面,功能性测试用例也常常会带来两个问题:测试用例之间可能存在严重的冗余,此外可能还会有未测试的软件漏洞
给出了由两种功能性方法标识测试用例得到的结果,方法A标识了比方法B更大的测试用例集合。请注意,对于这两种方法,测试用例集合完全局限在已描述行为集合内,由于功能性方法基于已描述行为,因此很难想像这些方法能够标识没有被描述的行为。
第二部分将讨论功能性测试的主流方法,包括边界值分析,健壮性分析,最坏情况分析,特殊值测试,输入(定义域)等价类,输出(值域)等价类和基于决策树的测试。这些手段的共同特征是,都基于被测软件的定义信息。