一.定义
软件测试是在软件投入正式运行前对需求分析、设计和编码的结果进行复查的活动。
测试与调试的区别:
- 目的不同:测试是发现错误;调试是改正/修正错误
- 过程不同:测试活动是有序、可重复的活动,有较完备的工程方法支撑;调试则是不可重复的活动,针对具体问题/具体源程序不具备重复性。
二.目的原则
目的:发现软件开发各阶段的问题
原则:
- 尽早的、不断的进行软件测试
- 明确测试输入预置条件和与之对应的预期输出结果
- 避免测试自己编写的程序
- 在测试设计时应充分考虑异常的输入情况
- 充分考虑测试中的集群现象,80%的错误集中在20%的程序模块中
- 排除测试的随意性
- 对测试结果做全面检查
- 妥善保存测试计划,测试用例,出错统计和最终分析结果
- 所有的测试应该追溯到用户需求
- 测试应该从“小规模”开始,逐步转向“大规模”即渐增式build测试
三.对象
软件测试不仅仅局限于软件程序的测试,测试活动贯穿于软件开发过程的整个周期中,因此,需求分析、概要设计、详细设计以及编码各阶段所得到的交付件,包括设计文档,源代码,应用程序乃至随软件版本发布的资料,都是软件测试的对象。
四.输入输出
输入:
- 软件配置:软件需求规格说明书,软件设计说明书,源代码
- 测试配置:测试计划、测试用例、测试环境、测试辅助程序
- 为提高软件测试效率,可使用测试工具支持测试工作,其作用就是为测试的实施提供服务,以减少人们完成测试任务中的手工劳作。
输出:
问题报告单,测试总结/报告、测试度量数据、新增用例
五.软件缺陷类型
- 遗漏:规定的或预期的需求未能体现在产品中(可能未将规格说明全面实现,也可能需求分析阶段就有遗漏的需求)
- 错误:未将规格说明正确实现(可能设计错误,也可能编码错误)
- 额外的实现:规格说明并未规定的需求被纳入到产品,得到实现
六.软件测试流程
测试准备 -> 测试计划 -> 测试设计 -> 测试执行 -> 测试完成
七.测试分类
- 按技术划分:黑盒测试、灰盒测试、白盒测试
- 按阶段划分:单元测试-集成测试-系统测试-验收测试
- 按内容划分:功能测试、性能测试、兼容测试
- 按其他划分:冒烟测试、回归测试、安全测试、易用性测试、本地化测试、国际化测试、静态测试、动态测试
- 常用的三种策略:正式验收测试、Alpha测试、Beta测试
软件测试十大准侧
- 测试是一个持续进行的过程,而不是一个阶段
- 测试必须备计划、被控制,并且被提供时间和资源
- 测试应当分级别
- 测试应当有重点
- 测试不是为了证明程序的正确性,而是为了证明程序不能工作
- 测试不可能穷尽,当测试出口条件满足时就可以停止测试
- 测试是开发的朋友,不是开发的敌人
- 测试人员应当站在公正的立场上进行测试,如实地记录和报告缺陷
- 测试自动化能解决一部分问题,但不是全部
- 测试不能仅仅包含功能性的验证,要应当包含性能、可靠性、可维护性、安全性等方面的验证
软件测试十佳实践
- 尽早的繁琐的进行测试是降低项目成本,提高质量的一个好的实践
- 尽早的产生一个综合的主测试计划
- 对质量要求较高的产品或大型负责的产品成立独立的测试组
- 每个开发阶段,使用测试和评价的结果作为是否可以通过的标准
- 开发和维护一个测试需求和目标风险优先级列表
- 把测试作为产品的一部分等同管理起来,使用相同的评价标准和过程
- 提供集成化的测试工具和测试基础支持
- 加强测试度量工作和缺陷分析工作,不断的改进测试
- 加强测试的培训并为测试人员提供技能发展的通道
- 加强沟通和交流,让项目组内所有的人员都了解测试的重要性和测试的工作。