MILY: SimSun">接著,來談談程序員方面會產生的錯誤認識吧!這個方面可能在具體實踐中顯的更重要。
由于作者在開篇就先把三個錯誤認識給擺到讀者的眼前;然后就立馬表明了其正確的定義,并給予了分析和對錯誤認識的駁斥。洋灑灑的寫了許多,條理上未免會有些混亂。因此,我就按照自己理解的來小結一下吧!
首先,測試的正確定義是:測試是為發現錯誤而執行程序的過程。該定義暗示了兩層含義:
-
對于一個特定的程序,應該如何設計測試用例(測試數據)、哪些人應該而哪些人又不應該執行測試。(這是有關測試人員構成的問題。就自己的親身經歷而言,這一點很重要,因為測試人員的態度要比測試的過程更為重要。)
然后,明確測試的正確含義后,探究了一下現今面臨的三個錯誤認識并逐一給予了充分的駁斥。
-
“軟件測試就是證明軟件不存在錯誤的過程”。
-
若目的僅是為了證明程序中不存在錯誤,就會在潛意識中傾向于實現這個目標;即,會傾向于選擇可能較少導致程序失效的測試數據;若目標在于證明程序中存在錯誤,設計的測試數據就有可能更多地發現問題。后者肯定比前者會更多地增加程序的價值。
-
心理上,對于證明不存在是一個不可能完成的任務,無論該工程多么;但若是一個尋找錯誤的任務,是可以完成的。就心理承受而言,也是更容易接受的。
-
-
“軟件測試的目的在于證明軟件能夠正確完成其預訂的功能!
-
心態上,不要本著只是為了證明程序能夠正確運行而去測試程序,而應該一開始就假設程序中隱藏著錯誤(這種假設對于幾乎所有的程序都成立)。這樣測試程序時,才能夠發現盡可能多的錯誤。
-
-
“軟件測試就是建立一個‘軟件做了其應該做的’信心的過程!
-
錯誤認識的關鍵在于:程序即使能夠完成預定的功能,也仍然可能隱藏錯誤。即,當程序沒有實現預期功能時,錯誤是清晰地顯現出來的。但如果程序做了其不應該做的,這同樣也是一個錯誤。
-
而后一方面一般都會人為的想當然,認為系統不會做那些事情的。但不通過實踐去證明,一切都是不可預計到的。
-
總體而言,軟件測試更適宜用來作為一個試圖發現程序中錯誤(假設其存在)的破壞性的過程。一個成功的測試用例,通過誘發程序發生錯誤,可以在這個方向上促進軟件質量的改進。當然,最終還要通過軟件測試來建立某種程度的信心;軟件做了其應該作的,未做其不應該作的。通過對錯誤的不斷研究是實現這個目的的最佳途徑。
需要明確的一點是,針對有人可能會聲稱“本人的程序完美無缺(不存在錯誤)”的這種情況而言,建立起信心的最好辦法就是盡量去反駁他,即努力發現不完美指出,而不只是確認程序在某些輸入情況下能夠正確地工作。
文尾,我想到了高爾基先生在《海燕》里邊的一句話:讓暴風雨來的更猛烈些吧!不妨,讓測試變的更加瘋狂一些吧!
延伸閱讀
文章來源于領測軟件測試網 http://www.k11sc111.com/