软件白盒测试是一个与黑盒测试相对的概念,是指测试者针对可见代码进行的一种测试。白盒测试通常再划分为单元测试、集成测试两大类,但依据不同的流程,对白盒测试细分的标准也不尽一致,比如在IBM的IPD流程之下,白盒测试可能划分为如下几类:模块单元测试、模块集成测试、模块系统测试、渐增Build集成测试、系统集成测试等。而在XP实践中,单元测试与集成测试之间的界限并不明显,统称为渐增迭代测试。
单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。
软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。
测试是一个系统工作,它的常规流程是:模块测试、集成测试、系统测试、确认测试,在这其中根据需要回归测试穿插其中。其中在做模块测试和集成测试的时候,通常是白盒测试和黑盒测试一起发挥作用。
通信软件被普遍认为是白盒测试最难实施的领域,一方面,通信软件以C语言为主体语言,先进的白盒测试技术尚未有效渗透到这个区域,另一方面,通信软件通常是嵌入式实时系统,搭建测试环境非常复杂,又加上通信软件通常体积庞大、结构复杂,把通信软件的单元测试或集成测试做好确非易事。
单元测试的测试数据可以用两个基本的方法系统地构建。第一个是规格说明测试,这个技术也称为黑盒测试,行为测试,数据驱动测试,功能测试以及输入/输出驱动测试。另一个极端是代码测试,它在选择测试用例时不理会规格说明文档。这个技术也称为玻璃盒测试,白盒测试,结构测试,逻辑驱动测试以及面向路径测试。
友人问我白盒测试的做法,因为我做过一年半的白盒测试,其实国内很少公司花很大的精力去做白盒测试,一般在单元测试过程中,白盒测试全是由开发人员来完成,商业软件所使用到的技术主要是黑盒测试技术,这是其特点所决定的。还有少量的白盒技术,但在实际中很少有公司愿意投入人力来作。
在人们的意识中,往往会认为软件测试工具是为一些软件开发的专业人员设计的,但就Java软件分析与测试工具而言,其适用范围还不仅限于专业人员。开发软件产品的专业技术人员的确需要Java软件分析与测试工具帮助他们提高和保证产品的质量,而另一方面,项目的提出单位或使用单位也需要Java软件分析与测试工具来评估和验收由开发单位提交的软件产品