总结一下
● 对于测试重要性的理解我们都相差不多,唯一的区别在于对测试所关注问题的不同看法。
● 我们的核心问题是如何提高测试效率。
→ 测试会占用开发周期,特别是测试覆盖率要求越高周期就会越长,这与开发进度要求一定是矛盾的。
→ 开发人员、测试人员较少测试经验,不具备良好的测试技能和测试工具,使得测试进度更加不可保证。
广义的测试
● 测试应该贯穿产品开发周期,测试不仅仅是测试所实现的产品性能与功能,还要测试开发周期中各种设计文档。
● 需求阶段、总体(概要)设计阶段、详细设计阶段所输出的技术文档,包括需求规格说明、总体(概要)设计、详细设计、源程序(SCH、PCB)、用户文档等,都是测试的对象。
测试的分类
● 按测试方法划分,有静态测试和动态测试。
→ 动态测试:使被测试产品或模块有控制地运行,并从多种角度观察运行时的行为,以发现其中的错误。
→ 静态测试:就是指人工评审设计文档,借以发现其中的错误。作为研发质量控制的重要手段,评审经常作为具体实施前的检查手段,其目的是保证设计的正确性、减小设计风险、尽早发现设计缺陷。
● 按测试功能划分,有黑盒测试和白盒测试。
→ 白盒测试:对模块内部是不透明的。从模块/产品的设计、结构上来进行测试,检查模块/产品中的错误。
→ 黑盒测试:对内部透明,仅从使用上来检查功能上是否有错误。
黑盒与白盒
● 黑盒测试是从上到下、从宏观到微观的逐步验证过程,一般止步于单板/功能模块外部功能的测试。
● 白盒测试是从下到上、从微观到宏观的逐步验证过程,一般涉及单板/功能模块内部性能功能及单元间接口的测试。
● 一般采用白盒测试方法来检查产品的基本功能单元内部错误,而采用黑盒测试方法来验证由各功能单元组装而成的产品/系统的功能和性能。
黑盒测试也称功能测试或数据驱动测试,它是在对产品应具功能进行抽象的基础上,将程序划分成功能单元,然后对每个功能单元设计测试用例进行测试。
● 优点:黑盒法测试用例是围绕着产品操作方式和实际应用环境来设计的,每一个测试用例表征着一种产品实际可能发生的应用场景,测试结果非常直观便于理解。
● 缺点:黑盒测试用例的设计不可能做到完全覆盖,因此难以完全触发产品内部所有执行流程/路径,也就难以完全发现深藏在产品内部单元/模块及接口的设计缺限,需要有白盒测试进行补充。
白盒测试也称结构测试或逻辑驱动测试,在知道产品内部工作过程的前提下,按照产品内部的结构,通过测试来检测产品内部动作是否符合详细设计。
● 优点:白盒法测试用例是围绕着产品设计实现角度出发,通过对其内部信号特征、接口功能性能的覆盖性检查来保证设计的正确性。
● 缺点:以详细设计为依据,以覆盖率为最终目标,因此缺乏宏观把握的能力。
→ 能查出详细设计本身所存在的问题,即错误的产品设计。
→ 不可能查出被详细设计所遗漏的功能、性能。
灰盒测试
● 灰盒测试介于黑盒与白盒之间,关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。
● 灰盒法在用例设计中不关心模块内处理过程,只关心被测对象的输入与输出,这是典型的黑盒思维模式。
● 灰盒法在用例设计时基于对模块内部处理的了解,测试设计可以有针对性的进行,测试过程评估也是白盒法。