刚接手测试团队时,我最头疼的就是bug管理。记得有次迭代验收,开发信誓旦旦说所有bug都修复了,结果测试一跑,之前报的十几个关键问题像变魔术一样消失了——原来是用Excel记录的bug被误删了。这种血泪史让我意识到,团队缺的不是测试能力,而是一个靠谱的缺陷管理系统。
Bugzilla就像bug世界的交通指挥中心。它能确保每个被发现的问题都有迹可循:谁发现的、谁在处理、修没修好、验证结果如何,所有状态变更都会自动记录。我们团队用了三个月后,最明显的改变是晨会不用再扯皮"这个bug到底谁负责",所有信息在系统里一目了然。
对于敏捷团队来说,Bugzilla的价值更在于数据沉淀。每次迭代结束后,系统自动生成的报表会告诉我:哪些模块最容易出问题、平均修复周期多长、重复出现率如何。这些数据比拍脑袋做决策靠谱多了,现在我们的迭代复盘会都有真实数据支撑。
第一次装Bugzilla时,我在Perl模块依赖上栽了跟头。明明按照官方文档操作,却总是报500错误,后来发现是缺少DBD::mysql模块。这里分享我的安装checklist:
环境准备:
bash复制# Ubuntu示例
sudo apt install apache2 mysql-server libapache2-mod-perl2
sudo cpan install DateTime Template GD Text::CSV
数据库配置:
建议单独创建数据库用户,不要直接用root账号。初始化时记得设置utf8mb4字符集,否则处理中文描述会出乱子。
邮件服务:
测试时可以用sendmail凑合,但生产环境建议配置SMTP。我们用的是腾讯企业邮,配置参数如下:
perl复制# 修改localconfig
$mail_delivery_method = 'SMTP';
$smtp_server = 'smtp.exmail.qq.com';
$smtp_username = 'your_email@domain.com';
权限配置是另一个容易踩坑的点。新手常犯的错误是给所有人开admin权限,结果第二天发现工作流被改得面目全非。我的建议是:
默认的Bugzilla工作流太重型了,我们团队优化后的状态机是这样的:
code复制[新建] → [已确认] → [开发中]
↑↓ ↓
[需补充信息] [待测试]
↓
[已修复] → [已验证]
↑___________|
实现这个流程需要修改workflow表,关键字段包括:
bug_status: 状态名称isactive: 是否可操作状态sortkey: 界面显示顺序对于两周迭代的团队,我强烈建议开启"快速创建"模式。在parameters表里设置:
sql复制UPDATE parameters SET value = 1 WHERE name = 'quicksearch';
这样测试人员提交bug时只需填写:
其他字段如组件、迭代版本都可以通过默认值自动填充,提交效率提升60%以上。
上周我们的CTO突然问:"移动端注册流程的bug为什么比上月增加了30%?"要是放在以前,这种问题得翻好几天的测试报告。现在直接用Bugzilla的报表功能:
sql复制-- 查询指定模块的bug趋势
SELECT DAY(creation_ts) as day, COUNT(*)
FROM bugs
WHERE product = '移动App' AND component = '用户注册'
GROUP BY day;
更高级的用法是配置自定义仪表盘,我常用的三个图表:
这些数据直接指导我们调整测试策略。比如发现支付模块的边界值问题特别多,就增加了对应的自动化用例;看到API超时类bug修复周期长,就优化了Mock服务配置。
刚开始推广时,开发同事最抵触的是邮件轰炸。后来我们调整通知策略:
在email_setting表里可以精细控制:
perl复制$mail_priority = {
'Blocker' => 'highest',
'Critical' => 'high',
'Normal' => 'normal'
};
跨团队协作时,善用"关注列表"功能。每个迭代启动会上,产品经理会把本次涉及的所有组件负责人加到CC列表,这样任何相关bug变更他们都会收到通知,避免信息孤岛。
有次线上事故让我深刻体会到权限控制的重要。某开发同学误把生产环境bug标记为"已修复",其实只是在他本地改好了。现在我们要求所有生产环境bug必须:
这些规则通过Bugzilla的强制字段和状态校验实现,从流程上堵住了漏洞。