本篇文章主要包含一下内容
一、软件的生命周期
二、开发模型
三、测试模型
四、软件测试的工作流程
一、软件的生命周期
1.1 软件生命周期的定义
软件从开始研制到最终废弃不用的一系列过程,简单来说就是软件从开始到消亡的过程
二、开发模型
2.1 瀑布模型
1.瀑布模型的优缺点
优点:严格规定了每个阶段的文档,当一个阶段完成后,只需要关注后续的阶段,每个阶段的完成,都会有阶段性的会议评审和检查,保证项目的质量
缺点:严重依赖文档,脱离用户需求,用户需要较长时间的等待,才能获得可供使用的系统,不适合需求模糊或者用户需求经常变动的项目,回溯成本高
2.2 增量模型
1.定义:将每个待开发的模型模块化,每个模块的开发按照瀑布模型
2. 优缺点
优点:
1)将软件系统模块化,能够分批次交付,用户能够快速了解项目
2)以模块化为单位,当某个模块开发周期间出现风险,不影响其他模块的进行
3)开发顺序灵活,能够自由的调整开发顺序
缺点:
1)并行开发的组件可能遇到不集成风险
2)后续模块可能在前面模块的基础上进行,需要定义良好的接口
2.3 快速原型模型
1.定义:可以看做是增量模型的一种形式,在开发真实系统之前,快速建立一个可运行的软件原型,以便理解和澄清,在该原型的基础上,逐步完成整个系统的开发
2. 优缺点
优点:
1)克服瀑布模型的缺点,减少由于需求不明确而带来的开发风险
2)适合预先不能确切定义软件需求的系统开发
缺点:
1)快速建立起来的系统结构加上需求的不断更改,可能导致产品质量不高
2)使用前提是有一个可展示型的原型,一定程度上限制了开发人员的创新
2.4 螺旋模型
- 定义:它是一种演化开发过程的模块,可以看做是每个阶段都增加了风险分析的原型模型,比较适合大型价格高昂的系统软件
- 优缺点
优点:
1)设计上灵活性高,可在项目的各个阶段进行变更
2)以小的分段来构建大型项目,容易计算成本
3)客户参与了每个阶段的开发,项目不会偏离客户需求
4)随着项目的推进,客户始终了解项目的最新消息
5)各个阶段增加了风险分析,减少损失
缺点
1)建设周期长
2)无法随时更新当前主流的技术框架
2.5 迭代模型
- 定义:迭代开发是一次完整经过所有工作流程的过程,包括需求分析,设计,编码,测试和实施,比较类似于小型的瀑布模型项目,每个迭代都会产生一个可发布的产品,这个产品是最终产品的一个子集。
- 优点
1)降低了在一个增量上的开支风险
2)降低了产品无法按照既定制度进入市场的风险
3)加快了开发的进度
4)比较适合用户需求变化的项目 - 与增量模型的区别
增量模型强调模块化,逐块建造,迭代模型强调精细化,是反复求精的过程
2.6 敏捷模型
1.定义: 一种轻量、高效、低风险,更强调团队协作和沟通的开发方式,适用于中小型团队开发,客户需求模糊多变的项目
2.特点
1)强调人与人之间的沟通
2)轻文档,弱化文档
3)客户全称参与
4)需求随时可以变化
三、测试模型
3.1 V模型(开发和测试过程各个阶段的对应关系)
- 优点
1)包含了从底层到顶层的测试,清楚的标识了开发和测试的各个阶段
2)自上而下逐步求精,每个阶段分工明确,能更好的把控项目的整体 - 缺点
1)测试阶段放在开发后面,忽视了测试对需求和设计的验证
2)需求是否满足的情况一直到项目后期阶段才会被验证
3)没有体现出“测试应该尽在和不间断测试”的原则
3.2 W模型(测试伴随整个项目开发的周期)
- 优点
1)测试与软件开发同步进行,体现出测试应该尽早介入原则
2)测试对象不仅包含程序,也包括了需求和设计,降低软件开发成本 - 缺点
1)如果没有文档,无法执行w模型
2)对项目组成成员技术要求更高
四、测试的工作流程
4.1 具体描述
- 需求分析
1)阅读需求文档、产品文档、产品详细设计说明书
2)分析需求点
3)参与需求评审
4)快速熟悉项目 - 制定测试计划和测试方案
1)测试计划:测试整个项目的整体规划,包括测试范围、进度安排、人力物力安排、整体的测试策略、风险评估、风险规避等
2)测试方案:包括被测试的目标、选用的测试工具、测试方法、测试重点等 - 测试用例设计
- 测试用例执行
- 评估阶段
- 形成测试报告