需求
用户需求
用户也可以理解为甲方,用户需求即是甲方提出的需求,通常比较简略、抽象。比如:一个登录界面。
软件需求
也可以说成是功能需求,是开发人员必须实现的软件功能,软件需求是测试人员进行测试的基本依据。
软件的生命周期
阶段 | 具体内容 | 产出 |
---|---|---|
需求分析 | 产品经理通过需求分析将用户需求转换为软件需求 | 软件需求 |
计划 | 计划安排,多长时间完成该需求,什么时间实现什么功能 | 项目计划 |
设计 | 将需求细化成一个个具体的任务 | 个人任务 |
编码 | 开发人员进行代码的编写 | 代码文件 |
测试 | 测试人员进行软件测试 | 测试用例,测试设计与计划,测试报告 |
运行维护 | 上线后对产品的线上维护 | 维护文档 |
修复性维护:对未发现的问题进行修复
完善性维护:对功能进行完善
预防性维护:预防措施
常见的开发模型
随着软件工程学科的发展,软件工作范围扩展到整个软件生命周期,包括需求分析、设计、实现、测试、安装部署、运行维护等,还包括很多技术性管理工作,在这些方面逐步建立起标准或规范。
瀑布模型
优点
- 具有较强的阶段性
- 线性结构,是其他模型的基础框架
缺点
- 测试后置,容易导致项目大面积反工。
- 必须预留足够的时间,不然容易导致测试不充分,产品缺陷直接暴露给用户。
- 产品很迟才能被看到,项目周期太长,可能导致产品过时,发布的时候不再有竞争力。
适用场景:需求固定的小项目
螺旋模型
一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模型。它不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。螺旋模型是渐进式开发模型的代表之一。
优点
- 有严格的全过程风险管理
- 能保障每个开发环节的质量
- 开发中有机会去决定项目是否有继续开发的价值
缺点
- 项目周期长,可能会和当前的技术水平的差距较大,无法满足当前用户需求而被淘汰。
- 所需的人力、资金、时间多,项目成本高
- 对风险评估人员的能力要求很高
适用场景:规模庞大,复杂度高,风险大的项目
增量模型
优点
- 能及时得到用户反馈,使得开发过程循环且可预测,显著降低项目风险。
缺点
- 每一次迭代都可能有需求的更改,故测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。
适用场景:需求不明确的大型项目
迭代模型
与增量模型类似,但迭代模型是做出框架再反复求精的概念,而增量模型是一个个功能逐步添加的概念。都适用于需求不明确的大型项目。
敏捷模型
特点:轻文档,轻流程,重目标,重产出
其强调团队高效率的沟通,不将文档作为工作验收的标准,能主动了解当下客户的需求,并主动迎接变化。
Scrum模型
Scrum模型是敏捷模型中的一种,又称迭代式增量软件开发模型。
三个角色
- 产品经理:收集需求,产出软件需求文档
- 项目经理:开会分工,协调项目
- 研发团队:前后端、测试、交互、设计
五个会议
- 发布计划会议
- 迭代计划会议
- 每日例会
- 迭代演示会议
- 回顾会议
测试模型
V模型
V模型是瀑布模型的变种,目的是改进软件开发的效率和效果。
优点:明确标注了测试过程中存在的不同类型的测试,清楚描述了测试阶段和开发过程各阶段的对应关系,有效提升测试的质量和效率,指出单元和集成测试、系统测试、验收测试应检测的内容。
缺点:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就介入测试,缺点同瀑布模型。
W模型
W模型又叫双V模型,由两个V字型模型组成,分别代表测试与开发过程,测试与开发是同步进行的。
优点
- 有利于尽早地全面地发现问题,如需求分析完成后,测试人员就应参与到对需求的验证和确认活动中,以尽早找出缺陷所在,同时对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
缺点
- 需求、设计、编码等活动被视为串行的。
- 测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。
- 重流程,无法支持敏捷开发模式,对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临的困惑。