一、簡介(Introduction) 你可能已經聽說了這個新名詞:測試驅動的開發(test-driven development),它在廣大、各種雜志和網絡中程序員常去的地方都非常流行。它究竟是什么呢?測試驅動的開發是一種方法理論,它強調把測試作為開發過程的一個主要部分。要是關心程序質量的話,在部署之前前就應該測試。幾乎所有人都使用某種方法進行測試,所以你可能會問:測試不已經是開發過程的一個部分了嗎?測試驅動的開發要讓測試成為開發過程的主要部分。 二、手工測試(Manual Testing) 早期的軟件開發時,許多人的測試方法就是運行程序,通過手工操作來指定輸入然后觀察輸出,F在還有很多軟件的開發繼續著這種方式。它有一個關鍵的優點:非常容易學習和理解。如果你有鍵盤和鼠標,并且會操作圖形界面,你就可以測試任何桌面應用。如果你有瀏覽器,你還可以測試應用。這根本談不上什么技巧,你可以認為所有開發人員都能做到。手工操作時你看到的應用和最終用戶看到的完全相同,這也是一個不錯的主意,但并不是真正的優點,因為其它的測試方法也能做到。 手工測試的缺點就實在太多了: 手工測試需要反復進行。每一次修改程序,不管是增加新特征,改變已有行為,還是修改bug,你都必須重新測試被影響的部分,才能保證你增刪改的代碼不會造成破壞。 手工測試可能帶來錯誤。人類不適合作重復性的工作,特別是這個工作還很煩人的話。人類經常忽略細節,這會導致代碼被破壞。更可能造成的問題是:修改這個地方,可能會影響到另一些代碼的行為,盡管它們的關系不是很明顯。因此,即使你作了非常認真負責的測試,那也只限于你認為修改可能影響到的部分,你還是有可能會在其它地方漏掉一些bug或被破壞的功能,不是因為你不夠仔細,而是因為軟件開發是綜合性的工作,軟件的各個部分常常有關聯,在現在的軟件項目中,任何人都不可能詳細了解某段代碼所有的依賴和被依賴關系。 手工測試無法對不可視組件進行單獨測試。如果你只測你能看到的,那你就沒測你看不到的。這看上去是非常簡單的一個命題,但它的意義重大。軟件是復雜的,為了定位和解決錯誤或被破壞的代碼,大量形態各異的bug需要通過“剝繭抽絲”式的測試去分析每一個組件的行為。對于端軟件尤為如此。服務器端程序中,幾乎所有的重要代碼都在邏輯層,如基于web的程序。表示層測試只能間接的測試業務邏輯,可能忽略某些細節。你當然希望邏輯層和表示層都能很好的工作,但邏輯層正常工作是整個應用能正常運行的基礎。 如果你的測試是手工進行的,別人就沒法判斷你的程序功能是否正確。其他人(例如其他開發人員或者甚至是最終用戶)只能接受你的承諾:你作了測試,各方面都滿足需求。除了你的書面或口頭聲明保證你對程序作過測試它滿足所有可視的檢查外,其他人沒辦法驗證功能正確,除非他們自己辛苦的作一遍測試,但這個工作可能并不適合他們,因為他們不熟悉程序的邊界條件和邏輯。 三、自動測試(Automated Testing) 自動測試解決了手工測試的不足。因此,要回答“除了軟件開發中一直在做的那些事情外,測試驅動的開發到底意味著什么?”這個問題,測試驅動的開發在整個開發過程中引入自動測試,并不斷改進這些測試以適應程序代碼的擴展。注意這中間的兩個要點,第一,測試是自動的表示它不但可以重復進行,還要很方便移植,可重復是指你可以一遍又一遍的對同樣的代碼進行測試,并且每次都得到同樣的結果;方便移植是指別人可以使用你的測試,自己來驗證你的程序是否能通過這些測試。第二點要求測試的改進包含到程序本身代碼的改進中,測試落后于代碼可不是件好事,因為這樣測試就不能真正的驗證程序功能正確與否,因此測試代碼需要與應用本身的代碼保持同步前進。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/
關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved 北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5 技術支持和業務聯系:info@testage.com.cn 電話:010-51297073 老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|