三个任务
1.需求的概念
2.开发模型
3.测试模型
1.需求的概念
多数软件公司会有两部分需求,一个是用户需求,,一个软件需求
用户需求
用户需求简单来说就是甲方的需求,如果没有甲方需求,就是终端用户必须要完成的任务.
软件需求:
简单来说就是程序员要实现的功能,测试人员主要依据软件需求来进行测试.
2.开发模型
在说开发模型之前,先说一下软件的生命周期.如下
需求分析-->计划-->设计-->编码-->测试-->运行维护
需求分析:分析用户需求是否合理,分别从市场需求,技术方面进行分析,该阶段会输出需求文档
计划:对成立的需求执行需求执行计划,多长事件内完成该需求,每段事件具体完成那些功能.该阶段会输出计划等文档
设计:将需求细化成一个个任务,团队成员各司其职领取任务,并进行技术设计,该阶段会输出技术等文档.
编码:这个阶段就很简单,就是程序员编写代码,这个阶段会输出代码文件
测试:测试人员要介入到软件的测试中来,参考测试用例,对软件进行测试.这个阶段会输出测试用例,测试设计,测试报告等.
运行维护:项目测试结束后,项目进行上线,并对产品进行线上的维护.线上的维护主要分为三个方面,分别为修复性维护,完善性维护和预防性维护.
瀑布模型
瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架.瀑布模型的每一个阶段都只会执行一次,因此是线性顺序进行的软件开发模式.
瀑布模型最大的缺陷在于,可运行的产品很迟才能被看到.这个会给项目带来很大的风险,尤其是集成的风险.因为如果在需求引入的一个缺陷要到测试阶段甚至更后的阶段才发现,通常会导致前面阶段的工作大面积返工.
优点:强调开发的阶段性;线性解构,每个阶段只执行一次,是其他模型的基础框架.
这个模型一般适用需求固定的小项目.
螺旋模型
一般在软件开发开发初期需求不是很明确的时候,采用渐进式的开发模式.螺旋模式是渐进式开发模式的代表之一,这对那些规模庞大,复杂程度高,风险大的项目尤其适合.这种迭代开发的模式给软件测试带来了新的需求,它不允许有一段独立的测试时间和阶段,测试必须跟随开发迭代而迭代.因此回归测试的重要性不言而喻了.
螺旋模型就是在瀑布模型的基础上加了风险分析和原型.具体过程如下:
原型--->风险分析--->需求分析--->风险分析--->原型1--->计划--->风险分析--->原型2--->设计--->
风险分析--->可运行的原型--->编码--->测试
特点:强调严格的全过程风险管理,强调各个开发阶段的质量,增加风险分析和原型.
缺点:在螺旋模型中需要额外招聘专业的风险分析人才,各阶段是否有遗漏与风险管理人员的水平直接相关.
这里说一下:原型就是指每个迭代阶段开发出的阶段产品.
迭代模型,增量模型
这两个模型不是常用,大致说一下.
所谓的增量模型其实就是在设计完成之后对每个功能 进行分离,有点像小瀑布的感觉.
下面这张图可以分辨出增量模型和迭代模型的区别:
敏捷模型:
敏捷模型主要是帮助项目快速适应更变需求,促进项目的快速完成,敏捷模型采用增量,迭代开发
Scrum是敏捷模型的一种,又称为迭代式增量软件开发.
过程如下:
用户需求---->发布计划协议--->迭代计划协议--->每日会议(一个周期)--->演示会议--->新的需求--->用户需求.
发现从用户需求,最终又到了用户需求,这能体现出迭代,增量则体现在每日会议.每日会议的主要内容就是每个人汇报昨天做了什么,今天的任务是什么,遇到的问题.
演示会议:产品中还有那些问题,还需要优化的地方,还可以增加的功能.
发布计划协议:评估需求合理性,确定本次迭代做那些需求.
迭代计划协议:进行任务拆解,明确每个人要负责的任务和完成任务需要的时间.
3.测试模型
测试模型我主要介绍两个模型,一个是V模型,一个是W模型,而W模型其实也是双V模型.
我们先看V模型
乍一看,这有点像,瀑布模型拐了个弯.这个模型中明确标注了测试过程中存在的不同类型的测试.
其中单元测试参考的是详细设计,集成测试参考的是概要设计,系统测试则是需求分析与系统设置,验收测试参考用户需求.
这个模型的缺点和瀑布模型一样,就是仅仅把测试作为在编码之后的一个阶段,没有在需求阶段就介入测试.
W模型:
w模型是在v模型的基础上改进而来的.
特点:测试的对象不仅仅是程序,需求,设计等同样要测试,测试与开发是同步进行的.
优点:有利于今早全面的发现问题,同时对需求的测试也有利于及时了解项目难度和测试风险,及早制定对应措施,相助减少测试时间,加快项目进度.
缺点:我们观看上图,发现都是串行的,虽然每个阶段都有进行测试一旦哪个阶段不符合需求,需求更变或者技术实现不了,就会回到最初的位置,也就是不能应对复杂的项目.也就是说缺少迭代.