基于禅道 zentaopms 的敏捷 Scurm 实践
禅道项目管理软件是『王春生』大神的作品,国产开源项目管理软件的佼佼者。笔者是一枚曾长期在美资公司工作的码农,使用更多的是 JIRA 这样的工具,但是从 2015 年开始关注禅道,并且在最近的两三年的项目中持续使用,确实是一个不错的软件工具,基于 Agile Scrum 方法论进行的实践,当然禅道官网也有更多的关于禅道的使用方法视频和帮助文档,本篇就主要从项目实践的角度来探讨禅道的使用。
[TOC]
0. 目录
- 禅道的部署
- 完整项目流程
- 敏捷实践
- 禅道的升级
1. 禅道的部署
不得不说,更多的禅道的使用者是软件测试人员,理由其实很“历史”,开发人员有自己的管理系统,并且该系统不支持测试管理。是的,中国的不长的软件开发历史上,确实是以“开发”为重的,等到越来越多的公司和团队意识到软件测试的重要性的时候,其实已经不用往“开发的管理系统”上再开发添加测试功能了,因为有了专门管理测试的软件,例如:禅道。当然也有 Bugfree,QC/ALM,JIRA,Mantis 等,国产管理系统中,禅道算是比较完整的方案,当然还有一些其他的方案,名气最大的应该是腾讯公司的 TAPD,以及 Testin 的 BugOut,还有今天刚刚看到的飞蛾(http://feie.work),这里我们还是专门聊禅道。
还是要说一句的是,希望技术团队的开发人员也尽早能够用上禅道,如果测试人员在用禅道的话。
首先,要用禅道,我们要做的事情是需要安装部署。禅道是一个 PHP 开发的 Web 系统,需要一个支持 PHP 的 Web 服务器,建议用 Apache 或者 Nginx,迫不得已用 IIS 也可以。
1.1 选择 xampp 进行源码安装
安装步骤如下:
- 安装 xampp
- 官网下载禅道源码包,最新的源码包为 zentaopms.10.4.stable.zip(http://dl.cnezsoft.com/zentao/10.4/ZenTaoPMS.10.4.stable.zip)
- 复制源码包到 xampp/htdocs 目录中,并解压出来,形成 xampp/htdocs/zentaopms 文件目录
- 启动 apache 和 MySQL
- 访问 http://localhost/zentaopms/www 按照提示,完成安装。
- 也可以不使用 xampp,例如在 Linux 中安装,或者用 WampServer、宝塔、PhpStudy、UPUPW 等都可以完成禅道的部署。当然与可以部署在 阿里云服务器、腾讯云服务器、天翼云服务器等。具体的安装步骤截图等就不再这里赘述了。
- 安装好以后,登录系统,进入主页。
1.2 选择禅道一键安装包直接安装
禅道官网也提供了一键安装包,实际上是该安装包集成了基于 PHP 的 Web 服务器环境,需要注意的是,一键安装后会自动安装一个 apache 和 MySQL,千万注意与原本存在的 apache 和 MySQL 冲突。
1.3 常见故障处理
- 浏览器白屏
MySQL 数据库没有启动,启动失败
MySQL 数据库端口不匹配(3306)
MySQL 用户密码不匹配 - 浏览器报 404
- object not found 活该你单身
- 检查端口和路径
- 重置密码
- 点击忘记密码
- 按照指引,在
zentaopms/www
创建一个 xxxx.txt 的文件 - 点击指引的刷新按钮
- 转到重置用户密码的页面,输入用户名,如果用户名忘记了,需要打开数据库管理工具,选择
zentao
数据库的zt_user
表,查看用户名 - 重置之后,在浏览器重新输入
http://[host][:port]/zentaopms/www
2. 完整项目流程
禅道其中一个很重要的特点就是订制能力比较强,可以订制流程,也可以订制工作模块。这里主要讨论的是完整的研发管理流程。
2.1 敏捷 Scrum 基础背景
Scrum 的使用有一些需要了解的基础知识背景,主要是角色和构件的介绍。
接下来主要介绍3个角色
-
PO,Product Owner,产品负责人
产品负责人是整个产品的负责人,主要做的事情是负责产品的进度、计划、需求和发布。对应禅道的“产品”功能。
-
SM,Scrum Master,敏捷教练
这个是敏捷团队特有的角色,并不是项目经理,而是独立的个体,任务和职责是保证团队足够“敏捷”。这一点是禅道与Scrum 不一致的地方。禅道这里对应的是“迭代”或者“项目”。
-
TM,Team Member,团队成员
敏捷团队中,包括项目经理,开发与测试。对应禅道的是:项目经理负责“迭代”里面的任务,任务是分配给开发和测试。同时禅道又单独区分了测试。提出了测试模块。
2.2 系统使用流程
敏捷的主要流程如下:
-
用管理员登录系统,找到【组织】页面,维护公司信息,创建部门,再创建用户。用户至少需要包括:
- 产品经理
- 项目经理
- 研发主管
- 测试主管
- 研发人员(若干)
- 测试人员(若干)
角色 主要工作 备注说明 管理员 维护公司信息和模块,管理用户和权限 产品经理 Product Owner
给产品提需求 项目经理 Scrum Master
给当前迭代 SPRINT
挑选需求,并分解需求为任务开发人员 Developer
完成项目经理分解的任务 测试人员 Tester
对当前挑选的需求建立用例,执行用例并提交缺陷 -
禅道由三大模块组成:产品、项目和测试。
-
产品经理登录系统,创建一个新的产品:
产品的负责人、测试的负责人(
测试主管
)、发布的负责人(项目经理
或者研发主管
)产品的类型:正常、多分支(
基础版
、旗舰版
、开源版
……)、多平台(Windows PC
、Android
、iOS(iPhone,iPad)
、BlackBerry
、Mac
、Windows Phone
、Symbian
……)维护产品的平台和模块(注意功能整合和重复性)
创建产品的计划,按照产品的发布进度进行划分
-
产品经理提需求(单独和批量),需求的计划需要选择;然后需求的描述“作为XXX,我希望可以XXX,实现XXX”-- 用户故事(User Story),需求要写的笼统一些。验收标准需要量化或者清晰。验收标准是测试标准。
注意的点:
- 产品模块需要产品经理登录
- 产品有多分支和多平台之分。在写模块的时候,需要注意区分
- 产品的模块,是拆分产品的功能的重要依据
- 产品的需求,就是用户故事(User Story),也就是一句话需求
As a <type of user>, I want <some goal> so that <some reason>.
作为一名<*某种类型的用户*>,我希望<*达成某些目的*>,这样可以<*开发的价值*>。
- 产品的需求中,对验收标准的描述,需要确定和详细
- 添加需求的时候,注意需求是否需要评审
- 添加需求的时候,注意产品的预估时间
- 需求的变更 vs 需求的编辑
- 需求变更可以改变需求的
描述
和验收标准
- 需求编辑只能改变需求的
基本信息
和备注
- 需求变更可以改变需求的
-
项目经理登录系统,创建一个项目,该项目务必关联刚刚创建的产品,如果这个产品是多分支的或者多平台的,需要关联具体的平台或者分支。
- 创建项目,关联产品
- 创建团队:需要选择
研发主管(可选)
、测试主管(可选)
、研发人员
、测试人员
,并需要统计各位的可用人时
。 - 关联需求,选中之前产品经理创建的需求。
-
项目经理开
计划会
,准备Kanban(看板),(未开始的 | 进行中的 | 已完成的 ),全部人参加,包括产品经理- 计划会需要制定的内容
- 迭代周期(sprint),一般是一周或者两周,定下来以后,所有的迭代都用这个周期
- 安排
每日立会
的时间,每日开会时间都固定:- “昨天做了什么”
- “今天要做什么”
- “有无问题”
- 挑选本次迭代需要完成的需求,标准是必要的,而且可发布,并且可以构成一个可用的版本。
- 产品经理讲解需求
- 项目经理拆分需求为任务(分解任务)、需要开发团队的支持
- 计划会需要制定的内容
测试主管登录系统,分解用例。把需求分解成用例。进行用例设计
指定的开发工程师登录系统,对指派过的任务进行开始、完成、关闭的操作
指定的测试工程师登录系统,对用例进行编写,注意前置条件、步骤(每一步都有期望结果)、优先级
-
项目经理登录系统,创建(构建build)版本,注意SVN等信息
- 包括版本的具体信息、文件下载信息、源代码位置等
- 关联需求,关联已经完成开发,并在本版本中包含的需求
- 到测试页面 | 版本,提交测试(提测 | 转测)
测试主管登录系统,到测试 | 版本 页面。
- 关联用例
- 指派测试人员
- 开始测试
测试人员登录,到指派给我的用例,进行执行。执行若出现问题,就转bug.
测试主管登录系统,到测试 | 版本 | 概况 页面,关闭测试
开发人员登录系统,修改bug
项目经理登录系统,
重新
创建(构建build)版本,注意SVN等信息
- 包括版本的具体信息、文件下载信息、源代码位置等
- 关联需求,关联已经完成开发,并在本版本中包含的需求
- 关联上一个版本的已经修复的bug
- 到测试页面 | 版本,提交测试(提测 | 转测),填写版本更新的清单
- 测试主管登录系统,到测试 | 版本 页面。
- 关联用例
- 指派测试人员
- 开始测试
测试人员登录系统,进行测试
测试主管登录系统,到测试 | 版本 | 概况 页面,关闭测试
产品经理登录系统,产品 | 发布 | 创建发布,注意关联需求。本次版本完成。
整体项目流程图
3. 敏捷实践
禅道与敏捷的对应,主要体现在“产品”和“迭代”这两块。
- 产品模块
- 需求列表:对应 Product Backlog
- 需求(用户故事):对应 User Story
- 发布计划:对应 Product Sprint 优先级
- 迭代(项目)模块
- 需求列表:对应 Sprint Backlog
- 需求细分任务:
- 开发
- 测试
- UI
- ……
- 需求分解用例:
- 测试
- 版本:Sprint 发布
4. 禅道的升级
升级安装
- 备份旧的版本,
cp -r zentaopms zentaopms_bak
- 覆盖旧的版本
- 在
zentaopms/www
创建ok.txt
(注意是否显示已知文件的扩展名) - 备份数据库
mysqldump -u root -p zentao > c:\zentao_20161111.bak
- 确认升级的版本
- 升级完成