一.软件工程概念
什么是软件工程
软件开发和测试之间的关系
工作目标一致、工作方法不同
→开发的工作方法 建设性
→测试的工作方法 破坏性
软件之生命周期
软件立项→可行性研究→需求分析→概要设计→详细设计→编码实现→单元测试→集成测试→系统测试→验收测试→运行维护
立项—需求分析—设计、编码、测试—发布—运行维护—淘汰
二.软件开发过程:
需求分析→系统设计→编码&测试→用户验收→上线后维护
瀑布模型
制定计划——需求分析——软件设计——程序编写——软件测试——集成维护
缺点:测试的介入时间太晚。
快速原型模型
■迅速建造一个可以运行的软件原型, 以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品
■快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;
■用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护;
■这种模型适合预先不能确切定义需求的软件系统的开发
增量模型
■增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件
■相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要-次性地把整个软件产品提交给用户,而是可以分批次进行提交
◆优点:
➢将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展
➢以组件为单位进行开发降低了软件开发的风险。-个开发周期内的错误不会影响到整个软件系统
➢开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整
◆限制:
➢软件产品可以分批次地进行交付
➢待开发的软件系统能够被模块化
➢要求项目管理人员把握全 局的水平较高
迭代模型
■迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素
■在某种程度上,开发迭代是一-次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程
◆与传统的瀑布模型相比较,迭代过程具有以下优点:
➢降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费
➢降低了产品无法按照既定进度进 入市场的风险。通过在开发早期就确定风险 ,可以尽早来解决而不至于在开发后期匆匆忙忙
➢加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
➢由于用户的需求并不能在一开始就作出完全的界定 ,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些
三.测试过程概述
■ 如同软件开发过程一样,软件测试也有自己的过程模型。软件测试过程是一种抽象的模型,用于定义软件测试的流程和方法
■ 测试过程的质量将直接影响测试结果的准确性和有效性。软件测试过程和软件开发过程一样,都遵循软件工程原理,遵循管理学原理
■ 一个标准的软件测试过程中,应当包含但不仅限包含以下测试活动
■ 需求分析、测试计划、测试设计、测试执行、测试总结...
V模型
揭示了开发过程与测试过程中各阶段的对应关系,通过开发和测试同时进行的方式来缩短开发周期,提高开发效率。
缺点与不足:
→ v模型仅仅把测试过程作为在需求分析,系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证
→ 没有体现出“尽早地和不断地进行软件测试”的原则
W模型
→ 由两个V字模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系
→ 测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求,设计等开发输出的文档同样要测试
优点:
→ 测试的的活动于软件开发同步进行
→ 测试的对象不仅仅是程序,还包括需求和设计
→ 尽早发现软件缺陷可降低软件开发的成本
局限性:
在W模型中,需求,设计,编码等活动背视为串行的,同时测试和开发活动也保持着一种线性的前后关系,在上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。
H模型
X模型
四.测试过程管理理念