最近在读著名测试专家James A. Whittaker 的 《探索式软件测试》 一书,特此记录。
看完前两章,联想自己的一些实习经历,记录以下几点提醒。
1、必须承认,测试是无穷无尽的,所以测试中优先级的划分很重要。
在实习过程中,总因为觉得“测得不够仔细”而反复纠结在某一个点上浪费了许多时间,拖慢了效率,现在回头看来是十分不应该的。
在测试之前,就必须认清楚当前测试用例的等级,并根据等级分配相应的时间,思考测试的粒度。
2、测试的目的很重要。
当前的测试是要测试某一功能是否正常,还是要验证它是否会失效。不同的测试目的需要采取的策略、输入并不相同。
3、测试三大问。
测试时随时思考的三个问题:
- 软件的表现是否符合预期
- 某个功能是否实现
- 软件是否足够安全、足够稳定
4、软件测试的认识
bug存在的原因有两种,一种是程序员引入的,另一种则是环境导致的;
预防bug的出现,这个工作一般由开发完成,主要通过代码设计规范、code review、unit test、static analysis tools等进行;
bug的检测一般由测试人员完成,一般分为自动化测试和手工测试。
5、一个误区
总以为自动化测试比手工测试高级,这是一个错误的观念。
实际上,自动化测试本身就是一个软件范畴,因此自动化测试也会存在bug。
自动化测试一般只擅长于极端情况的测试,如crash、hang、exception等,常用于压力测试或回归测试等。
6、认识探索性测试
探索性测试,按我的理解,也就是我们常说的“自由测试”。但自由测试并不是毫无策略的进行测试,而是有根据有意识的去测试某些不在文档里但是有可能会出问题的用例。
进行探索性测试一方面在于测试是无穷无尽的,测试用例不可能将所有的测试都写出来,因此需要发散;另一方面,敏捷测试越来越流行,实时维护测试用例变成一个难题,更多时候只能提供一个测试的方向,需要测试人员自行进行探索。