软件测试是软件开发过程中的基本活动。黑盒测试和白盒测试是两种不同类型的软件测试策略,它们具有同样强大的功能,并且结合使用时甚至更好。


一、黑盒测试


在软件中,黑盒测试很方便,可以减少灾难性(软件)崩溃的风险。灾难性的软件崩溃可能是什么?系统在更新客户数据库的过程中崩溃了?在这种情况下,可能会丢失客户数据。


黑盒测试分为三种类型:功能测试,非功能测试和回归测试。


1、黑盒功能测试


通过功能性的黑盒测试,我们可以在不知道软件如何执行的情况下检查该软件是否按预期进行。


软件是用模块或组件构成的。它是由许多不同的组件组成的一系列组件,组成一个完整的系统。通过以这种方式,在小型组件中,我们可以测试每个组件以确保其正常工作,而不仅仅是测试大型系统。


因此,对于每个小组件,都有输入和预期输出。要进行黑盒测试,您需要创建一个有效和无效输入的列表,包括边界条件等等。


这是一个简单的功能性黑匣子测试示例。假设有一个软件模块,该模块输入一个数字。


我们还可以使用黑盒测试来测试其他预期的系统行为。这些可能包括系统响应时间,预期的数据,大量网络流量等场景。


非功能测试将包括诸如设置模拟测试环境之类的内容,以查看系统在压力下的性能。有各种各样的工具可以帮助我们实现这些测试目标并使所涉及的流程自动化。


2、回归黑盒测试


这是当我们在一个地方进行更改时,对整个系统进行黑盒测试(包括功能测试和非功能测试)时,请确保该更改不会意外影响系统的其他部分。显然,此过程需要自动化!


二、白盒测试


白盒测试是当测试软件模块的内部结构时:代码本身。出于各种原因,白盒测试是可以采用的良好测试策略。


1、出于安全原因


有时,代码本来就是“不安全的”:是因为它引用并使用了来自外部源的不安全函数,偶然地导致数据泄漏或使用了错误的结构都会带来安全隐患。


2、解决性能问题


有无数种方法可以完成某一项业务的软件模块的开发实现。尽管可以正常工作,但这并不意味着它已经以最佳方式进行了配置。如果从性能角度来看代码结构可以更高效,那么白盒测试可以发现这一点。


3、检查链路


在确认交易之前或之后,应将交易记录在您的系统中吗?也许之前和之后都需要记录它?白盒测试允许您检查路径和数据流的内部工作方式,以查看它们是否最有意义和/或符合系统要求。


三、需要黑盒和白盒测试的结合


黑盒测试对于确保系统按预期运行至关重要。无需编码知识就可以执行这种测试,因为它不需要检查代码本身。在这种情况下,了解软件系统的工作原理和业务逻辑更为重要。白盒测试更加困难,需要由经验丰富的程序员使用高级工具进行。