一、软件测试基本原则
- 测试应基于客户需求,需求描述、功能实现、测试用例、测试结果都需保持一致
- 测试要尽早进行,越早发现问题,成本越低
- 穷尽的测试是不可能的
- 遵循good enough原则,成本、风险和收益间的平衡
- 测试缺陷符合“二八”定理,有bug的问题可能问题更多
- 避免缺陷免疫,即惯性思维或想当然,可采取交叉测试
- 手工测试应与自动化相结合,相辅相成。自动化测试可以提升测试效率、可靠性,手工测试扩散性较强。
- 缺陷管理、用例管理、AAR、分享总结等
二、测试分类
- 开发阶段:单元、集成、系统(冒烟、回归)、验收
- 测试试试组织:a(用户在开发环境测试)、b(用户在客户场所测试)、第三方
- 是否执行代码:静态(pclint、pylint、checkstyle、source monitor、simian等)、动态(coverage、api test等)
- 是否查看代码:黑盒(fuzz等)、灰盒、白盒
- 测试执行方式:手工、自动化
- 测试地域:本地化、国际化
- 测试对象:性能、安全、兼容性、文档、易用性、业务、界面、安装卸载升级、容错、内存等
三、产生缺陷的原因
- 软件实现计划不合理
- 需求澄清、反串讲、设计和实现人员等各角色间沟通偏差
- 知识盲区
- 软件的规模、复杂程度、既有代码本身的可维护性等
- 对需求的认知范围,如易用性、性能、安全、异常等被忽略
- 流程不熟悉或未按照流程开发,如修改点未只会测试等
四、缺陷管理
- 问题分类,按影响程度一般分为提示、一般、严重、致命。低一级问题较多可提升严重级别。高级别将为低级别时需要相关同事评审讨论。问题越严重,处理优先级越高。
- 缺陷发现阶段和应发现阶段,设计、编码、单元、集成、系统、Beta等;属于当前版本还是历史版本。
- 缺陷引入类型,历史版本、当前功能,修改引入
- 缺陷发现方式,手工发现、自动化发现
- 缺陷管理工具,禅道、
- 缺陷分析学习,AAR等
五、用例管理
- B版本特性用例,归档至B版本,和特性强绑定
- C版本基线用例,归档至C版本,和C版本最终功能强绑定
- 用例级别,冒烟、全量、兼容性等,根据用例规模量、划分不同的用例类型在不同的时间点执行
- 用例执行类型,手工、自动化
- 用例的可读性、可执行性、测试数据的管理及与版本的映射关系
五、测试过程中常见问题
- 测试中,环境被修改或者环境可能不干净(比如与开发公用环境)导致测试结果不可信