软件测试概述
什么是软件测试
介绍两种主流的软件测试的定义
- 为发现错误而执行程序的过程
- 评价程序或系统属性为目的的活动,是对软件质量的度量
软件缺陷及其原因
什么是软件缺陷
- 软件未实现规格说明书中的功能
- 软件功能出现了不应有的错误
- 软件功能超出规格说明书范围
- 软件未达到应达到的目标
- 软件难以理解,不易使用,运行速度缓慢
软件缺陷来源
- 软件需求文档歧义,表述性错误
- 软件设计
- 编码实现
软件测试的对象
- 程序
- 文件
- 数据
软件测试的过程模型
- V模型
缺陷:
整个测试流程是顺序执行的,时间跨度长,没有并行过程
有些测试部分职能最后执行,部分问题发现较晚
- W模型
开发与测试阶段可以并行
- X模型
- H模型
软件测试的生命周期
- 测试计划
测试范围,测试策略,用例设计方法,人员进度安排,产生测试计划文档 - 测试分析
测试人员分别去了解测试文档 - 测试设计
用例设计,产生测试用例文档 - 测试执行
产生测试缺陷报告文档 - 测试评估
产生测试报告文档
测试方法分类
按照是否执行软件,可以分为:
- 静态分析
- 动态测试
按照是否了解程序的内部结构,可以分为:
- 黑盒测试(又称功能测试,数据驱动测试)
- 白盒测试(又称结构测试,逻辑驱动测试)
- 灰盒测试
根据阶段和作用,可以分为:
- 单元测试
主要测试函数的功能是否正确的实现 - 集成测试
主要测试各个模块的调用,参数传递是否正确 - 系统测试
主要测试需求规格是否被实现 - 验收测试
主要测试用户是否能够接受该系统
根据目的,可以分为:
- 功能测试
- 性能测试
- 安全测试
- 兼容性测试
常被面试的概念:
- 回归测试
测试提交的问题被程序员修改完成后,将会将程序再次提交给测试人员,测试人员会检查代码修改是否引起了其他的功能性错误 - 冒烟测试
验证一些基本功能能否通过 - α测试
请用户在开发环境下的测试 - β测试
用户在产品发布后进行测试
软件测试的基本原则
- 尽早的和不断地进行软件测试
- 应避免测试自己的程序
- pareto原则(80/20原则)
- 测试用例由输入和预期的输出结果组成
- 程序修改后要回归测试
- 穷举测试是不可能的