咱們的思惟是不完美,不管咱們多想盡力的完成一項工做,都會可能會在某一點上出錯。咱們要讓本身作出的決定比不進行測試的時候要更好。編程
做爲軟件生產者,咱們要經過測試來了解軟件產品是否可以賣出去。要從客戶的角度去進行測試。工具
風險的評估存在主觀性:1.風險是針對將來進行評估的,將來可能會發生任何事情;2.不一樣人對同一種風險的感覺是不一樣的。測試
經過測試獲取的信息可以下降決策帶來的風險。spa
由於不一樣的人,不一樣的項目,不一樣的時間都意味着對風險的不一樣理解。須要設計對應的測試來回答不一樣的問題。操作系統
1)軟件是否可以作咱們但願它作的工做?設計
2)若是軟件不能作咱們但願它作的工做,須要多掃工做才能解決這個問題?內存
3)軟件是否作了咱們不但願它作的事?資源
4)軟件是否可以達到咱們的預期(有沒有實現其目的)?開發
5)軟件可以作用戶但願它作的事嗎(用戶滿意嗎)?文檔
6)軟件是否知足了其餘的商業要求?(計劃外的維護和技術支持)
7)失敗的可能性和後果嚴重性如何?
經過設計測試用例和執行測試計劃,能夠提供以上問題答案的信息。
1)試圖進行完美的測試,會讓你完蛋
2)測試人員的職責是爲決定提供信息(但不是全部信息),作決定是經理要作的。
3)在作決定時應考慮全部相關信息,須要考慮開發人員、測試人員和用戶等人的意見。
4)因懼怕未按計劃交付產品,就交付盡是錯誤的產品,可能致使公司巨大損失。
5)測試只是收集有關產品的信息,測試自己不會修復發現的錯誤。測試不會改進產品,改進是由那些修復測試發現缺陷的人實現的。
6)不存在一個「測試階段」只進行測試,測試應該是貫穿於整個項目。
若是存在任何緣由致使不須要使用測試結果提供的信息,就沒有必要進行測試。測試獲得的信息不可靠,也沒有必要測試。
軟件行業的經理常常須要作出帶風險的決定,一般在得到部分信息的狀況下作出決定是比較保險的。但有些時候經測試得到信息可能會增長決定的風險。
1)對項目進行太多測試,可能推遲發佈產品而不能及早進入市場;
2)測試提供的信息,開發人員因測試提供的信息,進行的程序修復可能會破壞程序其餘部分的運行;
3)測試發現問題,可是並未引發重視進行修復,可能會致使後續的問題。
須要解釋並使用測試產生的信息。
1)測試人員提交測試報告後,應對報告進行仔細審覈,找到有用的信息;
2)測試人員不清楚怎麼測試,應對他們進行培訓;
3)測試人員不能很好理解軟件,應對他們進行培訓;
人們存在一種感情傾向,不但願發現本身犯了錯誤。因此人們會作出與理性使用信息沒有關係的決定。
考慮不周的測試或者執行過程不佳的測試都屬於「不良測試」。這樣的測試會讓人認爲產品的質量高於實際質量,致使提早交付。或者產品質量低於實際質量,致使推遲交付,損失效益。這都是不可取的。
有如下幾種狀況,說明產品還沒有準備好接受測試,那麼就沒有必要進行測試,狀況以下:
1)測試是否有助於解決產品存在的至少一個問題?
2)是否但願知道該問題的答案?
3)是否只是漫不經心地對待測試結果?須要對測試發現的問題追根究底。
4)是否預先和測試人員就經過測試的標準達成一致?
5)若是不能,怎樣纔算經過測試?
6)是否定爲測試的結果會替你作出決定?不可能從純技術的角度作出商業決定。可使用測試獲得的信息來支持商業決策。
7)測試結果可否是你改變決定?
1)既然僱傭測試人員,就要相信他們的測試結果。若是不信任他們,要麼是選錯了人,要麼就須要幫助他們提升可信度。
2)不能讓測試人員代替經理作決定,他們只是提供信息。
3)不使用測試提供的信息,就最好不要進行測試。
4)在作出決定時,要冷靜並控制好本身的情緒,儘可能用理性進行決定。
5)要對測試數據進行評估。數字自己只是數字。要學會問:得到這一數字的過程是什麼?這個數字有何含義?
6)測試是一項技術開發支持活動,須要和需求、設計、編程、文檔、製造及支持過程協調起來。同時要給開發人員必要時間和資源來修復測試中發現的問題。
7)不要催促測試人員進行測試,測試是很是精細的工做。催促測試人員容易產生危險的有誤導性的結果,尤爲在測試人員感到懼怕、疲勞或變現憤世嫉俗時。
8)測試經理也須要了解測試過程,因此須要任命有測試經驗的人擔任測試經理。
9)不少看起來非理性的決定在不一樣的價值取向下是理性的。記住這一原則,能夠避免經理、測試人員和開發人員之間的許多衝突。
10)測試產生的信息用途不少,交付產品後進行測試,能夠收集對客服和支持人員有用的信息。
本章主要介紹不對全部可能性進行測試的緣由,對於經理和測試人員,都應該瞭解測試是一種採樣過程,須要瞭解採樣給測試所帶來的風險。
若是不能查看代碼內部邏輯,可輸入的測試用例是無限的。固然還有在不一樣配置下進行測試,不一樣製造商、不一樣驅動程序、不一樣操做系統、測試執行的順序、不一樣的內存等等。這樣算來可測試的用例確實是無限多。
因爲咱們沒法測試全部可能性,任何實際的測試集(測試用例)都是某種程度的樣本——表明整個可能測試集合的一個部分或片斷。因此測試就是用樣本集對程序進行採樣。
採樣也是一個心理過程,也是一個感性過程。令某人滿意的樣本也許會讓另外一我的以爲不滿意。
咱們如何決定採那些樣?如何知道是否獲取足夠大的樣原本充分表明全部狀況?如何知道得到了合適的樣本?
1)但願測試可以覆蓋全部使人感興趣的條件;
有些缺陷是測試員偶然發現,而不是精心設計的用例發現的。有沒有什麼心理學方法能夠幫助發現更多使人吃驚的缺陷?
2)但願講測試集減小到能夠管理、能夠承受的程度。
首先,認識到測試集都是一種採樣方法,而後不管你有多少資源,都要儘量選擇那些具備最強表明性的測試集。
1)要理解測試便是採樣過程,無論用哪一種方法,都要準備好應對出現採樣錯誤的可能性。
2)獲取信息的成本可能超過信息帶來的好處。某些測試可能花費大量力氣,可是效果並很差。
3)人不能進行窮舉測試,測試工具更不能。
3)減小測試資源後,最簡單的方法是限制樣本的規模。規模減小可能出現採樣錯誤,多樣化的樣本發現的問題可能會超過大樣本發現的問題。因此與擴大測試團隊相比,讓測試團隊成員多樣化也可能會發現更多的問題。