缺陷大扫除(Bug Bash)是一项短期的全员测试活动。在微软,许多开发团队会在里程碑(milestone)的末期执行缺陷大扫除。程序员、测试员、程序经理、内部用户、市场人员在1~3天的时间窗口中,运用各自的技能和职业背景,集中精力来搜寻软件的缺陷。通常,每位参与者会获得一个小礼品,发现缺陷数目最多的冠军会获得一份大奖。

  一般认为,缺陷大扫除的优势在于引入了“更多的眼睛”。程序员更了解程序逻辑和实现细节,有可能发现隐蔽的缺陷;测试员更擅长缺陷猜测和持续攻击,有可能发现其他测试员遗漏的缺陷;程序经理能够从业务角度考察软件,有可能发现业务流程、整体设计上的缺陷;内部用户是软件的使用者,有可能发现易用性、可达性上的缺陷。总之,参与者在技能和角色上的差异性有助于发现不同类型、不同层次的缺陷。

  如果只有测试人员参与,缺陷大扫除还有意义吗?以我的观察,测试团队定期组织所有成员执行缺陷大扫除,是一项非常好的实践,有助于团队建设(team building)和个人成长。

  在我的部门,测试团队有近20名测试员工。每个员工会负责一个子系统或独立模块的测试,这些子系统和模块会组成整个业务系统。我们大约2~3个月做一次发布(release),每次发布之前都会执行缺陷大扫除。其大致流程和要点如下:

  缺陷大扫除持续一个完整的下午(大约3~4个小时)。这是一个天然的时间窗口,让测试员可以集中精力工作。超过这个窗口,测试员很有可能分心去做其他工作。

  所有的测试员带着自己的笔记本电脑,在一个大会议室围桌而坐,一起测试。团队建设的一个手段就是团队成员协作去完成一个有挑战性的任务。缺陷大扫除就是测试团队一起工作去搜索整个业务系统的缺陷。

  测试员测试一个陌生的子系统时,他可能不了解该系统的业务目标和使用方式。这时,他可以询问负责该系统测试的同事。由于所有人都坐在一个会议室,绝大部分业务问题都可以得到立即解答。这使得测试可以顺畅地推进,也强化了相互协作的团队精神。

  测试主管(test lead)参与缺陷大扫除,他也在会议室执行测试。领导重视是团队建设的必要基础,它体现为领导亲自做那些他宣称是非常重要的事情。

  测试主管会不定期通报测试进度:已经发现了多少缺陷、目前的冠军发现了多少缺陷等。这是对测试团队士气的鼓舞,也推动了测试员之间的良性竞争。

  在“缺陷大扫除”会议结束之后,每个子系统的开发团队立即举行“缺陷分拣(triage)”会议。程序员、测试员、程序经理一起检查缺陷列表,决定哪些缺陷需要立即修复、哪些缺陷可以延迟修复、哪些缺陷不必修复。

  在一周内,测试团队举行“缺陷检讨”会议,对有教益的缺陷进行深入分析。团队识别出有代表性的缺陷,分析根本原因,枚举错误症状,总结适用的测试方法,并提出避免再犯的建议。这个会议是缺陷大扫除最重要的一环,它使得测试技巧、开发知识、有效实践可以在团队中分享并沉淀,是团队学习、个人成长的有力工具。

  对缺陷大扫除的冠亚季军给予适当奖励,奖品可以是运动装备、购物劵、书劵等小礼品。这是为了提高整个活动的趣味性,因此奖品不宜过于贵重。在我的团队,冠军奖品大约为150元,亚军奖品为100元,季军奖品为50元。

  缺陷大扫除是常规测试的有效补充。测试团队将各个子系统连成业务系统,执行端到端(end-to-end)的系统测试,能够发现个人在子系统测试中难以发现的缺陷。此外,测试员在测试不熟悉的子系统时,没有任何先入为主的“偏见”,往往能立即发现那些被”熟视无睹“的缺陷。而资深测试员还可能发现一些初学者难以察觉的隐蔽问题。

  不过,相比找到的缺陷,我认为缺陷大扫除在以下两个方面更有价值。

  团队建设。在日常工作中,测试员更多的时间在独立地工作,彼此之间的联系并不紧密。在缺陷大扫除中,测试员进行渗透式交流,互通情报,一起嘲笑那些拙劣的设计、滑稽的缺陷,甚至说一些无关的笑话以相互逗乐。全部这些“小事”都在潜移默化中逐步构建一个团队。

  团队学习。团队举行“缺陷检讨”会议,总结缺陷模式(bug pattern),完善测试策略,补充测试检查列表(check list)。这是一种积极的集体学习行为。在此过程中,测试员可以积累经验、分享技能,测试团队可以沉淀知识、凝聚士气。

