標籤:style 使用 strong sp 資料 on bs 工作 line
軟體測試的心理學:
測試執行的差,其中一個主要原因在於大多數的程式員一開始就把測試這個術語的定義搞錯了,他們可能會認為:
- “軟體測試就是證明軟體不存在錯誤的過程”
- “軟體測試的目的在於證明軟體能夠正確完成其預定的功能”
- “軟體測試就是建立一個‘軟體做了其應該做的’信心的過程”
這些定義都是本末倒置的。
對於測試,更為合適的定義應該是:
“測試是為發現錯誤而執行程式的過程”
我們可以類比一下病人看醫生的情況,病人因為身體不舒服而去看醫生。如果醫生對病人進行了一些實驗檢測,卻沒有診斷出任何病因,我們就不會認為這些實驗測試是“成功的”。之所以是“不成功的”檢測,是因為病人支付了昂貴的醫藥費,而病狀任然存在。病人會因此而質疑醫生的診斷能力。但是,如果實驗檢測診斷出病人是胃潰瘍,那麼這檢測就是“成功的”,醫生可以進行適當的治療。因此,醫學界會使用“成功的”或“不成功的”來表達適當的意思。我們可以類推到軟體測試中來,當我們開始測試某個程式的時候,它就好似我們的病人。
軟體測試的經濟學:
軟體測試是否能夠發現“所有”的錯誤。答案是否定的。
為了應對測試經濟學的挑戰,應該在開始測試之前建立某些策略。黑箱測試和白盒測試是兩種最普遍的策略。
1. 黑箱測試
又稱為資料驅動的測試或輸入/輸出驅動的測試。測試的目標與程式的內部機制和結構完全無關。
2. 白盒測試
又稱邏輯驅動的測試。
軟體測試的原則:
- 測試案例中一個必須部分是對預期輸出或接過進行定義
- 程式員應避免測試自己編寫的程式
- 編寫軟體的組織不應當測試自己編寫的軟體
- 應當徹底檢查每個測試的執行結果
- 測試案例的編寫不僅應當根據有效和預料到的輸入情況,而且也應當根據無效和未預料到的輸入情況
- 檢擦程式是否“未做其應該做的”僅是測試的一半,測試的另一半是檢查程式是否“做了其不應該做的”
- 應避免測試案例用後即棄,除非軟體本身就是個一次性的軟體
- 計劃測試工作時不應默許假定不會發現錯誤
- 程式某部分存在更多錯誤的可能性,與該部分已經發現錯誤的數量成正比
- 軟體測試是一項極富創造性,極具智力的挑戰性的工作
測試的藝術: 軟體測試的心理學和經濟學