軟體測試的藝術 CH2

2022-08-28 03:00:11 字數 1485 閱讀 8795

by glenford j. myers(u.s.a)

測試是為發現錯誤而執行程式的過程

軟體測試心理學

人類的行為總是傾向於具有高度目標性,建議乙個正確的目標有重要的心理學影響,如果我們的目標在於證明程式中的錯誤,那我們設計的測試資料就會發現更多的問題,

反之,則相反。

如果在測試階段發現了錯誤並且成功得到修復,那麼測試是成功的

如果本次測試可以確定再無其它可以查出的錯誤,那麼本次測試仍然是成功的

總結,軟體測試更適宜被視為試圖發現程式中錯誤的破壞性過程。乙個成功的測試用例,通過誘發程式發生錯誤,從而在這個方向上可以促進軟體質量的改進。

最終我們通過軟體測試來建立某種程度的信心:軟體做了該做的,未做其不該做的,通過對錯誤的不斷研究是實現這個目的的最佳途徑。

軟體測試經濟學

軟體測試是否能夠發現「所有」的錯誤?一般來說這是不切實際的。這個基本的問題反過來暗示出軟體測試的經濟學問題,即測試人員對被測軟體的期望,以及測試用例的

設計方式。

為了應對經濟學上的挑戰,應該在測試之前建立某些策略

黑盒測試

又成為資料驅動的測試或者輸入/輸出驅動的測試。程式視為乙個黑盒子,重點集中在發現程式不按其規範正確執行的環境條件。

這種方法如果想要發現所有的錯誤,就要窮舉輸入測試資料,這當然是不可能完成的任務。

故這種方法目標在於如何通過有限的測試用例集,最大限度的提高發現問題的數量,以取得最好的測試效果,當然要實現這個目標,還需要能夠窺見軟體的內部,對程式

做一些合理的假設,如 2,2,2是乙個等邊三角形,那麼有理由相信 3,3,3也會被程式認定為等邊三角形。

白盒測試

又稱邏輯驅動的測試,允許我們檢查程式的內部結構。

軟體測試的重要原則

1. 測試用例中的乙個必需部分是對預期輸出或結果的定義

乙個測試用例必需包含兩個部分

1.對程式輸入資料的描述

2.對程式在上述輸入資料下的正確輸出結果的精確描述

2. 程式設計師應當避免測試自己編寫的程式

處於心理學層面,應當避免讓程式設計師直接測試自己編寫的程式,讓其它人來測試程式會更加有效,也更容易測試成功

3. 應當測查每個測試的執行結果

常常被忽視檢查執行結果,導致遺漏場景

4. 不僅要輸入有效的資料場景,也要輸入無效和未預料的輸入情況

5. 程式某部分存在更多錯誤的可能性,與該部分已經發現的錯誤數量成正比

錯誤總是傾向於聚集存在,最好對容易存在錯誤的部分進行額外的測試,以獲取更大的成效。

小結1. 軟體測試是為發現錯誤而執行程式的過程

2. 盡量避免編碼人員測試自己編寫的程式

3. 好的測試用例對未發現的錯誤高度敏感

4. 成功的測試用例能夠發現未知的錯誤

5. 成功的測試用例要仔細定義輸入輸出的期望值

6. 成功的測試需要仔細分析測試結果

解題報告 ch2

127 accordian patience 1.測試資料大約30000條 使用stl的stack就是屎 用兩層vector,並利用線性表可以在規定的時間內解決掉 101 the blocks problem 1.思路 使用線性表來解決,記錄每個pile的初始方塊,記錄每個方塊的left 和 rig...

資料結構 ch2測試題

1.單選題 4 分 用單鏈表方式儲存的線性表,儲存每個結點需要兩個域,乙個是資料域,另乙個是 b a.當前結點的所在位址 b.後繼結點的所在位址 c.空指標域 d.空閒域 儲存結點 資料域 指標域 空指標 null,沒有基型別的指標,如malloc建立的指標。2.不帶頭結點的單鏈表head為空的判定...

ch2 基本工具介紹

安裝miniconda3作為python環境。如果配置了cuda,可以安裝tensorflow gpu。資料預處理 numpy 提供高效的n維陣列和向量計算 scipy 依賴numpy,提供高效數值計算,包含函式最優 數值積分等任務模組 pandas 資料結構和資料分析庫。包含高階資料結構和類sql...