软件测试
一、软件测试概念
1.定义
- 经典定义
软件测试在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 - 标准定义(IEEE):
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
2.目的
- 发现被测对象与用户需求间的差异——俗称找bug
- 通过测试活动发现并解决缺陷,增加人们对被测对象的质量信心
- 通过测试活动,获取被测对象的质量信息,为决策提供数据依据
- 通过测试活动,预防缺陷,从而降低项目或产品的风险
3.测试对象
程序、数据、文档。
4.测试原则
- 测试证明软件存在缺陷
- 不可能执行穷尽测试
- 测试应尽早启动,尽早介入
- 缺陷存在群集现象(二八原则,20%的模块存在着80%的缺陷)
- 杀虫剂悖论
- 不同的测试活动依赖不同的测试背景
- 不存在缺陷的谬论
二、软件测试分类
1.测试级别(测试阶段)
单元测试、集成测试、系统测试、验收测试
2.按是否运行程序划分
静态测试、动态测试
3.按是否查看代码划分
黑盒测试、白盒测试、灰盒测试。
综合整理如下:
另外,可以参考文章软件测试概念及分类整理汇总,内容非常详细。
三、软件质量
四、软件测试流程
1.测试流程
- 测试需求分析阶段
阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议 - 测试计划阶段
主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。 - 测试设计阶段
主要是编写测试用例,会参考需求文档(原型图),概要设计,详细设计等文档,用例编写完成之后会进行评审。 - 测试执行阶段
搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理直到测试结束 - 测试评估阶段
出测试报告,确认是否可以上线
2.开发模型
- 瀑布模型
- 快速开发原型模型
- 螺旋模型
3.测试模型
1)V模型
需求分析-概要设计-详细设计-软件编码-单元测试-集成测试-系统测试-验收测试
- 优点:
包含了底层测试(单元测试)和高层测试(系统测试);清楚的标识了开发和测试的各个阶段;自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。 - 缺点:
自上而下的顺序导致了,测试工作在编码之后,就导致错误不能及时的进行修改;实际工作中,需求经常变化,导致v模型步骤,反复执行,返工量很大,灵活度较低。
改良:每个步骤都可以进行小的迭代工作。
2)W模型
用户需求-需求分析-概要设计-详细设计-编码-单元测试-集成测试-验收测试-单元测试设计-集成测试设计-系统测试设计-验收测试设计-集成-实施-交付
即,开发一个v,测试一个v组合起来的模型(w模型也叫双v模型)
- 优点:
开发和测试伴随着整个开发周期,需求和设计同样要测试;更早的介入测试,可以发现初期的缺陷,修复成本低;分阶段工作,方便项目整体管理。 - 缺点:
开发和测试依然是线性的关系,需求的变更和调整,依然不方便;如果没有文档,根本无法执行w模型;对于项目组成员的技术要求更高!
3)H模型(了解)
测试准备-测试就绪点-测试执行-测试流程-其他流程
4)X模型(了解)
程序片段1-测试设计-工具配置-执行测试-编码完成-执行测试-工具配置-测试设计-程序片段N;封版-执行测试-测试设计-工具配置-迭代1…N-探索式测试-执行测试
V模型适用于中小企业,W模型适用于中大型企业(对人员要求高),H模型人员要求非常高,很少有公司使用。