测试杂感:Bug Bash的更多相关文章

  1. Alpha Version Release Of Teamwork: Appendix 1 BUG BASH

    在为期一周的发布周中,我们将app本身最后的细节完善,功能代码到位,UI不断改进和优化,团队在开始准备发布之前,对整个APP进行了一次BUG检查,每个人都部署了app在自己的android设备上进行测 ...

  2. 生活就像测试, BUG会越来越少,生活会越来越好!

    生活就像测试, BUG会越来越少,生活会越来越好!

  3. 测试对bug如何分析和定位

    如何去区分一个功能测试工程师的水平高和低? 可以从很多个方面去检查,比如测试的思路, 比如测试用例的覆盖度?,比如测试出bug是否能够定位到根因? 上面说的各个方面都很合理,那我们平常如何如更深的定位 ...

  4. 【测试方法】Web测试中bug定位基本方法

    知识总结:Web测试中bug定位基本方法 涉及知识点:测试方法 在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出 ...

  5. Bug Bash in Personal Photo Experience 1/11/2016

    In the process of our Personal Photo Experience Project, There are some bugs which hinder our forwar ...

  6. Alpha版本BUG BASH

    在本次软件开发的第一轮迭代中,我们团队遇到了很多问题.首先是和学长联系不上导致拿到项目前一版本的代码的时间延后了一个星期. 拿到代码后发现由于安装环境的问题代码无法移植.在这一阶段我们就耗费了大量的时 ...

  7. iOS之利用腾讯Bugly程序调试,测试代码bug、卡顿等情况

    1.自己先写一个 Demo 演示一下利用bugly测试崩溃的具体情况. 在ViewController里面实现崩溃代码如下:  运行后 毫无疑问程序报错了! 2.使用到第三方的框架Bugly,官方下载 ...

  8. itest(爱测试) 4.0.0 发布,开源敏捷测试管理 &BUG 跟踪管理软件

      v4.0.0 下载地址 :itest下载 itest 简介:查看简介 V4.0.0 根据用户反馈,共增加了29个更新:其中有15 个功能增强和14个BUG修复 :UI更加清爽,用例执行和用例复制粘 ...

  9. itest(爱测试) 3.3.5 发布,开源敏捷测试管理 & BUG 跟踪管理软件

    v3.3.5 下载地址 :itest下载 itest 简介:查看简介 V3.3.5 有 6个功能增强,2个BUG修复 ,详情如下所述. 用户反馈并强烈要求增强的功能实现:    1: 测试用例管理可线 ...

随机推荐

  1. 链接错误——无法解析的外部符号 ConvertStringToBST

    今天做COM组件时,编译之后,出现了一个数个编译错误:error LNK2019: 无法解析的外部符号 "wchar_t * __stdcall _com_util::ConvertStri ...

  2. Android中方便好用的倒计时类

       一.使用api提供的类进行操作 Android提供了CountDownTimer来让我们进行倒计时,可以让我们很方便的进行倒计时的操作.使用方式也很简单,下面直接贴代码就好了: package ...

  3. 浅谈Adapter中观察者模式

    首先让我们看一个客户端图片 这是京东客户端的购物车界面.有这么一种功能,当我们在商品列表中调整商品数量等信息的时候,下方的金额总数也随之变化. 可以看出,这个界面有一个数据源,一个适配器,一个List ...

  4. 安卓开发_浅谈ListView(SimpleAdapter数组适配器)

    安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...

  5. iOS之 kamailio-4.3.4sip服务器搭建-mac

    如要转载请注明出处http://www.cnblogs.com/chengxiaoyu/p/5006352.html 1.安装MySQL 去http://www.mysql.com/下载最新版本的My ...

  6. LINQ SQL分组取最近一条记录

    最近项目有一个需求,从订单表查询出每个客户最近一条订单记录.数据库表结构如下图 SELECT * FROM ( select ROW_NUMBER()over(partition by [custid ...

  7. yum安装mariadb

    安装mysql yum install mariadb mariadb-server MySQL-python mysql-devel Package MySQL-python-1.2.5-1.ibm ...

  8. Struts2-tomcat报错:There is no Action mapped for namespace / and action

    HTTP Status 404 - There is no Action mapped for namespace / and action name first. type Status repor ...

  9. 【mysql】索引的优化

    写在前面的话 查询容易,优化不易,且写且珍惜 mysql结构 从MySQL逻辑架构来看,MySQL有三层架构,第一层连接,第二层查询解析.分析.优化.视图.缓存,第三层,存储引擎 MySQL有哪些索引 ...

  10. ArcGIS API for JavaScript Beta初步试探(一)

    这段时间一直在看https://developers.arcgis.com/javascript/beta/sample-code/index.html, 下面直接看图片: 叠加了二维arcgis s ...