Yes | No | |
What(列出一般現象) | ||
Where(說明發現現象的地點) | ||
When(列出現象發生時所有已知情況) | ||
How(說明現象的范圍和量級) |
而在“Yes”和“No”這兩列中,“Yes”描述了出現錯誤的現象的3W1H,“No”作為比較,描述了沒有錯誤的現象的3W1H。通過分析,找出矛盾來。
提出假設 :分析線索之間的關系,利用在線索結構中觀察到的矛盾現象,設計一個或多個關于出錯原因的假設。如果一個假設也提不出來,歸納過程就需要收集更多的數據。此時,應當再設計與執行一些測試用例,以獲得更多的資料。如果提出了許多假設,則首先選用最有可能成為出錯原因的假設。
證明假設 :把假設與原始線索或數據進行比較,若它能完全解釋一切現象,則假設得到證明;否則,就認為假設不合理,或不完全,或是存在多個錯誤,以致只能消除部分錯誤。
?、?演繹法排錯
演繹法是一種從一般原理或前提出發,經過排除和精化的過程來推導出結論的思考方法。演繹法排錯是測試人員首先根據已有的測試用例,設想及枚舉出所有可能出錯的原因做為假設;然后再用原始測試數據或新的測試,從中逐個排除不可能正確的假設;最后,再用測試數據驗證余下的假設確是出錯的原因。
演繹法主要有以下四個步驟:
列舉所有可能出錯原因的假設 :把所有可能的錯誤原因列成表。它們不需要完全的解釋,而僅僅是一些可能因素的假設。通過它們,可以組織、分析現有數據。
利用已有的測試數據,排除不正確的假設 :仔細分析已有的數據,尋找矛盾,力求排除前一步列出所有原因。如果所有原因都被排除了,則需要補充一些數據(測試用例),以建立新的假設;如果保留下來的假設多于一個,則選擇可能性最大的原因做基本的假設。
改進余下的假設 :利用已知的線索,進一步改進余下的假設,使之更具體化,以便可以精確地確定出錯位置。
證明余下的假設 :這一步極端重要,具體做法與歸納法的第4步相同。
6.3調試原則
在調試方面,許多原則本質上是心理學方面的問題。因為調試由兩部分組成,所以調試原則也分成兩組。
?、?確定錯誤的性質和位置的原則
用頭腦去分析思考與錯誤征兆有關的信息。最有效的調試方法是用頭腦分析與錯誤征兆有關的信息。一個能干的程序調試員應能做到不使用計算機就能夠確定大部分錯誤。
避開死胡同。如果程序調試員走進了死胡同,或者陷入了絕境,最好暫時把問題拋開,留到第二天再去考慮,或者向其它人講解這個問題。事實上常有這種情形:向一個好的聽眾簡單地描述這個問題時,不需要任何聽講者的提示,你自己會突然發現問題的所在。
只把調試工具當做輔助手段來使用。利用調試工具,可以幫助思考,但不能代替思考。因為調試工具給你的是一種無規律的調試方法。實驗證明,即使是對一個不熟悉的程序進行調試時,不用工具的人往往比使用工具的人更容易成功。
避免用試探法,最多只能把它當做最后手段。初學調試的人最常犯的一個錯誤是想試試修改程序來解決問題。這還是一種碰運氣的盲目的動作,它的成功機會很小,而且還常把新的錯誤帶到問題中來。
?、?修改錯誤的原則
在出現錯誤的地方,很可能還有別的錯誤。經驗證明,錯誤有群集現象,當在某一程序段發現有錯誤時,在該程序段中還存在別的錯誤的概率也很高。因此,在修改一個錯誤時,還要查一下它的近鄰,看是否還有別的錯誤。
原文轉自:http://www.uml.org.cn/Test/201511262.asp