??? 好久沒來,這本書看了好久了,接著第7章...
??? 1.軟件測試的五個棘手問題
??? 軟件測試作為控制和減少軟件錯誤的過程,本身也具有嚴重的不足。包含5種令人擔憂的棘手問題。
??? 1)漫無目的
??? 軟件測試不是簡單地拿起來就做的事情,它要求有計劃、有準備、有策略和有多變的戰術,這是成功進行軟件測試的前提。
??? a)決定測試什么
??? 軟件測試開始通常是把一個應用程序分成組件或特性,然后把測試人員或測試小組分配到每一個組件或每一個特性。但用戶關心的是功用,即如何通過組件和特性做希望做的事。如果根據功用來進行測試,我們的測試就會更接近于實際的使用情況。
??? b)決定何時測試
??? 發現一個輸入字段應該只接受數字輸入卻接受了字符輸入,或經常發現同一種缺陷反復出現,這種被稱為“錯誤噪音”。在最理想的情況下,所有這類問題應該已經在前期的開發人員自我測試、單元測試或代碼審核過程中被發現。
??? 對于每一個被發現的缺陷,明確地討論它應該在什么時候被發現。基于缺陷的歷史數據分析,我們將學會如何在代碼審查、單元測試或其他方面有針對性地進行工作。
??? c)決定如何測試
??? 許多團隊做了大量的研究工作來尋找測試技術與缺陷之間的對應關系,可以將某些缺陷類別和某些漫游路徑或測試技術聯系在一起,從而讓測試人員知道:“這種功能或特性最好用這種給定的方法來測試”。
??? 2)重復性
??? a)知道已經運行過哪些測試
??? 農藥悖論:一旦測試套件發現了大量缺陷后,那些沒被發現的缺陷會對測試套件的未來效用產生免疫力。
??? b)知道什么時候注入變異
??? 漫游測試時,使用不同順序、不斷變化的數據和環境也會起到變化的作用。殺蟲劑上的標簽顯示了該殺蟲劑對哪些蟲子有效果,測試方法也可以貼上類似的標簽。
??? 3)暫時性
??? 大多數測試人員不生活在軟件中,他們只是“暫住”而已。把用戶帶入測試實驗室,這種“帶入”可以是親自帶入用戶或是從概念上加以考慮。
??? 應用程序出廠后項目就結束,這樣的假設是完全錯誤的。我們忽略了保修期,這段時間仍然是測試環節的一部分。
??? 4)單調性
??? 測試需要決定測什么,知道如何把多種功能和環境考慮結合在一個測試中,設計出更高級的測試技術和概念,搞清楚一組測試如何幫助總體的測試策略。
??? 樂意花時間進行測試分類和測試策略設計的測試人員更注重于測試的有效性,因而在測試運行上花的時間就比較少。
??? 5)健忘性
??? 我們計劃測試、設計測試、運行測試、分析結果,測試結束后馬上就忘。測試用例并不是解決這種記憶問題的最好方法,而殺蟲劑悖論也降低了現有測試用例的價值。
??? 漫游測試在一定程度上效果更好,因為一條漫游路徑可以代表任何數據的實際測試用例。如果我們努力地把漫游路徑映射到軟件特性和缺陷上,我們會留下有關產品的記錄,它會幫助下一任測試人員了解內部情況,包括我們所做的測試哪些有效、哪些無效。
??? 2.總結
??? 擁有測試策略和規范的技術使得測試人員在處理他們的任務時目標更明確,這直接解決了無目標的問題。漫游路徑又迫使測試用例的產生具有更多變化,使重復性問題和單調性問題得到積極的處理。另外,漫游測試提供了測試技術的討論平臺,可以促進知識交流和建立測試文化,從而改善暫時性(沒有實際用戶時,盡量模擬實際情況)和健忘性問題。