測試的角色 (Test) 要獨立出來(lái)么 ?
獨立出來(lái)的測試角色怎么才能發(fā)揮作用?
有些成功人士和成功的公司號稱(chēng)沒(méi)必要有獨立的測試角色 (Test), 你怎么看?
最近又看到一些關(guān)于開(kāi)發(fā)人員要不要負責測試的討論。 例如:
http://www.aqee.net/on-testers-and-testing/
大多數的開(kāi)發(fā)團隊并不需要一個(gè)獨立的測試角色。即使有一個(gè),他的所有的開(kāi)發(fā)時(shí)間比上所有的測試時(shí)間應該 >20:1。
[注: 這個(gè)翻譯就有錯誤, 原文指 開(kāi)發(fā): 測試 的比例應該 > 20:1 ]
我正好在寫(xiě)相關(guān)的教案, 也來(lái)湊個(gè)熱鬧。
[這篇文章的一些事例來(lái)自于我曾經(jīng)和現在的團隊。 希望這些例子不足以影響相關(guān)人物和團隊的偉大形象。 任何軟件團隊都會(huì )犯錯誤, 偉大的團隊有勇氣面對自己的錯誤并不斷改進(jìn)。]
首先, 明確兩個(gè)概念:
軟件測試 (Test):運用定義好的流程,工具去驗證軟件能實(shí)現預先設計的功能和特性, 工作的流程和結果通常是可量化的, 例如, 測試用例, bugs, 代碼覆蓋率, MTTF, 軟件效能的參數。 [注: 正因為流程和結果是可明確定義的, 可量化的, 很多測試工作可以自動(dòng)化]
軟件質(zhì)量保證工作 (Quality Assurance):軟件團隊的成員為了讓軟件達到事先定義的質(zhì)量而進(jìn)行的所有活動(dòng),包括測試工作。
對于這兩個(gè)術(shù)語(yǔ), 不同人有不同的定義, 有人認為它們是互通的, 在《現代軟件工程》的上下文中我盡量使用上述的定義.
測試的角色 (Test) 要獨立出來(lái)么 ?
回答: 首先, 我相信有分工是好事, 軟件團隊中應該有獨立的測試 (Testing) 角色。所有人都可以參與QA 的工作 (報告bug 什么的), 但是最后要有一個(gè)角色對QA 這件事負責。 不但角色要獨立,而且在最后軟件發(fā)布的時(shí)候, 必須得到此角色的簽字保證 (sign off)。我在微軟參與的項目都是這樣做的。
在開(kāi)始論證之前, 先引用斯密特 ·亞當斯的 《國富論》 來(lái)暖場(chǎng) (我沒(méi)讀過(guò)這本書(shū), 直接從網(wǎng)上抄的)。
分工理論
亞當斯認為,分工的起源是由人的才能具有自然差異。… 假定個(gè)人樂(lè )于專(zhuān)業(yè)化及提高生產(chǎn)力,經(jīng)由剩余產(chǎn)品之交換行為,促使個(gè)人增加財富,此等過(guò)程將擴大社會(huì )生產(chǎn),促進(jìn)社會(huì )繁榮,并達私利與公益之調和。 他列舉制針業(yè)來(lái)說(shuō)明。“如果他們各自獨立工作,不專(zhuān)習一種特殊業(yè)務(wù),那么他們不論是誰(shuí),絕對不能一日制造二十枚針,說(shuō)不定一天連一枚也制造不出來(lái)。他們不但不能制出今日由適當分工合作而制成的數量的二百四十分之一,就連這數量的四千八百分之一,恐怕也制造不出來(lái)。”
分工促進(jìn)勞動(dòng)生產(chǎn)力的原因有三:第一,勞動(dòng)者的技巧因專(zhuān)業(yè)而日進(jìn);第二,由一種工作轉到另一種工作,通常需損失不少時(shí)間,有了分工,就可以免除這種損失;第三,許多簡(jiǎn)化勞動(dòng)和縮減勞動(dòng)的機械發(fā)明,只有在分工的基礎上方才可能。
引用
我們看團隊形式的職業(yè)體育比賽, 各個(gè)位置的分工都很明確, 拿足球來(lái)說(shuō), 有專(zhuān)注進(jìn)攻的, 有專(zhuān)注防守的, 但是在我的印象中, 那些偉大的前鋒大多數只管一件事 - 進(jìn)攻。 亨利 (Thierry Henry)參加防守么?
當然一些球賽也有沒(méi)有分工的時(shí)候, 原因 有好幾個(gè):
事太小, 幾個(gè)小孩踢個(gè)半場(chǎng)。
無(wú)知, 小孩們剛開(kāi)始玩球。
人手不夠, 一對一打籃球, 你要參與防守么? 沙灘排球,兩人都是全攻全守。
如果你的軟件團隊做的事情和上面的情況類(lèi)似, 那當然不必分工。你們做的很可能不是商用軟件, 你的軟件團隊大概也不用受什么軟件工程規律的束縛。 (參見(jiàn): 軟件工程概論).
任何產(chǎn)業(yè)產(chǎn)業(yè)成熟到一定階段的時(shí)候, 獨立的質(zhì)量保證角色是不可避免的。團隊內部有QA 角色, 團隊外部也有獨立的QA 角色。
拿藥品和食品來(lái)做例子, 除了生產(chǎn)廠(chǎng)家自己的檢測之外, 這些產(chǎn)品還要接受行業(yè)主管部門(mén)相關(guān)機構的檢測和認可 (藥品檢驗, 食品檢驗), 才能上市。 在出現爭議的情況下, 還要第三方機構來(lái)進(jìn)行測試或認證。
有人也許這樣建議:
這些藥品都是藥廠(chǎng)同一批工人一邊制造一邊測試出來(lái)的, 特別有保證! 不用測了, 趕緊吃了吧!
也許還有人這樣建議:
這個(gè)十字坡夫妻店的農家飯都是他們自己親手做的, 很可信, 咱們今晚就去吃飯住一宿吧。
我們每天經(jīng)常使用的電子產(chǎn)品, 從大彩電到電影插座, 也經(jīng)歷了很多團隊內部的和外部的測試, 請隨手拿過(guò)任何一個(gè)電器, 你會(huì )在背面看到密密麻麻的小字, 其中肯定有下列標記之一:
沒(méi)有這些標記的產(chǎn)品電子產(chǎn)品, 市面上很少看到。
在軟件和互聯(lián)網(wǎng)產(chǎn)業(yè), 目前沒(méi)有這些認證, 相反的, 倒是有“人肉認證” :
你想申請某個(gè)著(zhù)名專(zhuān)業(yè)網(wǎng)站的賬戶(hù)或者郵箱, 但是又擔心這個(gè)網(wǎng)站對用戶(hù)信息的保護程度不夠。有人說(shuō), 沒(méi)關(guān)系的, 這個(gè)網(wǎng)站的創(chuàng )始人也用賬戶(hù), CTO , 總監什么的還經(jīng)常發(fā)軟件安全博客, 賬戶(hù)一定是非常安全的! 這里不存在獨立的質(zhì)量認證, 只能通過(guò)人肉 (創(chuàng )始人/CTO/總監)來(lái)認證產(chǎn)品的質(zhì)量。
其實(shí)這種認證未必安全… (密碼門(mén)事件) (明文密碼事件)(郵箱密碼漏洞)
如果有第三方的認證 “此網(wǎng)站對用戶(hù)信息的保護程度是X級, 我們認證它不會(huì )明文存儲用戶(hù)密碼… ” 我就放心了。 在第三方認證出現之前, 我希望團隊內部至少有獨立的QA 角色, 來(lái)確保軟件的質(zhì)量。否則我是不樂(lè )意使用這些軟件/服務(wù)的。
[補充一句, 互聯(lián)網(wǎng)服務(wù)的各種認證也在發(fā)展, 例如verisign 公司提供的各種認證。]
獨立出來(lái)的質(zhì)量保證角色怎么才能發(fā)揮作用?
原文轉自:http://kjueaiud.com