目录
在学习后面的知识前,先来熟知一个概念
什么是软件测试:软件测试就是验证软件产品特性是否满足用户的需求
1.需求
在企业中,需求分为用户需求和软件需求
(1)用户需求
用户需求是用户提出的,可能是不合理的,是不能直接作为开发和测试的依据
(2)软件需求
软件需求是产品经理针对用户需求进行需求分析(包括技术可行性、市场可行性、成本投入和收益占比等)后,才能转化成软件需求;软件需求可以直接作为开发人员和测试人员工作的依据
软件需求一般都是一个需求文档,里面罗列了许许多多的需求和步骤
2.开发模型
2.1.软件的生命周期
在认识开发模型前,就需要先认识软件的生命周期,也就是一款制作一款软件的流程;换句话说,软件的生命周期,其实就是软件的开发模型,和前面的测试流程很像。
(1)软件生命周期
上述的流程也就是软件开发的基础流程
(2)每个流程的任务
阶段 | 具体内容 | 产出 |
需求分析 | 分析需求是否合理(市场需求、技术等方面) | 产出需求文档 |
计划 | 计划该需求多少时间内完成,每个时间段完成哪些任务 | 产生计划文档 |
设计 | 将需求细化成一个个小任务,每个团队完成一部分 | 输出技术文档 |
编码 | 开发人员参考需求文档、设计文档、交互图等进行代码的编写 | 产出代码文档等 |
测试 | 测试人员开始进入软件的测试,参考测试用例对软件进行测试 | 测试用例、测试设计与计划、测试报告等 |
运行维护 | 项目测试结束后,就会进行上线,就需要对产品进行线上的维护(修复性维护、完善性维护、预防性维护) |
这就是每个流程需要完成的任务以及会产生的东西。下面根据该基础流程
2.2.瀑布模型
(1)瀑布模型流程
上述就和基础的软件生命周期基本一样,没有什么改变,称为瀑布模型,形为一条路走到底
(2)特点
每个流程只执行一次,属于线性的开发流程
使用场景:需求固定的小型项目
(3)缺点
对于缺点也很明显,就是测试后置,周期很长,能运行的产品需要很长的时间才能看到
(1)测试后置
- 前阶段可能会存在遗留的风险到测试阶段才能被发现,会导致项目大面积返工,失去早修复的几乎
- 必须要有足够的时间给测试阶段,否则会导致测试不充分
(2)周期太长
- 产品需要很迟的时间猜你看到和使用,就可能导致某些需求/功能过时
2.3.螺旋模型
(1)螺旋模型流程
螺旋模型其实就是在瀑布模型的基础上,加上了风险分析和原型
原型类似于模型,每个阶段都会产生一个原型,然后对其分析是否合理
(2)特点
使用场景:规模庞大、复杂度高、风险大的项目
- 每个阶段都引入风险分析+原型,可以减少各阶段遗留的风险问题,避免把问题留到最后面的阶段。
- 强调严格的全过程风险管理
(3)缺点
- 项目中可能存在的风险与风险管理人员的技能水平有直接关系
- 需求人员、资金、时间的增加和投入,可能会导致项目的成本太高
2.4.增量模型、迭代模型
增量模型和迭代模型和像,但是却不太一样,一般都不会单独使用,都是混合使用。
(1)增量模型
特点:将一个大需求划分成多个小需求,每个小需求独立开发
适用场景:大型项目,需求不明确
(2)迭代模型
特点:先上线一个基础版本,后续再完善每个功能
使用场景:大型项目,需求不明确
2.5.敏捷模型
由于需求会频繁更换,前面的模型都不太适合,因此敏捷模型就是为了应对这种情况。
(1)敏捷模型机制
在敏捷模型中,需求被分解成许多可以增量开发的⼩部分。敏捷模型采⽤迭代开发。每个增量部分都是在迭代中开发的。每次迭代都旨在⼩⽽易于管理,并且只能在⼏周内完成。⼀次为客⼾计划、开发和部署⼀个迭代。没有制定⻓期计划。
(2)敏捷宣言
- 个体与交互重于过程和⼯具
- 可⽤的软件重于完备的⽂档
- 客⼾协作重于合同谈判
- 响应变化重于遵循计划
特点:轻文档、轻流程、重目标、重产出
(3)敏捷模型的三个角色五个会议
三个角色:项目经理、产品经理、研发团队
五个会议:发布计划会议、迭代计划会议、每日例会、演示会议、回顾会议
3.测试模式
3.1.V模型
(1)流程
(2)特点
明确的标注了测试过程中存在的不同类似的测试,每个测试阶段都需要对应前面一个
(3)缺点
仅仅把测试作为在编码之后的一个阶段,未在需求阶段就介入测试。缺点同瀑布模型
3.2.双V模型
(1)流程
(2)特点
解决了v模型的缺点,需求、设计同样都会被测试,测试与开发是同步进行的
(3)缺点
- 需求、设计、编码等活动被视为串行的
- 测试和开发活动保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作
- 重流程,无法支持敏捷开发模式。(轻文档)