關鍵字:程序員 測試技巧
如果要寫JUnit測試代碼,應該從哪里開始呢? 本書的第一部分為有效的使用JUnit設計和測試Java代碼奠定了基礎。一旦你能理解這部分介紹的技巧,并能熟練地在實際工作中應用它們,你就會永遠使用下去——因為所有的測試,其實都可以分解為后面幾章中將要介紹的一個或者幾個技巧。問題在于,你如何在工程級的特定Java應用的代碼和類結構中,認出這些簡單的小模式。因此,在對付大的問題之前,讓我們首先處理這些小問題。
到第1部分結束的時候,你將學習到60多個重要的JUnit技巧,它們涵蓋了測試的各個方面:編寫、組織、創建和執行測試,還有如何維護測試數據以及如何匯報測試結果。第2、第3部分的技巧經常會用到第1部分介紹過的技巧,因此請做好隨時回頭查閱的準備。很快,你就會對這部分介紹的技巧非常熟悉。
本章主要內容:
■ 有關程序員測試的介紹
■ JUnit入門
■ JUnit的一些經驗之談
■ 什么時候使用測試而不是調試
我們痛恨調試程序。
你抬頭看看墻上的鐘,發現已經很晚了,因為今天晚上還有一堆的錯誤需要糾正,F在已經到了“編碼與糾正”階段的糾正部分了,并且這個階段已經持續了三個月。到了這個時候,你可能幾乎已經忘記你們家是什么樣的了。你現在比以前任何時候都熟悉的是辦公室的四面墻——假設你真的有四面墻可以看到。當你盯著“關鍵錯誤”列表的時候,發現有一個問題又回來了,你還以為一個星期前就已經解決了呢!這些該死的測試人員什么時候能夠讓你安靜一會兒呢!
先啟動調試工具,再啟動應用服務器——趕緊呷一口咖啡,你可能只有5分鐘的空閑時間——然后你需要設置一兩個斷點,在10個文本區輸入一些數據,然后點擊“GO”按鈕。調試器會在第一個斷點停下來。你的目的是找到哪個對象老是產生錯誤的數據。當你一步步地調試代碼的時候,偶爾性的肌肉痙攣——明顯是睡眠不足造成的——會讓你忽略那些可能產生問題的代碼,F在你必須將應用服務器停下來,重新啟動調試器,再重新啟動應用服務器。利用這個間隙,抓起一塊已經變味的糕點,喝下六個小時以前沖的苦咖啡。這樣的工作有意思嗎?
哦不!就算最有毅力的人也會說,“我寧愿做一個測試人員!”
1.1 What is Programmer Testing什么是程序員測試
程序員測試并不是對程序員進行測試,而是有關程序員所進行的測試工作。近幾年,一些編程人員發現如果自己去編寫測試程序會帶來很多好處,這種好處是以前“讓測試部門來管”所 沒有的。修正錯誤非常困難,主要是因為花時間太多:不僅測試人員需要花很多時間來發現錯誤,并且要給程序人員提供足夠的信息來重現這個錯誤;編程人員也要 花費很多時間,從幾個月前看過的代碼中找到錯誤產生的原因。還有很多時間花在討論這些究竟是不是一個錯誤,弄清楚為什么程序員會犯如此幼稚的錯誤,是不是 測試人員干擾了他們的工作?是不是需要讓測試人員遠離程序員而不去打擾他們等等。如果程序員自己測試他們自己的代碼,那么就可以節省很多時間。
程序員所做的測試一般叫做“單元測試”。但是我們在這里不想使用這個詞語,因為這個詞被過度地使用和濫用,通常它帶來的混亂比它所能解釋的意思還要多。在程序員社區中,我們不能統一地確定“單元”是什么——是一個方法嗎?是一個類嗎?還是一段代碼呢?如果我們不能就“單元”達成共識,那么就不用說“單元測試”了!這也是為什么我們使用“程序員測試”來表示程序員自己所做的測試工作。這也是我們為什么使用“對象測試”來表示對單獨對象的測試。將不同的對象隔離開單獨測試,是這本書中主要涉及到的測試方式。也許這和你所想象的測試工作有出入。
有一些程序員是這樣測試他們的程序的:先在某些特定的行上設置一些斷點,然后再將應用程序運行在“調試”的模式上,一行一行地步入他們的程序,并且檢查相應變量的數值。嚴格地說,這就是“程序員測試”。因為這是程序員在測試自己的程序。但是這樣做會帶來很多缺點,包括;
需要調試工具,這并不是所有的人都已經安裝或愿意安裝的。
在執行測試以前,需要有人去設置斷點;在測試完成以后再將這些斷點去掉。如果要進行多次測試的話,這樣做非常麻煩。
需要知道和記住這些變量所希望的數值。這就使得其他人來執行這些測試非常困難,除非他們能夠知道和記下同樣的數值。
想要測試任何的代碼片段,就必須了解整個應用程序是怎樣工作的,需要花一段漫長的時間來進行一系列鍵盤的輸入和鼠標的點擊。這會使一個測試的執行過程非常容易出錯。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/