你的公司,產品發布時,是否要求測試說出個「產品質量是xx的」論斷,如果發到使用者那裡出了問題,就首先打測試的板子,老大都在問「測試為什麼沒有測試出來」,彷彿測試是最後一道關、是質量警察?測試應該對質量負主要的責任嗎?
我的觀點:測試不對質量負主要責任,測試只起到質量輔助的作用;測試是一種服務,為其他角色提供服務,提供關於質量的資訊。
為了說清這個觀點,有必要先討論一下:什麼是質量、什麼叫做對質量負責、對誰負責、誰定義的質量。
當然質量的定義有很多種,我比較讚賞jerry weinberg的定義」quality is value to someone who matters「,測試最主要的目的就是要找到那些削弱產品價值(value)的點,將這些與產品質量相關的重要的資訊提供給專案決策者,以便他們做出更 準確的決策。
正如michael bolton所言,」consider quality not as something ******, objective, and abstract, but as something messy, subjective and very human.「 質量不是什麼簡單的事務,而是乙個關乎產品、人、系統之間的複雜關係。
為了提公升質量或保證質量,需要有方方面面的考慮,是那些產品的管理者們真正有權利決定使用什麼開發方法和流程、僱傭什麼樣的人員、採用什麼樣的質量目標、如何度量、花多大成本等等來確保產品的質量,而不是測試人員。
作為測試人員,不要努力去影響別人做什麼、怎麼做,而是要聚焦於提供實時的、準確的有關產品的資訊(問題和風險),以有助於別人做出更恰當的提公升質量的決策。
測試是一種服務,為專案其他角色提供服務。當然,每乙個角色都是為其他角色提供服務的。開發人員為測試人員提供」軟體可測試「的服務,使得軟體更容易測試;測試人員幫助開發人員測試他們的**,使用專業的測試技能和測試思維。
測試人員、包括qa,都不應該將某種方法強加於開發人員,那是質量警察幹的事。一是因為測試人員和qa都沒有優勢告訴開發如何開發質量更好的產品;二是因為當你強加某種東西給別人的時候,你獲得的往往是假的資料。
徵得michael bolton的同意,轉譯了他的一篇博文:
其實,「負責」是個很重的詞。對質量負主要責任的人,得有一定的權力做各種質量有關的決定。測試是否有權力或能力做這些決定呢?
質量本身是一系列活動的結果,當然最重要的是設計和編碼,如果設計和編碼都完全符合需求和使用者期望,那也就不需要測試了。然而,我們的認知和智力都是有 限的,不可能那麼完美,而且有時候使用者都不知道自己的需求,還需要我們去引導(賈伯斯理論),所以還是需要乙個中立的或者第三方的組織來判斷產品的實 現是否符合使用者和我們最初的需求和期望,這就需要測試來給相關的利益關係者提供客觀、準確的質量資訊和評估了。
測試活動本身不能帶來產品質量的變化。測試就是乙個資訊提供方,精確反映出產品需求的實現和在哪種情況可能給客戶帶來的風險就是測試的職責,當做乙個質量播報員,就像最近的牛奶風波一樣,我們只要把牛奶中成分的真實情況反映出來,剩下的就由使用者或製造者來做決定吧。
質量是設計出來的,但設計者是人,也有考慮不足的,需要通過測試發現,發現後設計者進行改進,測試的職責是發現問題。設計和實現是有差距的,沒有缺 陷的設計只是乙個終極目標,只是一種理想,因此測試必須進行一種權衡,判斷哪些缺陷是必須改進的,哪些是現在可以忽略的,這種決定不是僅由測試說了算的。 我不知道哪個團隊的測試人員可以做這個決策?除非你比開發人員還懂業務、你比專案經理還了解風險、你比客戶還了解需求?
產品「零缺陷」只能是乙個理想,即使排除時間和投入成本也是不可能達到的。但我們要把產品可能存在的潛在風險和失效條件找出來,發布與否這樣的決定就不是測試說了算了,要看客戶能否容忍這樣的風險和失效,由決策者做成最終決定。
當然,測試這把尺子,只能提供有關產品質量的「相對」的資訊,不是「絕對」的資訊。實際上,「xx產品的質量就是什麼樣子的「這個論斷沒有人能給得出。 如果你能準確無誤地說出」xx產品的質量現在就是這樣「, 很快就會發現乙個反例的出現將打破你原來對它的認識–當然,你根本無法準確無誤地說出質量的樣子,那是乙個無窮的集合,就像測試是乙個永遠測不完的活一 樣。因此,測試提供的資訊只是相對準確的,不是絕對準確的,這個侷限性也正是測試所面臨的挑戰。
不過,測試努力做到的是,用我們的專業技能和測試思維,盡可能學習了解真實的產品、發現別的角色意想不到的問題和風險,並報告給他們:」在***的 背景/上下文/場景下,***產品在***質量屬性方面表現正常;在當前進行了***的測試後,目前***產品存在***的問題,如果***使用該產品, 會存在***的風險。「
說「測試對質量負主要責任」這樣的說法是錯誤的,不是代表測試就和質量沒有關係,實際上測試非常關心質量,並且測試的工作對質量有很大的影響。但同時我們認為其他角色關心質量的程度一點也不 比我們小,或者不應該比我們小,大家共同對質量負責。但是像敏捷裡的「完整團隊」的說法,每個人都對質量負責、大家是個自組織團隊的做法在現實中還是遇到 很多問題的,還是得有人做決策,做那些為了提公升質量而採取什麼動作的決策,這個決策者,首先得有權利做決策,才能控制了項 目,才能控制了質量,才能對質量負責。
也許在很多公司,是專案管理者 有這樣的權力吧。測試像一把尺子衡量產品質量後會給出測試知道的有關質量的資訊,同時我們也很清楚,管理者那裡還有很多測試不知道的、同樣也很重要的、有 關質量的資訊,管理者會基於所有資訊作出最終的質量決策,可能是發布產品、可能是更改流程、可能是更改需求、可能是引入工具......管理者有做這些決 策的權利和能力,他們會想辦法讓所有角色關心質量,所以,不是測試對質量負主要責任,而是決策者要對他做的決定負責。
論測試的主要責任
論測試的主要責任序 很多人對測試工程師這個工作的範圍和責任有非常多的誤解,可能包括公司的高層 本領域的研發同事 其他領域的同事等等。甚至有時候測試工程師本身也受種種觀點 看法的影響,混淆了自己的工作職責,盲目的承擔額外的工作壓力和責任,疲於奔命,無法把精力和心思放在提高本職工作,專注獲取自我職業提公...
論測試的主要責任
論測試的主要責任 序 很多人對測試工程師這個工作的範圍和責任有非常多的誤解,可能包括公司的高層 本領域的研發同事 其他領域的同事等等。甚至有時候測試工程師本身也受種種觀點 看法的影響,混淆了自己的工作職責,盲目的承擔額外的工作壓力和責任,疲於奔命,無法把精力和心思放在提高本職工作,專注獲取自我職業提...
軟體測試和軟體質量
來自wikipedia 描述一種用來促進鑑定軟體的正確性 完整性 安全性和質量的過程。換句話說,軟體測試是一種實際輸出與預期輸出間的審核或比較過程。軟體測試的經典定義 在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否滿足設計要求進行評估的過程。iso 9126 是乙個用來評估軟...