俺的回收站

架构分析 解释编译原理
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

整合CVSNT 和 Mantis 缺陷管理系统

Posted on 2007-06-02 22:39  Riceball LEE  阅读(1967)  评论(1编辑  收藏  举报

缺陷管理是贯穿于整个软件开发生命周期中不可缺少的一个环节。

缺陷包括产品错误,需求和设计变更,新特性或扩展功能(New Feature, Enhancement)等,它存在于整个软件开发生命周期之中。使用缺陷管理系统便于项目组和管理人员获取正确、足够的信息,简化了地域分散的组织的信息共享流程,它还可以实现工作流程的自动化,最大限度减少重复工作。

错误报告应该包括:

  • 失败描述:摘要、重建步骤、隔离信息;
  • 识别信息:顺序的ID号、报告作者、报告日期。
  • 严重性等级,以评估在测试条件下,错误在系统中的绝对影响;
  • 优先级,评估顾客实际使用中发生事件的可能性,或对顾客的后续影响;
  • 环境:系统软、硬件配置,测试版本号;
  • 附件,错误信息或屏幕截图。

提交之后,Bug为"新建"状态,由测试人员确认后,状态为“已确认”,然后再由变更控制委员会(视项目规模组织,可以是不同角色的几个人组成或一个人担当)评审决定:

  • 确认是Bug,分配给相关开发人员修复,状态为"已分派";
  • 不是Bug或其他原因,关闭,状态为"已关闭",然后在解决状况中根据实际情况选择;
  • 是Bug,但延迟到下一个版本修复,状态为关闭,在解决状况中设置为暂停。

开发人员将问题修复后,其状态改为"以解决",他们应发布到下一个测试版本(Test Build)中,测试人员测试所有"以解决"的问题,没有问题应关闭,未修复则要重新打开。

对其他变更(如需求改变或新增),以上流程同样适用,但可能需要多次分配,如需求变更,业务分析员要更新需求文档,系统分析员要更新设计文档,然后程序员改代码。

Mantis 是一个PHP开源的缺陷追踪管理系统,配置非常简单。由于我们的研发团队分散于各地,需求、设计、开发、测试和用户反馈来自不同地区,使用电子邮件和文档来跟踪缺陷时,信息共享和错误状态更新特别费时费力,文档工作量也越来越大,于是我们决定启用Web形式的缺陷追踪管理系统,共用数据实现工作流自动化。初步选择决定使用Mantis,在经过测试小组一个多月对Mantis 系统的测试试用后,反馈结果良好,我们马上决定将系统用于跨地域开发的项目,在半年的时间里,系统运行稳定,性能也不错,流程得到了极大的简化,交互性增强,提高了工作效率。

Mantis基本特性:

  • 操作简单,上手快
  • 同时支持多个项目、68种语言,包括中文;
  • 支持多种大型数据库(MySQL, MSSQL, PostgreSQL, Oracle)
  • 权限设置灵活,不同角色有不同权限,每一个项目都可以设置不同权限,每个项目可设为公开或私有状态,每个缺陷可设为公开或私有状态,每个注释可设为公开或私有状态,每个缺陷可以在不同项目间移动;
  • 主页可发布项目相关新闻,方便信息传播;
  • 方便的缺陷关联功能,除重复缺陷外,每个缺陷都可以链接到其他相关缺陷;
  • 支持上传附件
  • 注册支持验证码和邮件确认
  • 支持自复位密码
  • 缺陷时间追踪
  • 权限置顶功能
  • 动作认证方式(默认,LDAP, HTTP, Active Directory)
  • 缺陷报告可打印或输出为CSV格式,WORD格式,Excel 格式, HTML格式;
  • 可自定义用户缺陷字段;
  • 系统自动跟踪记录缺陷历史,可输入注释;
  • 生成报告和图表:支持绘制各种缺陷趋势图和柱状图(可选);
  • RSS 反馈
  • 可定制的Email通知功能,每个用户可根据自身的工作特点只订阅相关缺陷状态邮件;
  • 支持整合Wiki(可选)
  • 聊天集成(可选)
  • 版本控制集成:支持整合CVS和SVN
  • 缺陷工作流程可以完全定制,不过定制工作流略显繁琐。

小结:

集成CVSNT:  必须和CVSNT在一个服务器上!

在提交文件到CVS仓库的时候自动将CVS注释更新到缺陷跟踪系统中。

增加一个用户如(cvs),该用户要有提交注释的权力!

然后打开 config_defaults_inc.php,修改如下的配置:

# --- Source Control Integration ------

# For open source projects it is expected that the notes be public, however,
# for non-open source it will probably be VS_PRIVATE.
$g_source_control_notes_view_status = VS_PRIVATE;

# Account to be used by the source control script. The account must be enabled
# and must have the appropriate access level to add notes to all issues even
# private ones (DEVELOPER access recommended).
$g_source_control_account = 'cvs';

# If set to a status, then after a checkin with a log message that matches the regular expression in
# $g_source_control_fixed_regexp, the issue status is set to the specified status. If set to OFF, the
# issue status is not changed.
$g_source_control_set_status_to = RESOLVED;

# Whenever an issue status is set to $g_source_control_set_status_to, the issue resolution is set to
# the value specified for this configuration.
$g_source_control_set_resolution_to = FIXED;

# Regular expression used to detect issue ids within checkin comments.
# see preg_match_all() documentation at
# http://www.php.net/manual/en/function.preg-match-all.php
$g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i"

# Regular expression used to detect the fact that an issue is fixed and extracts
# its issue id. If there is a match to this regular expression, then the issue
# will be marked as resolved and the resolution will be set to fixed.
$g_source_control_fixed_regexp = "/\bissue [#]{0,1}(\d+)\[Fixed\]/i"

抓取(checkout)仓库的CVSROOT,修改 loginfo 文件为:

  • ALL C:/Dev/php/php.exe C:/Dev/Mantis/core/checkin.php

然后提交 loginfo 文件!

然后只要你提交的文件注释中含有 "issue #122" or "issue 122" 的字眼,就会被自动加入到

对应的 122 号问题的注释上!而注释中含有"issue #122[Fixed]"则还会自动改变问题的状态为fixed.

这样一般cvs就ok了,不过在cvsnt中支持bug id的功能,可以通过参数的形式传入 checkin.php

  • ALL C:/Dev/php/php.exe C:/Dev/Mantis/core/checkin.php  %%s %b %m  
  • %u 是修订着(用户名);
  • %s 是修改的文件或模块名称;
  • %b 是bug id;
  • %m 是log信息。

不过这就需要对 checkin.php进行改造了!

要想接收参数,首先要将php.ini中的register_argc_argv参数打开。

  • register_argc_argv = On

 然后注释掉checkin.php文件中所有stdin 的语句,不需要从标准输入终端读入了,而是从参数中读入。 然后加上:

$t_comment .= "\nModified module and files: " . $_SERVER['argv'][2] .
"\nBy: " $_SERVER['argv'][1];

而bug id 则无需进行RegExpress表达式匹配,直接从参数三中读取 $_SERVER['argv'][3]即可。

另外在中文Windows下TortoiseCVS等提交的注释如果是中文,那么还必须要转码为utf-8!

否则提交的在Mantis系统的上将是乱码:

  • $t_comment = mb_convert_encoding($t_comment, "utf-8", "gbk");

 

中文翻译中的完成度不妥,【改】完成度 -> 解决状况

 

PHP 4.X 不支持MySQL新的Password通讯认证方式!

如果需要增加MySQL的安全性,你必须将用户密码设置为旧密码格式:

  •  mysqladmin -u username old-password "CvnEDj3Skd4"

否则PHP将会报告错误:

  • #1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

 PHP 5.X is no problem.