缺陷大掃除(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)。這是一種積極的集體學習行為。在此過程中,測試員可以積累經驗、分享技能,測試團隊可以沉淀知識、凝聚士氣。
原文轉自:http://www.anti-gravitydesign.com