- 测试是为了发现错误
- 软件发布的标准要考量测试的充分性和Bug的数量
- 测试的充分性:测试的覆盖率等
- Bug的数量:Bug发现的数量和收敛程度
- 根据测试目的分类
- 正向:验证程序能正常工作(不容易啊)
- 逆向:验证程序不能正常工作
- 测试活动的组织
- 用例的设计涵盖正向和逆向——在验证成功的场景的同时,包含扩展场景
- 结合严格的测试用例执行过程和灵活的探索性测试执行过程
- 中前期集中精力于发现软件的错误,中后期集中精力于验证软件的正确性
- 单元测试主要关注程序做了正确的事情,集成测试和系统测试主要关注程序的错误行为
- 自动化测试专注于验证程序的正确 行 为,手工测试专注于发现软件的错误行为
- 一个完整的测试在验证程序正确性的同时还要包含
- 可用性
- 可靠性
- 性能
- 安全性
- 维护性
- 扩展性
等的测试。但是由于目前测试在软件公司中所处的位置比较尴尬,很多测试行为是在代码开发到一定程度后开始的,因此维护性和扩展性的测试基本就被忽略了。
- 测试的基本原则
- Good Enough
- 在有限的资源下,测试很难做到完全覆盖
- 投入和产出要适当权衡
- 适当加入其他的 QA 手段:代码评审、同行评审、需求评审、设计评审等,降低对测试的依赖,确保软件缺陷能尽早发现。
- Pareto
- 软件测试中的 80-20 原则: 80% 的 Bug 在分析、设计和评审阶段能够被发现; 16% 需要由系统的测试来发现; 4% 只有在用户长时间的使用过程中才能暴露出来
- 测试人员要尽量做多的发现错误,避免漏测
- 尽早开展测试
- 越早发现错误,修改的代价越小
- 在 Bug 多发地段投入更多的测试
- Bug 也有聚集效应
- 一旦发现某模块有 Bug 集中现象,应对该模块进行更多的测试和回归验证
- 同化效应
- 测试人员被开发人员同化,产生审查的盲点
- 测试人员对产品熟悉,被当前产品同化,容易忽略小问题
- 通过交叉用例评审或测试来改善
- Good Enough