软件测试概述
软件测试
- 广义软件测试:软件生命周期中所有的检查、评审和确认工作。
- 狭义软件测试:识别软件缺陷的过程。
两大任务
- 验证verification:保证软件正确地实现某一特定功能的一系列活动
- 确认validation:保证软件的实现满足了用户需求的一系列活动
目的
- 发现软件中的缺陷。
- 软件中实现的功能不正确(验证)
- 软件中缺少某项功能(确认)
- 软件中实现了没有在需求中提出的功能(确认)
最终目标
- 确保软件完成了它所承诺或公布的功能
- 确保软件的功能复合用户的需求,把尽可能多的问题在发布或交付前发现并改正
- 确保软件满足性能要求
- 确保软件的健壮性和对用户环境的适应性
- 为软件质量保证提供依据
- 为软件质量改进和管理提供帮助
基本原则
- Good enough:一种权衡投入和产出比的原则
- 越早测试越好,测试过程与开发过程紧密结合
- 所有的测试都应该追溯到用户需求
- 测试人员不能为了便于测试而擅自修改程序
软件测试实施过程的重点环节
- 测试环境的搭建
- 测试用例的良好设计
- 测试工作的管理
软件测试结果的度量指标
- 测试覆盖率
- 缺陷发现率
- 测试成功率
测试方法
- 黑盒测试vs.白盒测试
- 静态分析
- 不实际运行软件,主要是对软件的编程格式、结构等方面进行评估。包括代码检查、静态结构分析、代码质量度量等。
- 动态分析
- 计算机真正运行被测试的程序,对其运行情况即输入与输出的对应关系进行分析,包括:
- 功能确认与接口测试
- 覆盖率分析
- 性能分析
- 内存分析
- 计算机真正运行被测试的程序,对其运行情况即输入与输出的对应关系进行分析,包括:
- 手工测试vs.自动化测试
测试流程
软件测试的V模型