版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Python自動單元測試框架自動單元測試框架軟件的測試是一件非常乏味的事情,在測試別人編寫的軟件時尤其如此,程序員通常都只對編寫代碼感興趣,而不喜歡文檔編寫和軟件測試這類“沒有創(chuàng)新”的工作。既然如此,為什么不讓程序員在編寫軟件時自己加入一些用于測試的代碼,使測試過程自動化呢?在軟件工程中,這一技術稱為自動單元測試,本文介紹在用Python開發(fā)軟件時如何實現(xiàn)這一目標。一、軟件測試一、軟件測試大型軟件系統(tǒng)的開發(fā)是一個很復雜的過程,其中因為人
2、的因素而所產生的錯誤非常多,因此軟件在開發(fā)過程必須要有相應的質量保證活動,而軟件測試則是保證質量的關鍵措施。正像軟件熵(softwareentropy)所描述的那樣:一個程序從設計很好的狀態(tài)開始,隨著新的功能不斷地加入,程序逐漸地失去了原有的結構,最終變成了一團亂麻(其實最初的“很好的狀態(tài)”得加個問號)。測試的目的說起來其實很簡單也極具吸引力,那就是寫出高質量的軟件并解決軟件熵這一問題??上У氖?,軟件開發(fā)人員很少能在編碼的過程中就進行軟
3、件測試,大部分軟件項目都只在最終驗收時才進行測試,有些項目甚至根本沒有測試計劃!隨著軟件質量意識的增強,許多軟件開發(fā)組織開始轉向UML、CMM、RUP、XP等軟件工程方法,以期提高軟件質量,并使軟件開發(fā)過程更加可控,好在這些方法對測試都提出了很嚴格的要求,從而使得測試在軟件開發(fā)過程的作用開始真正體現(xiàn)出來。軟件測試作為一種系統(tǒng)工程,涉及到整個軟件開發(fā)過程的各個方面,需要管理人員、設計人員、開發(fā)人員和測試人員的共同努力。作為軟件開發(fā)過程中的
4、主要力量,現(xiàn)今的程序員除了要編寫實現(xiàn)代碼外,還承擔著單元測試這一艱巨任務,因此必須采用新的工作模式:?編寫和維護一套詳盡的單元測試用例;?先構造單元測試和驗收測試用例,然后再編寫代碼;?根據(jù)構造的測試用例來編寫代碼。單元測試負責對最小的軟件設計單元(模塊)進行驗證,它使用軟件設計文檔中對模塊的描述作為指南,對重要的程序分支進行測試以發(fā)現(xiàn)模塊中的錯誤。由于軟件模塊并不是一個單獨的程序,為了進行單元測試還必須編寫大量額外的代碼,從而無形中增
5、加了開發(fā)人員的工作量,目前解決這一問題比較好的方法是使用測試框架。測試框架是在用XP方法進行單元測試時的關鍵,尤其是在需要構造大量測試用例時更是如此,因為如果完全依靠手工的方式來構造和執(zhí)行這些測試,肯定會變成一個花費大量時間并且單調無味的工作,而測試框架則可以很好地解決這些問題。使用Python語言的開發(fā)人員可以使用StevePurcell編寫的PyUnit作為單元測試框架,通過將單元測試融合到PyUnit這一測試框架里,Python程
6、序員可以更容易地增加、管理、執(zhí)行測試用例,并對測試結果進行分析。此外,使用PyUnit還可以實現(xiàn)自動單元測試(回歸測試)。二、規(guī)范二、規(guī)范Python單元測試單元測試測試是一個貫穿于整個開發(fā)過程的連續(xù)過程,從某個意義上說,軟件開發(fā)的過程實際上就是測試過程。正如MartinFowler所說的“在你不知道如何測試代碼之前,就不該編寫程序。而一旦你完成了程序,測試代碼也應該完成。除非測試成功,你不能認為你編寫出了可以工作的程序?!睖y試最基本的
7、原理就是比較預期結果是否與實際執(zhí)行結果相同,如果相同則測試成功,否則測試失敗。為了更好地理解PyUnit這一自動測試框架的作用,先來看一個簡單的例子,假設我們要對例1中的Widget類進行測試:else:print“test[Widget]:getSizedoesntwk!“#測試if__name__==__main__:myTest=TestWidget()myTest.testSize()稍一留心你不難發(fā)現(xiàn)這種手工測試方法存在許多問
8、題。首先,測試程序的寫法沒有一定的規(guī)范可以遵循,十個程序員完全可能寫出十種不同的測試程序來,如果每個Python程序員都有自己不同的設計測試類的方法,光維護被測試的類就夠麻煩了,誰還顧得上維護測試類。其次,需要編寫大量的輔助代碼才能進行單元測試,例1中用于測試的代碼甚至比被測試的代碼還要多,而這毫無疑問將增大Python程序員的工作量。為了讓單元測試代碼能夠被測試和維護人員更容易地理解,最好的解決辦法是讓開發(fā)人員遵循一定的規(guī)范來編寫用于
9、測試的代碼,具體到Python程序員來講,則是要采用PyUnit這一自動測試框架來構造單元測試用例。目前PyUnit已經得到了大多數(shù)Python開發(fā)人員的認可,成了事實上的單元測試標準。如果采用PyUnit來進行同樣的測試,則測試代碼將如例3所示:例3.auto.pyfromwidgetimptWidgetimptunittest#執(zhí)行測試的類classWidgetTestCase(unittest.TestCase):defsetUp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論