《软件测试的艺术》
1、每當測試一個程序時,應當想到要為程序增加一些價值。通過測試來增加程序的價值,是指測試提高了程序的可靠性或質量。提高了程序的可靠性,是指找出并最終修改了程序的錯誤。
因此,不要只是為了證明程序能夠正確運行而去測試程序;相反,應該一開始就假設程序中隱藏著錯誤(這種假設對于幾乎所有的程序都成立),然后測試程序,發現盡可能多的錯誤。
那么,對于測試,更為合適的定義應該是:
“測試是為發現錯誤而執行程序的過程”。
2、我們認為,如果在測試某段程序時發現了錯誤,而且這些錯誤是可以修復的,就將這次合理設計并得到有效執行的測試稱做是“成功的”。如果本次測試可以最終確定再無其他可查出的錯誤,同樣也被稱做是“成功的”。所謂“不成功的”測試,僅指未能適當地對程序進行檢查,在大多數情況下,未能找出錯誤的測試被認為是“不成功的”,這是因為認為軟件中不包含錯誤的觀點基本上是不切實際的。
3、窮舉輸入測試是無法實現的。這有兩方面的含義,一是我們無法測試一個程序以確保它是無錯的,二是軟件測試中需要考慮的一個基本問題是軟件測試的經濟學。也就是說,由于窮舉測試是不可能的,測試投入的目標在于通過有限的測試用例,最大限度地提高發現的問題的數量,以取得最好的測試效果。除了其他因素之外,要實現這個目標,還需要能夠窺見軟件的內部,對程序作些合理但非無懈可擊的假設
4、邏輯覆蓋測試。該測試要求程序中的所有判斷都應至少覆蓋一次,同時每一條語句或者入口點都被執行一次。
·等價類劃分。通過定義條件和錯誤類來幫助減少測試的工作量。這種劃分假設某分類的一個代表值能夠等價于屬于該分類的所有值或者條件。
·邊界值分析。測試等價類中每一個分類取邊界值時的情況,既要考慮輸入等價類,也要考慮輸出等價類。
·因果圖。通過生成布爾圖來詮釋測試用例的可能結果,使用該法旨在幫助選擇那些有效地測試用例達到比較完整的測試用例設計效果。
·錯誤猜測。依靠直覺和測試專家經驗來定位程序可能出錯的地方,并由此設計出更高效的測試用例。
總結
- 上一篇: Android--通知之Notifica
- 下一篇: hdu 3079水题