需明确:对一个复杂的应用程序进行完全的测试,将耗费大量的时间和人力资源,以致于在经济上是不可行的。即,从经济学的角度来说,软件测试是不能够发现“所有”的错误。换言之,要发现程序中的所有错误是不切实际的,也常常是不可能的。这也体现了测试人员对被测试软件的期望和对测试用例的设计方式。由此,有了两种策略,即:黑盒测试和白盒测试(均从三个方面进行阐述:原理、方法、利弊)。
黑盒测试(又称为数据驱动的测试或输入/输出驱动的测试)
- 原理:将程序视为一个黑盒子,测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件。
- 方法:测试数据完全来源于软件规范(不需要去了解程序的内部结构)。如果想用这种方法来发现程序的所有错误,判定的标准就是“穷举输入测试”,将所有可能的输入条件都作为测试用例。
- 利弊:穷举输入测试是无法实现的。原因有二:一是无法测试一个程序以确保它是无错的;二是软件测试中需要考虑的一个基本问题是软件测试的经济学,即,测试投入的目标在于通过有限的测试用例,最大限度地提高发现的问题的数量以取得最好的测试效果。
白盒测试(又称为逻辑驱动的测试)
- 原理:允许我们检查程序的内部结构的。这种测试策略对程序的逻辑结构进行检查,从中获取测试数据(但常忽略了程序的规范)。
- 方法:穷举路径测试。即,如果使用测试用例执行了程序中所有可能的控制流路径,那么程序有可能得到了完全的测试。
- 利弊:程序中不同逻辑路径的数量可能会达到天文数字,那么穷举路径测试就同穷举输入测试一样,非但不可能也是不切合实际的。
文尾,值得提一下一个错误认知:“穷举路径测试即完全的测试”。因为,即使可以测试到程序中的所有路径,但是程序可能仍然存在着错误。其原因有三:
- 即使是穷举路径测试也决不能保证程序符合其设计规范;
- 程序可能会因为缺少某些路径而存在问题,可穷举路径测试不能发现到底是缺少了那些必需路径;
- 穷举路径测试可能不会暴露数据敏感错误。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/