敏捷开发与 Jira 入门

发表于:2017-11-24 16:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:某非某    来源:51Testing软件测试网采编

#
JIRA
  最近一段时间在寻找一个项目管理的工具,最后发现常用于 Bug 跟踪的 Jira 貌似就是是一个不错的选择,于是深入地了解了一下。
  Jira 能够记录
  ●要做什么,可能包括用户需求、Bug、审批任务等
  ●根据事件处理的具体流程,当前由谁处理、之后由谁处理等
  ●开发安排,包括开发时间、版本计划等等
  因此被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
  但这也真的是一个非常重的工具,官方文档非常庞大。里边的一些功能的作用不理解,模块之间的关联也有些混乱,每个页面承载的信息非常多。
  本文的主要目的还是对 Jira 的产品内在逻辑、设计目的和典型使用场景进行介绍。
  核心基础
  Project
  如字面含义,Project 就是项目,对应真实的“项目”。
  Issues
  官方翻译为“问题”,接近于具体需要做的事情。某一个 Issue 属于某一个 Project。
  Issue 有好几种类型,例如Epic,Story,Task、Bug等
  Epic, Story & Task
  Epic:一个庞大的功能,可能包含多个功能(Story、Task),需要多个迭代才能完成;例如登录/注册页面,包含了登录、注册、找回密码等多个功能。有点类似功能模块。
  Story:用户故事,并不一定包含非常详细、具体的需求和功能,更接近于用户遇到的问题,或者没有经过抽象整理的需求。
  Task:任务,具体的、经过抽象的功能和需求。
  所以首先遇到问题时可以记录为Story,开始需要细化需求的时候,把Story转换成Task。
  但是如果一个Story就是一个简单、要解决的问题,也可以考虑直接进入开发。
  Story和Task也可以通过Epic Link的方式添加到某个Epic下
  遇到大的、需要新展开的项目,再记录为Epic
  任务下的任务
  一种方式是Epic下添加Issues in Epic;另一种方式是为任务设置子任务。
  根据我们对Epic、Story、Task的定位,我个人认为为任务添加子任务主要适用于拆分Story,Task下尽可能不要添加子任务。
  workflow
  工作流,决定了某个 Issues 的生命周期和流程。Jira 在这方面提供了高度自由度,当然也就意味着相对复杂。
  例如软件开发中“缺陷”的生命周期中,Open、In Process、Closed、Done、Pending 等,都是 workflow 中的某个状态。
  Jira 的混乱与秩序
  Jira 把所有的 Issues 都放在了一个池子里,这个感觉是很乱的。然而 Jira 通过 其内置的 Board、filter 等工具,对所有 Issues 进行整理和筛选,从而达到某种秩序。
  这就好像硬盘存储,文件存储在硬盘上可能是零散在不同位置的,但通过操作系统的处理呈现给用户的却是完整、清晰的。
  几个抽象的功能
  Board
  面板,是一个高度抽象的项目管理工具。
  和项目、问题并没有强行的绑定关系,一个面板甚至可以用来管理多个项目。好比 Project/Board 是内容,Board 是表现形式。典型应用场景有:
  ●项目经理建立某个项目的看板,并进行项目整体进度的把控
  ●某个开发同学把自己相关项目的都关联到某个看板,查看自己的任务,对自己的工作内容进行安排
  在面板中对某个 Issue 的状态进行变更,也会同步到相应的 Project 中,也就会影响到关联了该 Project 的其它面板。
  Kanban Board VS Scrum Board
  Scrum Board 比 Kanban Board 多一点敏捷开发的概念,会在敏捷开发相关的部分进行介绍
  filter
  即字面意义--筛选器,Jira中不同状态、不同版本、不同类型,甚至从属于不同 Project 的 Issues 都混杂在一个面板中,通过filter就可以对这些数据进行筛选,选出自己需要关心的部分,而不被其它信息干扰。
  相比于 Board,filter 的功能会更加精细。Board 是聚合,filter 是筛选。
  Dashboard
  官方翻译为“面板”,我这里还是成为“快捷操作台”,以免和 Board 想冲突。
  是一个信息聚合地,支持高度自定义,通过各种小工具,让用户能够根据自己的不同角色,聚焦于不同的模块和功能。有点类似 Android 的桌面小部件或者 iOS 的 Widget。
  项目管理、流程管理中典型任务
  敏捷开发管理
  可以借助 Scrum Board 来管理敏捷开发。
  ●Backlog:类似需求池
  ●Sprint:类似迭代的概念,我们可以把需求放到某个迭代里进行安排
  ●Active Sprint:当前迭代的泳道看板,结合 workflow,更加清晰、聚焦于当前的任务
  ●Release:版本管理,在版本管理中进行说明
  版本管理
  可以借助 Board 中的 Releases 功能实现,可以设置不同的版本和信息,还可以把相关的 Issues 和版本进行关联。
  对某一个 Issue 进行管理
  ●分配经办人:设置谁来处理该任务,同时可以对 Issue 进行关注
  ●设置状态:修改 Issue 在工作流中的状态
  ●设置优先级:如题
  ●设置关联的版本:如题
  ●具体信息:包括描述、附件,同时还可以对 Issue 进行评论
  ●链接:和其它 Issues 进行关联,例如某个 Issue 是另一个 Issue 的前置条件等
  Issues 的分类和整理
  除了前文提过的,通过 Board 聚合、通过 filter 筛选,也可以通过附加信息的方式对 Issues 进行整理。
  例如添加 Label、将 Issue 添加到某个 Component 下。
  另外 Issue 本身的类别 Story、Epic, Sub-task 也是分类整理的一种方式。
  Epic,Label & Component
  Label 则是比较灵活的工具,可以根据自己的需要使用,没有太多的约束,但是 Epic 和 Component 在网上的讨论非常多。
  Epic 本质上是一堆 Story 的合集,是最终会被标记为“Done”的 Issue。因此如果有一个非常大的功能,可能更适合用 Epic。
  而 Component 则不会被标记为 “Done”, 同时会有默认负责人等属性,因此适合作为相对稳定、静态的部件存在,所以我认为一个Component适合对应着一帮人。而具体怎么对应,取决于项目的划分。以下两种实践我认为都是可行的:
  ●UI、服务端、客户端……
  ●数据收集、数据存储、数据检索、数据分析、数据接口……
  那么如果希望通过功能模块的方式对 Issues 进行管理应该怎么办呢?如果功能模块对应着不同的、专门负责的团队,就用 Component;否则可以考虑使用 Epic。
  尾声
  自己这几天研究来看,Jira 确实是一个非常有效的工具,这篇文章可能也还有一些重要但简单的概念没有介绍,例如经办人、到期时间等;另外自定义 filter、自定义 wolkflow 等高级功能我也还没提到,大家可以根据自己的需求,选择性地通过官方文档来了解。
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • srds_355
    2017-11-28 17:36:03

    非常有用的文章

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号