缺陷管理是贯穿于整个软件开发生命周期中不可缺少的一个环节。
缺陷包括产品错误,需求和设计变更,新特性或扩展功能(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
%
u%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.