軟件測試對質量負主要責任?
你的公司,產品發布時,是否要求測試說出個“產品質量是XX的”論斷,如果發到用戶那里出了問題,就首先打測試的板子,老大都在問“測試為什么沒有測試出來”,仿佛測試是最后一道關、是質量警察?測試應該對質量負主要的責任嗎?
我的觀點:測試不對質量負主要責任,測試只起到質量輔助的作用;測試是一種服務,為其他角色提供服務,提供關于質量的信息。
為了說清這個觀點,有必要先討論一下:什么是質量、什么叫做對質量負責、對誰負責、誰定義的質量。
當然質量的定義有很多種,我比較贊賞Jerry Weinberg的定義”Quality is value to someone who matters“,測試最主要的目的就是要找到那些削弱產品價值(value)的點,將這些與產品質量相關的重要的信息提供給項目決策者,以便他們做出更 準確的決策。
正如Michael Bolton所言,”Consider quality not as something simple, objective, and abstract, but as something messy, subjective and very human.“ 質量不是什么簡單的事務,而是一個關乎產品、人、系統之間的復雜關系。
為了提升質量或保證質量,需要有方方面面的考慮,是那些產品的管理者們真正有權利決定使用什么開發方法和流程、雇傭什么樣的人員、采用什么樣的質量目標、如何度量、花多大成本等等來確保產品的質量,而不是測試人員。
作為測試人員,不要努力去影響別人做什么、怎么做,而是要聚焦于提供實時的、準確的有關產品的信息(問題和風險),以有助于別人做出更恰當的提升質量的決策。
測試是一種服務,為項目其他角色提供服務。當然,每一個角色都是為其他角色提供服務的。開發人員為測試人員提供”軟件可測試“的服務,使得軟件更容易測試;測試人員幫助開發人員測試他們的代碼,使用專業的測試技能和測試思維。
測試人員、包括QA,都不應該將某種方法強加于開發人員,那是質量警察干的事。一是因為測試人員和QA都沒有優勢告訴開發如何開發質量更好的產品;二是因為當你強加某種東西給別人的時候,你獲得的往往是假的數據。
征得Michael Bolton的同意,轉譯了他的一篇博文:http://www.51testing.com/html/24/n-812424.html
其實,“負責”是個很重的詞。對質量負主要責任的人,得有一定的權力做各種質量有關的決定。測試是否有權力或能力做這些決定呢?
質量本身是一系列活動的結果,當然最重要的是設計和編碼,如果設計和編碼都完全符合需求和用戶期望,那也就不需要測試了。然而,我們的認知和智力都是有 限的,不可能那么完美,而且有時候用戶都不知道自己的需求,還需要我們去引導(喬布斯理論),所以還是需要一個中立的或者第三方的組織來判斷產品的實 現是否符合用戶和我們最初的需求和期望,這就需要測試來給相關的利益關系者提供客觀、準確的質量信息和評估了。
測試活動本身不能帶來產品質量的變化。測試就是一個信息提供方,精確反映出產品需求的實現和在哪種情況可能給客戶帶來的風險就是測試的職責,當做一個質量播報員,就像最近的牛奶風波一樣,我們只要把牛奶中成分的真實情況反映出來,剩下的就由用戶或制造者來做決定吧。
質量是設計出來的,但設計者是人,也有考慮不足的,需要通過測試發現,發現后設計者進行改進,測試的職責是發現問題。設計和實現是有差距的,沒有缺 陷的設計只是一個終極目標,只是一種理想,因此測試必須進行一種權衡,判斷哪些缺陷是必須改進的,哪些是現在可以忽略的,這種決定不是僅由測試說了算的。 我不知道哪個團隊的測試人員可以做這個決策?除非你比開發人員還懂業務、你比項目經理還了解風險、你比客戶還了解需求?
產品“零缺陷”只能是一個理想,即使排除時間和投入成本也是不可能達到的。但我們要把產品可能存在的潛在風險和失效條件找出來,發布與否這樣的決定就不是測試說了算了,要看客戶能否容忍這樣的風險和失效,由決策者做成最終決定。
當然,測試這把尺子,只能提供有關產品質量的“相對”的信息,不是“絕對”的信息。實際上,“XX產品的質量就是什么樣子的“這個論斷沒有人能給得出。 如果你能準確無誤地說出”XX產品的質量現在就是這樣“, 很快就會發現一個反例的出現將打破你原來對它的認識–當然,你根本無法準確無誤地說出質量的樣子,那是一個無窮的集合,就像測試是一個永遠測不完的活一 樣。因此,測試提供的信息只是相對準確的,不是絕對準確的,這個局限性也正是測試所面臨的挑戰。
不過,測試努力做到的是,用我們的專業技能和測試思維,盡可能學習了解真實的產品、發現別的角色意想不到的問題和風險,并報告給他們:”在XXX的 背景/上下文/場景下,XXX產品在XXX質量屬性方面表現正常;在當前進行了XXX的測試后,目前XXX產品存在XXX的問題,如果XXX使用該產品, 會存在XXX的風險。“
說“測試對質量負主要責任”這樣的說法是錯誤的,不是代表測試就和質量沒有關系,實際上測試非常關心質量,并且測試的工作對質量有很大的影響。但同時我們認為其他角色關心質量的程度一點也不 比我們小,或者不應該比我們小,大家共同對質量負責。但是像敏捷里的“完整團隊”的說法,每個人都對質量負責、大家是個自組織團隊的做法在現實中還是遇到 很多問題的,還是得有人做決策,做那些為了提升質量而采取什么動作的決策,這個決策者,首先得有權利做決策,才能控制了項 目,才能控制了質量,才能對質量負責。
也許在很多公司,是項目管理者 有這樣的權力吧。測試像一把尺子衡量產品質量后會給出測試知道的有關質量的信息,同時我們也很清楚,管理者那里還有很多測試不知道的、同樣也很重要的、有 關質量的信息,管理者會基于所有信息作出最終的質量決策,可能是發布產品、可能是更改流程、可能是更改需求、可能是引入工具......管理者有做這些決 策的權利和能力,他們會想辦法讓所有角色關心質量,所以,不是測試對質量負主要責任,而是決策者要對他做的決定負責。
posted on 2012-05-07 09:51 順其自然EVO 閱讀(230) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