目中使用了BugFree来进行Bug管理,但对于解决方案的那几个选项还不了解,这里列出来以供参考。
BugFree | 说明 |
Fixed | 已修复 |
By Design | 不是问题,设计需求就是这么设计的 |
Won’t Fix | 无法修改 |
Duplicate | 重复的问题. |
Not Repro | 无法重现 |
External | 表示外部原因(比如浏览器、操作系统、其他软件)造成的问题 |
Postponed | 以后版本解决 |
本文档已按照最新版本的BugFree 2进行了更新,部分内容可能不适用于老版本的BugFree。建议访问BugFree下载页面,下载并升级至最新版本的BugFree。
BugFree基于PHP和MySQL开发,是免费且开发源代码的缺陷管理系统。服务器端在Linux和Windows平台上都可以运行;客户端无需安装任何软件,通过IE,FireFox等浏览器就可以自由使用。
BugFree 2 在BugFree 1.1的基础上,集成了Test Case和Test Result的管理功能。具体使用流程是:首先创建Test Case(测试用例),运行Test Case产生Test Result(测试结果),运行结果为Failed的Case,可以直接创建Bug。Test Case标题、步骤和Test Result运行环境等信息直接复制到新建的Bug中。如下图所示。
在安装BugFree 2之前,需要首先安装Apache, PHP, Mysql支持软件包,例如XAMPP或EASYPHP等。
下面以XAMPP为例进行说明。请先访问http://www.apachefriends.org/zh_cn/xampp.html 下载并安装最新的XAMPP版本。
1. 下载BugFree 2安装包,解压后复制到XAMPP系统的htdocs子目录下。
如果是Linux系统,安装路径一般为/opt/lampp/htdocs/bugfree; Window系统的安装路径一般为C:\xampp\htdocs\bugfree。
2. 进入bugfree的安装目录,复制文件Include/Config.inc.Sample.php为新文件Include/Config.inc.php,编辑新创建的文件,修改数据库链接设置:
/* 3. Define the username and password of the BugFree database. */ $_CFG['DB']['User'] = 'root'; // 数据库登录用户名 $_CFG['DB']['Password'] = ''; // 数据库登录用户密码 $_CFG['DB']['Host'] = 'localhost'; // 数据库服务器地址 $_CFG['DB']['Database'] = 'bugfree2'; // 指定BugFree数据库名称 $_CFG['DB']['TablePrefix'] = 'bf_'; // 数据库表前缀,默认为bf_。除非有冲突,不建议修改或为空 $_CFG['DBCharset'] = 'UTF8'; // 数据库编码设置,保留默认值 |
3. 如果是Linux 系统,修改下列目录和文件的权限;如果是Windows系统,跳过这一步。
a) chmod 777 Data/TplCompile/
b) chmod 777 BugFile/
c) chmod 777 Include/Config.inc.php
4. 在浏览器访问http://<servername>/bugfree。如果设置的数据库不存在,按照提示创建数据库,再点击继续安装。
5. 点击“安装全新的 BugFree2”。
6. 安装成功后,显示首次登录的默认管理员帐号和密码,按照提示首先使用默认管理员用户名和密码登陆BugFree。
升级之前,为防止数据丢失,建议从浏览器退出BugFree,并备份相应的数据库和虚拟目录。
1. 下载BugFree 2安装包,解压后复制到原BugFree安装目录下,覆盖原有文件。
2. 在浏览器访问http://<servername>/bugfree。
3. 点击“从现有的BugFree 2 升级”,完成升级。
升级之前,为防止数据丢失,建议在浏览器退出BugFree,并备份相应的数据库和虚拟目录。
1. 下载BugFree 2安装包,解压后复制到原BugFree的安装目录下,覆盖原有文件。
2. 进入Bugfree的安装目录,复制文件Include/Config.inc.Sample.php 为新文件Include/Config.inc.php,编辑新创建的文件,并复制Include/ConfigBug.inc.php的相应设置。
3. 点击“从BugFree 1 升级”,完成BugFree 1.1 到BugFree 2的升级。
注意:如果BugFree 1.1升级到BugFree 2之后显示乱码,请修改Include/Config.inc.php的$_CFG['DBCharset']值为空,再恢复原有的BugFree1.1数据库,重新进行升级
$_CFG['DBCharset'] = '' |
访问http://<servername>/bugfree,输入用户名和密码登录成功后,显示BugFree主界面:
l 项目选择框①:可以快速切换当前项目,项目模块框②和查询结果框⑥显示相应的模块结构和记录。
l 项目模块框②:显示当前项目的模块结构。点击某一模块,查询结果框⑥会显示所选模块的所有记录。
l 个性显示框③:
a) 指派给我:显示最近10条指派给我的记录。
b) 由我创建:显示最近10条由我创建的记录。
c) 我的查询:保存查询框⑤的查询条件。
l 模式切换标签④:切换Bug, Test Case和Test Result模式。默认登陆为Bug模式。
l 查询框⑤:设置查询条件。
l 查询结果框⑥:显示当前查询的结果。
a) 自定义显示:设置查询结果的显示字段。
b) 统计报表:显示当前查询结果的统计信息。
c) 导出:将查询结果显示的自定义字段导出到XML文件。最多可同时导出5000条记录。
d) 导入(仅支持Test Case模式):可以将导出的XML文件在Excel进行编辑后,再导入到BugFree中,实现Test Case批量编辑。最大支持2M大小的XML文件。
e) 批量运行(仅支持Test Case 模式):可以对查询结果的Test Case同时创建Test Result。最多支持100个Test Case。
l 导航栏⑦:显示当前登录用户名等信息。
为了保持用户体验的一致性,新建Bug, Test Case和Test Result的界面布局基本保持一致,只是具体填写字段有所不同。
以新建Bug为例,在主界面模式切换标签选择Bug,点击[新建 Bug]打开新建Bug页面。如下图,黄色标注字段为必填项。
状态 |
说明 |
Active(活动) |
Bug的初始状态。任何新建的Bug状态都是Active。可以通过编辑修改Bug的内容,并指派给合适的人员解决。 |
Resolved(已解决) |
解决Bug之后的状态。 |
Closed(已关闭) |
已修复Bug在验证无误之后关闭,该Bug处理完毕。如果没有真正解决或者重新复现,可以重新激活,Bug状态重新变为Active。 |
新建的Bug处于Active状态,可以通过编辑指派给合适的解决者。解决Bug之后,Bug状态变为Resolved,并自动指派给创建者。创建者验证Bug。如果未修复,再重新激活,Bug状态重新变为Active;如果已经修复则可以关闭,Bug状态变为Closed,Bug生命周期结束。已经Closed的Bug如果重新复现,也可以直接激活。具体流程如下图所示。
类型 |
解决方案 |
详细说明 |
三种无效的Bug |
By Design |
设计需求就是这么设计的 |
Duplicate |
这个问题别人已经发现 |
|
Not Repro |
无法复现的问题 |
|
四种有效的Bug |
Fixed |
问题被修复 |
External |
外部原因(比如浏览器、操作系统、其他第三方软件)造成的问题 |
|
Postponed |
发现的太晚了,下一个版本讨论是否解决 |
|
Won’t Fix |
是个问题,但是不值得修复 |
Bug 标题:为包含关键词的简单问题摘要,要有利于其他人员进行搜索或通过标题快速了解问题。
项目名/模块路径:指定问题出现在哪个项目的哪个模块。Bug处理过程中,需要随时根据需要修改项目或模块,方便跟踪。如果后台管理指定了模块负责人,选择模块时,会自动指派给负责人。
指派给:Bug的当前处理人。如果不知道Bug的处理人,可以指派给Active,项目或模块负责人再重新分发、指派给具体人员。如果设定了邮件通知,被指派者会收到邮件通知。状态为Closed的Bug,默认会指派给Closed,表示Bug生命周期的结束。
抄送给:需要通知相关人员时填写,例如测试主管或者开发主管等。可以同时指派多个,人员之间用逗号分隔。如果设定了邮件通知,当Bug有任何更新时,被指派者都会收到邮件通知。
严重程度:Bug的严重程度。由Bug的创建者视情况来指定,其中1为最严重的问题,4为最小的问题。一般1级为系统崩溃或者数据丢失的问题;2级为主要功能的问题;3级为次要功能的问题;4级为细微的问题。
优先级:Bug处理的优先级。由Bug的处理人员按照当前业务需求、开发计划和资源状态指定,其中1的优先级最高,4的优先级最低。一般1级为需要立即解决的问题;2级为需要在指定时间内解决的问题;3级为项目开发计划内解决的问题;4级为资源充沛时解决的问题。
其余选项字段(Bug类型、如何发现、操作系统、浏览器):可以通过编辑Lang/ZH_CN_UTF-8/_COMMON.php来自定义。
创建Build:Bug是在哪个版本(Build或者Tag)被发现的。
解决Build:Bug是在哪个版本(Build或者Tag)被解决的。
解决方案:参考Bug的七种解决方案。如果解决方案为Duplicated,需要指定重复Bug的编号。
处理状态:Bug处理过程的附属子状态,例如Local Fix表示已在本地修复;Checked In表示修复代码已经提交;Can’t Regress表示修复的问题暂无法验证等。
机器配置:测试运行的硬件环境,例如Dell G280 2G/200G。
关键词:主要用于自定义标记,方便查询。关键词之间用逗号或者空格分隔。例如,对于跨团队的项目开发,可以约定一个关键词统一标记项目。
相关 Bug:与当前Bug相关的Bug。例如,相同代码产生的不同问题,可以在相关Bug注明。
相关 Case:与当前Bug相关的Case。例如,测试遗漏的Bug可以在补充了Case之后,在Bug的相关Case注明。
上传附件:上传Bug的屏幕截图,Log日志或者Call Stack等,方便处理人员。
复现步骤:[步骤]要描述清晰,简明扼要,步骤数尽可能少;[结果]说明Bug产生的错误结果;[期望]说明正确的结果。可以在[备注]提供一些辅助性的信息,例如,这个bug在上个版本是否也能复现,方便处理人员。
测试用例(Test Case)是在测试执行之前设计的一套详细的测试计划,包括测试环境、测试步骤、测试数据和预期结果。在导航栏点击Test Case,即切换到Test Case模式,点击[新建Case],创建测试用例。可以通过页面上方的[复制]按钮快速创建类似的测试用例。
Case状态 |
详细说明 |
Active |
标示有效的测试用例。所有新建Case都默认为该状态 |
Blocked |
当前Case因为其他原因,无法正常运行。通过编辑Case进行修改 |
Investigating |
待研究确认的测试用例。通过编辑Case进行修改 |
Reviewed |
通过测试用例评审的用例。通过编辑Case进行修改 |
Case 标题:测试点的简单描述(30字以内)或测试的目的。
项目名/模块路径:指定测试用例对应的项目名称和模块路径。
指派给:执行Test Case的人员。如果不知道具体的用例执行人员,可以指派给Active 。
抄送给:需要通知相关人员时填写。可以同时指派多个,人员之间用逗号分隔。
优先级:Case执行的优先级。1:冒烟测试及每次测试都需执行的用例,严重程度最高;2:覆盖产品所有主要功能;3:次要功能;4:细节功能(资源有限时,可以不执行)。其余选项字段(Case类型、测试方法、测试计划等):可以通过编辑Lang/ZH_CN_UTF-8/_COMMON.php来自定义。
标记删除:用来标记已失效的用例,再通过查询条件进行排除。
关键词:主要用于自定义标记,方便查询。关键词之间用逗号或者空格分隔。例如,对于跨团队的项目开发,可以约定一个关键词统一标记项目。
显示顺序:通过输入0~255之间的任一整数实现对TestCase的自定义排序。例如,按照业务执行的流程重新排列Case的显示顺序。
Test Result只能通过运行已有测试用例来创建。打开一个已有的测试用例,点击页面上方[运行]按钮,进入创建Test Result页面。Case标题、模块路径和步骤等信息自动复制到新的Test Result中。同时,Test Result相关 Case自动指向该测试用例。记录执行结果(Passed或Failed)和运行环境信息(运行Build、操作系统、浏览器等信息),保存测试用例。针对执行结果为Fail的Test Result,点击页面上方的[新建 Bug]按钮,创建新Bug。Result标题、模块路径、运行环境和步骤等信息自动复制到新的Bug中。同时Test Result相关Bug指向新建Bug。
Case状态 |
详细说明 |
Passed |
运行成功的Test Case |
Failed |
运行失败的Test Case |
BugFree默认显示2个查询组,每组有3个查询字段(总共6个查询字段)。假设要查询项目Project 1, Project 2和Project 3从2008年1月1日起所有未关闭的Bug,可以设置如下的查询条件:
查询技巧:
1. 点击[保存查询]按钮,可以将当前的查询条件保存到右下角个性查询框“我的查询”标签页。点击已保存的查询,可以对查询条件进行编辑和修改。
2. 日期类型字段支持相对日期的查询。例如,创建日期 = -1将查询所有昨天创建的Bug。
3. 通过“包含”操作,可以指定多个查询值。例如,创建者包含user1,user2,搜索结果将显示两个创建者的Bug。
注意:BugFree默认支持6个查询字段,可以通过修改Include/Config.inc.php下面的值更改查询字段的数量。
$_CFG['QueryFieldNumber'] = 6; // The fields number to query in QueryBugForm.php |
在搜索结果列点击某一字段的值,可以快速进行筛选,筛选列高亮显示。例如,要查看所有解决方案为By Design的Bug,如下图,点击任一解决方案为By Design的Bug。
注意:筛选会忽略当前设置的查询条件。
在查询结果框右上角,点击[自定义显示]链接,可以显示或隐藏查询结果的字段和显示顺序。
点击搜索结果标题某一字段的标题栏,可以按该字段对搜索结果进行排序。再次点击则切换升序或降序。例如,需要查看最近更新的Bug,首先添加“最后修改日期”自定义字段,再在查询结果标题栏点击该字段。
在查询结果框右上角,点击[统计报表]链接打开新窗口。统计报表可以显示Bug, Test Case或Test Result当前查询结果的统计信息。
在统计报表页面的左侧选择统计项,点击[查看统计]按钮,右侧显示Flash统计图表。如下图:
在安装过程或者通过编辑Include/Config.inc.php文件可以启用邮件通知功能。例如,修改如下SMTP服务器信息。
/* 9. SMTP param setting. */ $_CFG['Mail']['SendParam']['Host'] = 'localhost'; // The server to connect. Default is localhost $_CFG['Mail']['SendParam']['SMTPAuth'] = false; // Whether or not to use SMTP authentication. Default is FALSE $_CFG['Mail']['SendParam']['Username'] = ''; // The username to use for SMTP authentication. $_CFG['Mail']['SendParam']['Password'] = ''; // The password to use for SMTP authentication. |
BugFree可以实时和定时发送邮件通知。在新建Bug或Test Case并保存后,指派给和抄送给将收到实时邮件通知。可以在“抄送给”编辑框输入多个用户帐号或者邮件地址,地址之间用逗号分隔。如下图,BugFree自动按照输入的字母对用户名进行筛选。
BugFree还可以发送定期邮件通知。
1. 如果需要定期对所有未关闭Bug的当前指派者发送邮件提醒,在Linux环境下定期执行bugfree/Shell/NoticeBug.sh;Windows环境下则定期执行bugfree/Shell/NoticeBug.bat。
2. 如果需要每周接收各项目/模块的过去7天新增Bug和超过7天未处理的Bug的邮件通知:
a) 后台管理页面,编辑指定的项目,在通知邮箱编辑框输入邮件接收的地址。
b) Linux环境下,通过crontab定期执行bugfree/Shell/StatBug.sh;Windows环境下则可以通过定时任务程序定期执行bugfree/Shell/StatBug.bat。
BugFree2.0 提供了对基本UBB代码的支持,可以在编写复现步骤和注释时添加链接、设置字体、嵌入图像等,也可以直接引用bug,case和result。
例如,编辑状态下输入文字:
链接http://www.cnblogs.com/aaa6818162/admin/www.bugfree.org.cn 字体[b]加粗[/b], [i]斜体[/i], [u]下划线[/u] 引用bug#[bug]100[/bug], case#[case]11[/case], result#[result]6[/result] 嵌入图像 |
保存后的显示效果:
BugFree默认附件大小为1000K,可以编辑Include/Config.inc.php文件下列设置更改上传文件大小。
$_CFG['File']['MaxFileSize'] = 1024 * 1000; // The max file size(Byte). |
以下快捷键需要浏览器支持。
页面 |
快捷键 |
说明 |
主页面 |
Ctrl + G |
弹出一个对话框。输入ID后,直接打开相应编号的Bug,Case或Result |
Bug, Case和Result 通用快捷键 |
Alt + P |
显示查询结果的上一个记录 |
Alt + N |
显示查询结果的下一个记录 |
|
Alt + E |
编辑当前记录 |
|
Alt + S |
保存记录 |
|
Bug页面 |
Alt + R |
解决Bug |
Alt + C |
关闭Bug |
|
Alt + A |
激活Bug |
|
Case页面 |
Alt + C |
复制Case |
Alt + R |
运行Case |
|
Result页面 |
Alt + B |
创建Bug |
BugFree的管理员包括系统管理员、项目管理员和用户组管理员三种角色。可以同时指派任意用户为任意角色。这三种管理员登陆BugFree之后,主页面上方导航栏会显示一个[后台管理]的链接。
全新安装BugFree之后,会自动创建一个默认的系统管理员帐号admin。你可以通过编辑BugFree目录下的Include/Config.inc.php文件,增加其他系统管理员帐号。
例如,假设要将user1设置为系统管理员。编辑Include/Config.inc.php文件,将user1添加到下面的行。
/* 2. Define admin user list. Like this: array('admin','test1') */ |
注意:如果user1不存在,首先需要默认管理员帐号admin登录之后,创建该用户。
项目管理员只能由系统管理员指派,指定哪些用户组可以访问当前项目。该角色负责维护Bug和Case的模块结构。
用户组管理员可以由系统管理员或者其他用户组管理员指派,负责维护一个用户组。一般情况下,用户组管理员和项目管理员可以是同一个用户。但是在大型的组织,在人员很多的情况下,可以指派专人对用户组进行维护。技术负责人则担当项目管理员的角色,负责维护Bug和Case的模块结构。
系统管理员、项目管理员和用户组管理员三种角色的详细权限如下表所列。
|
系统管理员 |
项目管理员 |
用户组管理员 |
项目管理 |
可以添加项目 可以查看和编辑所有项目 可以修改项目名称和显示顺序 可以指派项目用户组 可以指派项目管理员 可以编辑Bug或Case模块 |
不可以添加项目 仅可以查看和编辑自己是项目管理员的项目 不可以修改项目名称和显示顺序 可以指派项目用户组 不可以指派项目管理员 可以编辑Bug或Case模块 |
无权限 |
用户管理 |
可以查看所有用户 可以添加用户 可以编辑、禁用或激活所有用户 |
可以查看所有用户 可以添加用户 可以编辑、禁用或激活自己创建的用户或本人 |
可以查看所有用户 可以添加用户 可以编辑、禁用或激活自己创建的用户或本人 |
用户组管理 |
可以查看所有用户组 可以添加用户组 可以编辑或删除所有用户组 |
可以查看所有用户组 可以添加用户组 可以编辑或删除自己添加的用户组 |
可以查看所有用户组 可以添加用户组 可以编辑或删除自己添加的用户组或自己是用户组管理员的组 |
添加新用户,输入用户名、真实姓名、密码和邮件地址。用户名和密码用于登录BugFree;真实姓名则显示在指派人列表中用于选择。当有Bug或Test Case指派给该用户时,该用户设定的邮件地址会收到邮件通知。建议用户名与邮箱前缀一致,真实姓名则使用易读的中文名字。
点击[禁用]后,该用户将无法登录BugFree,并从所在用户组删除。包含该用户的记录将不再显示该用户的真实姓名,而以用户名代替。
再次点击[激活],将恢复该用户,但需要重新指派用户组权限。
创建用户之后,需要将用户添加到用户组,项目管理员通过指派用户组来分配权限。新用户只有在所属用户组指派给一个项目之后才可以登录BugFree系统。
安装BugFree之后,系统会默认创建一个[All Users] 默认组,该用户组包含所有用户,不需要额外添加用户。
点击[添加项目]的链接,创建新的项目。指派需要访问当前项目的用户组之后,改用户组的所有用户才可以访问该。项目默认显示顺序是按照创建的先后次序排列的。如果需要将某个项目排在最前面,编辑该项目,将显示顺序设置为0-255之间的数值。
创建了项目之后,通过[Bug模块]和[Case模块]链接,可以分别为Bug和Test Case创建树形模块结构。一个项目可以包含多个模块,一个模块下面可以包含多个子模块。原则上,对子模块的层级没有限制。与项目的显示顺序类似,可以编辑模块的显示数据值更改同级模块的排列顺序。
如果指定模块负责人,在创建该模块下的Bug或Test Case时,会自动指派给该负责人。
如果删除一个模块之后,该模块下面的Bug或Test Case将自动移动到父模块中。
点击[禁用]后,可以隐藏某个项目,但并不真正从数据库删除记录,该项目将对所有人员不可见。
再次点击[激活],将恢复该项目所有的记录。
用户日志只有系统管理员可以查看,用于记录用户的登录信息,包括登录的用户名,登录机器的IP地址和登录时间。
具体使用说明请参考API接口文档:bugfree_api.html
API应用示例下载:api-example.tar.gz