手工测试是传统的测试方法,由测试人员手工编写测试用例、执行、观察结果。软件测试中发现问题最多的都是手工测试,占整个项目的百分之九十五左右,所以说手工测试是软件测试基础。但手工测试也有一定的缺点:测试工作量大、重复多、回归测试难以实现。
根据被测对象信息的不同,将软件测试的方法分为白盒测试、黑盒测试、灰盒测试。
- 白盒测试
- 概念:白盒测试又称玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试、是基于程序结构的逻辑驱动测试。盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
- 目的:
- 白盒测试发现问题后,解决问题的成本比较低
- 通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试
- 在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态是否与预期状态是否一致
- 优点:
- 使测试人员去仔细思考软件的实现
- 可以检测代码中的每条分支的路径
- 揭示隐藏在代码中的错误
- 对代码的测试比较彻底
- 最优化
- 缺点:
- 无法检测代码中遗漏的路径和数据敏感性错误
- 不验证规格的正确性
- 昂贵
- 黑盒测试
- 概念:黑盒测试又称功能测试,它是通过测试来检查每个功能是否都能正常使用。黑盒测试着眼于程序外部结构,不考虑外部逻辑,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。
- 目的:减少测试时的测试用例数,用尽量少的测试用例完成测试,发现更多问题。
- 优点:
- 基本上不用人管着,如果程序停止运行了一般就是别册程序crash了
- 设计完测试用例后,剩余的工作就不多了
- 对于更大的代码单元来说,比白盒测试效率更高
- 缺点:
- 没有清晰和简洁的规格,测试用例很难实现
- 不能控制内部执行路径,会有很多内部测试路径没有被测试到
- 不能直接对特定的程序段,这些程序可能非常复杂
- 灰盒测试
- 概念:灰盒测试是介于白盒测试和黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段。不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒测试那样详细完整,但又比黑盒测试更关注程序内部的逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
- 目的:
- 确认软件的质量,一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事情
- 提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息
- 保证整个软件开发过程是高质量的