顛覆完美軟件:軟件測試必須知道的幾件事(讀書筆記2)


  一、為什么要進行測試?(第1章)

  1、人類的思維不完美

    我們的思維是不完美,無論我們多想盡力的完成一項工作,都會可能會在某一點上出錯。我們要讓自己做出的決定比不進行測試的時候要更好。

  2、通過測試決定軟件產品是否能賣出去

    作為軟件生產者,我們要通過測試來了解軟件產品是否能夠賣出去。要從客戶的角度去進行測試。

  3、決定可能有風險

    風險的評估存在主觀性:1.風險是針對未來進行評估的,未來可能會發生任何事情;2.不同人對同一種風險的感受是不同的。

    通過測試獲取的信息能夠降低決策帶來的風險。

  4、測試可以提供降低風險的信息

    因為不同的人,不同的項目,不同的時間都意味着對風險的不同理解。需要設計對應的測試來回答不同的問題。

    1)軟件是否能夠做我們希望它做的工作?

    2)如果軟件不能做我們希望它做的工作,需要多掃工作才能解決這個問題?

    3)軟件是否做了我們不希望它做的事?

    4)軟件是否能夠達到我們的預期(有沒有實現其目的)?

    5)軟件能夠做用戶希望它做的事嗎(用戶滿意嗎)?

    6)軟件是否滿足了其他的商業要求?(計划外的維護和技術支持)

    7)失敗的可能性和后果嚴重性如何?

    通過設計測試用例和執行測試計划,可以提供以上問題答案的信息。

  5、相關常識

    1)試圖進行完美的測試,會讓你完蛋

    2)測試人員的職責是為決定提供信息(但不是所有信息),做決定是經理要做的。

    3)在做決定時應考慮所有相關信息,需要考慮開發人員、測試人員和用戶等人的意見。

    4)因害怕未按計划交付產品,就交付滿是錯誤的產品,可能導致公司巨大損失。

    5)測試只是收集有關產品的信息,測試本身不會修復發現的錯誤。測試不會改進產品,改進是由那些修復測試發現缺陷的人實現的。

    6)不存在一個“測試階段”只進行測試,測試應該是貫穿於整個項目。

  二、什么時候可以不進行測試?(第2章)

    如果存在任何原因導致不需要使用測試結果提供的信息,就沒有必要進行測試。測試得到的信息不可靠,也沒有必要測試。

  1、測試后風險增加

    軟件行業的經理經常需要做出帶風險的決定,通常在獲得部分信息的情況下做出決定是比較保險的。但有些時候經測試獲得信息可能會增加決定的風險。

    1)對項目進行太多測試,可能推遲發布產品而不能及早進入市場;

    2)測試提供的信息,開發人員因測試提供的信息,進行的程序修復可能會破壞程序其他部分的運行;

    3)測試發現問題,但是並未引起重視進行修復,可能會導致后續的問題。

  2、對測試反饋的信息無動於衷

    需要解釋並使用測試產生的信息。

    1)測試人員提交測試報告后,應對報告進行仔細審核,找到有用的信息;

    2)測試人員不清楚怎么測試,應對他們進行培訓;

    3)測試人員不能很好理解軟件,應對他們進行培訓;

  3、因感性而非理性所做的決定

    人們存在一種感情傾向,不希望發現自己犯了錯誤。所以人們會做出與理性使用信息沒有關系的決定。

  4、不良的測試

    考慮不周的測試或者執行過程不佳的測試都屬於“不良測試”。這樣的測試會讓人認為產品的質量高於實際質量,導致提前交付。或者產品質量低於實際質量,導致推遲交付,損失效益。這都是不可取的。

  5、產品沒有准備好接受測試

    有以下幾種情況,說明產品尚未准備好接受測試,那么就沒有必要進行測試,情況如下:

    1)測試是否有助於解決產品存在的至少一個問題?

    2)是否希望知道該問題的答案?

    3)是否只是漫不經心地對待測試結果?需要對測試發現的問題追根究底。

    4)是否預先和測試人員就通過測試的標准達成一致?

    5)如果不能,怎樣才算通過測試?

    6)是否認為測試的結果會替你做出決定?不可能從純技術的角度做出商業決定。可以使用測試得到的信息來支持商業決策。

    7)測試結果能否是你改變決定?

  6、相關常識

    1)既然雇佣測試人員,就要相信他們的測試結果。如果不信任他們,要么是選錯了人,要么就需要幫助他們提高可信度。

    2)不能讓測試人員代替經理做決定,他們只是提供信息。

    3)不使用測試提供的信息,就最好不要進行測試。

    4)在做出決定時,要冷靜並控制好自己的情緒,盡量用理性進行決定。

    5)要對測試數據進行評估。數字本身只是數字。要學會問:獲得這一數字的過程是什么?這個數字有何含義?

    6)測試是一項技術開發支持活動,需要和需求、設計、編程、文檔、制造及支持過程協調起來。同時要給開發人員必要時間和資源來修復測試中發現的問題。

    7)不要催促測試人員進行測試,測試是非常精細的工作。催促測試人員容易產生危險的有誤導性的結果,尤其在測試人員感到害怕、疲勞或變現憤世嫉俗時。

    8)測試經理也需要了解測試過程,所以需要任命有測試經驗的人擔任測試經理。

    9)很多看起來非理性的決定在不同的價值取向下是理性的。記住這一原則,可以避免經理、測試人員和開發人員之間的許多沖突。

    10)測試產生的信息用途很多,交付產品后進行測試,可以收集對客服和支持人員有用的信息。

  三、為什么不進行窮舉測試?(第3章)

    本章主要介紹不對所有可能性進行測試的原因,對於經理和測試人員,都應該了解測試是一種采樣過程,需要了解采樣給測試所帶來的風險。

  1、可進行測試的數目是無限的

    如果不能查看代碼內部邏輯,可輸入的測試用例是無限的。當然還有在不同配置下進行測試,不同制造商、不同驅動程序、不同操作系統、測試執行的順序、不同的內存等等。這樣算來可測試的用例確實是無限多。

  2、測試最多只是采樣

    由於我們無法測試所有可能性,任何實際的測試集(測試用例)都是某種程度的樣本——代表整個可能測試集合的一個部分或片段。所以測試就是用樣本集對程序進行采樣。

    采樣也是一個心理過程,也是一個感性過程。令某人滿意的樣本也許會讓另一個人覺得不滿意。

    我們如何決定采那些樣?如何知道是否獲取足夠大的樣本來充分代表所有情況?如何知道獲得了合適的樣本?

  3、用有限資源和時間進行良好的測試

    1)希望測試能夠覆蓋所有令人感興趣的條件;

      有些缺陷是測試員偶然發現,而不是精心設計的用例發現的。有沒有什么心理學方法可以幫助發現更多令人吃驚的缺陷?

    2)希望講測試集減少到可以管理、可以承受的程度。

      首先,認識到測試集都是一種采樣方法,然后無論你有多少資源,都要盡可能選擇那些具有最強代表性的測試集。

  4、相關常識

    1)要理解測試即是采樣過程,不管用哪種方法,都要准備好應對出現采樣錯誤的可能性。

    2)獲取信息的成本可能超過信息帶來的好處。某些測試可能花費大量力氣,但是效果並不好。

    3)人不能進行窮舉測試,測試工具更不能。

    3)減少測試資源后,最簡單的方法是限制樣本的規模。規模減少可能出現采樣錯誤,多樣化的樣本發現的問題可能會超過大樣本發現的問題。所以與擴大測試團隊相比,讓測試團隊成員多樣化也可能會發現更多的問題。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM