黑盒测试和白盒测试是两种不同的测试方法。在整个的测试过程中两种方法都会用到,但以经验来看,在一个项目中测试工程师还是以黑盒测试为主,白盒测试为辅。对于有些人认为黑盒测试没有技术含量,这是完全错误的一种看法,好的黑盒测试需要丰富的经验和敏锐的思维。
黑盒测试的特点:
1. 不基于对系统内部的设计和实现。
2. 用例设计基于功能的定义和需求说明书。
3. 关注于测试数据的选择和测试结果的分析。
常见的黑盒测试有,功能测试、压力测试、易用性测试和性能测试等。
使用的测试方法有,等价类划分、边界值测试、错误测试、启发性测试等。
当然黑盒测试也存在一些弊端:
1. 对用例设计人员的经验要求较高,包括数据的选择,对潜在错误的敏感性;
2. 对于内部实现的bug不容易发现;
3. 不能提供直观的测试覆盖率。
白盒测试的特点:
1. 需要了解系统的整体设计和实现;
2. 对源代码进行审查;
3. 在单元测试阶段发现大量的缺陷;
4. 关注于系统的控制流和数据流;常用的一些白盒测试方法有,独立路径测试、逻辑判断测试、数据结构测试、覆盖率测试等。
白盒测试的不足之处有:
1. 不能确保系统是否完全符合需求说明书;
2. 白盒测试的代价会大于黑盒测试;
3. 需要源代码首先完成才能进行测试;
在我们的项目中的实践方法是,在早期开发人员通过做单元测试和代码审查来完成白盒测试的大部分,相应的测试模块的分责人也会参与开发人员的Design Review Meeting.在集成测试和系统测试部分主要是测试人员进行黑盒测试,必要时会对一些核心模块或者bug比较多的模块与开发人员一起重新做Code Review.在产品比较稳定之后,会采用一些测试工具如Rational Purecoverage来做覆盖率测试,通过覆盖率测试可以发现哪些函数没有跑到,进而更新或加入新的测试用例。但覆盖率不可能100%,一般采取的标准是函数覆盖率90%,语句覆盖率70%.