敏捷开发的概念

敏捷开发是一种以人为核心,迭代,循序渐进的开发方法。

为什么说是以人为核心?传统的瀑布模型是以文档驱动的,但是在敏捷中,只写少量的文档,注重的是人与人之间面对面的交流。

什么是迭代?迭代就是把一个很长的开发周期,划分成一个个小的周期,在每个周期的结束都会有可交付的产品,这个我们就叫做迭代。

 

Scrum是敏捷的一种。(我们公司用的就是Scrum)

Scrum中三大角色:

PO(Product Owner):产品拥有者,主要负责给团队提需求,确定产品的功能,以及验收产品。

Scrum Master:负责整个团队内部的协调工作;保护团队不受外界干扰,保证团队正常运行。

Scrum Team:跨职能团队,负责实现每个迭代的需求。

 

Scrum流程:

1.PO按照优先级列出一个产品需求列表。

2.Scrum Master 与PO以及XXX开预计划会,确定哪些需求是要在接下来一个迭代进行的,哪些需求移到以后的迭代中。

3. Scrum Team开计划会。(1)会上PO给大家讲解每个Stroy(Scrum中把功能划分成很多小功能,一个小功能就叫做一个story)要完成的功能,大家针对这些story有疑问的,可以现场提问,直到没有问题。(2)接下来大家给每个story分别估点,开发估开发的点,测试估测试的点。(3)每个成员各自领取自己的任务

4.迭代开始了。每天上午开站立会,会议控制在15分钟以内,大家站在一起,依次汇报昨天完成了什么,并且计划今天做什么。同时遇到不能解决的问题也可在站立会上提出。汇报完后,走到黑板前把自己所take的story移到燃尽图的相应状态中。

5.迭代演示会议:每个迭代结束的时候,成员需要将这个迭代内完成的story在其他成员面前展示。

6.最后是回顾会,以轮流发言的方式进行,每个人依次总结本次迭代中有哪些优缺点。会议主持人(我们一般是PO)负责记录这些优缺点。如果有需要改进的,具体实施到下个迭代中去解决改进。

 

敏捷测试与传统测试的不同:

1.流程不同:

传统测试中阶段性很明显,需求分析,设计评审,单元测试到集成测试,系统测试等,测试计划,测试设计,测试执行,测试报告等。

而在敏捷测试中,更加强调产品的持续测试,质量的持续反馈,流程更简化,阶段性更模糊。

 

2.传统测试会比较注重测试计划的制定,但是在敏捷中强调测试的速度和适应性,侧重计划的不断调整以适应需求的快速变化。

 

3.传统测试中,开发和测试角色分的很清楚。

但是在敏捷中产品质量的把关不只是测试的事,更像是整个项目组的事。比如我们测试人员写完测试用例,用例是需要三方(开发,测试,产品)共同评审确认的,这样更能找出测试人员设计出来的用例的缺失和不足,以便找出产品更多的缺陷。

 

4.传统测试鼓励自动化测试,但是自动化测试的成功与否对测试没有致命影响。

但是在敏捷测试中,由于发布版本太快,周期太短,必须要有自动化协助测试人员进行回归测试,否则敏捷无法进行。也就是说敏捷测试的基础就是自动化测试。

 

5.传统测试强调发现的缺陷都要记录下来,方便以后跟踪缺陷,分析缺陷(分析缺陷产生的根本原因,分析这些缺陷中哪些优先级较高需在这个版本上线之前修复,哪些可以遗留到下一版本解决),生成缺陷报告,并且很注重缺陷的处理和跟踪流程。

但在敏捷中,更加强调的是面对面的沟通和交流,并且更注重的是产品本身,更不关注缺陷本身。

 

6.敏捷中不需要写测试用例,直接是基于用例,基于对需求的理解来完成新功能的验证。即使要写测试用例,只要保证各个功能点被覆盖即可,不必过于详细。

 

7.传统测试中得等开发把产品开发完毕,才开始测试。但在敏捷中,一旦某块新代码完成,就开始测试,而不是等所有的代码都开发完毕才开始验证。(这其实就相当于我们把一个story划分的特别细)