软件测试基础(二) 测试方法
软件测试方法从不同的角度去看有很多定义的方法。
静态&动态划分
静态测试包括代码检查,静态结构分析,代码质量度量等。代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编写风格问题,包括变量检查、命名和类型审查、语法检查和程序结构检查等内容。在实际使用中,代码检查比动态测试更有效,能快速找到缺陷,发现30~70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。但是代码检查是非常耗费时间的,而且代码检查需要知识和经验的积累。代码检查应在编译和动态测试之前进行,在检查前,应准备好需求描述文档、程序设计文档、程序源码清单、代码编码标准和代码缺陷检查表等。静态测试具有发现缺陷早、降低返工成本、覆盖重点和发现缺陷概率高的优点,缺点是耗时长、对技术能力要求高,不能测试依赖。
动态测试是指通过运行被测程序,检查运行结果与期望结果的差异,并分析运行效率和健壮性,主要包含三种方法:构造测试实例、执行程序、分析程序的输出结果。目前动态测试也是多数公司的测试工作的主要方式。
“盒子”划分
软件测试方法传统上可以分为白盒测试跟黑盒测试。所谓白盒或者黑盒,最简单的区别就是程序源代码是否对测试人员可见。
白盒测试
又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒法全面了解程序内部逻辑结构,对所有逻辑路径进行测试。白盒法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。白盒测试方法有API测试,代码覆盖率测试,错误注入测试,程序变异测试以及静态测试。
白盒测试的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
黑盒测试
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,程序被看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序是否按照需求规格说明书规定的正常使用,程序是否能适当地接收输入数据并产生正确的输出信息。主要针对软件界面和软件功能进行测试。黑盒测试方法主要包含等价类划分法,边界值分析法,决策表法,因果图法,模块测试,模糊测试,用例测试,探索测试还有根据需求规格制定的测试等。
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。