




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第卷第期年月計算機技術與發(fā)展)匱測試驅動開發(fā)及開發(fā)實踐張揚,黃厚寬(北京交通大學計算機與信息技術學院,北京)摘要:極限編程是適應于中小型團隊在需求不明確或迅速變化的情況下進行軟件開發(fā)的輕量級方法學。測試驅動開發(fā)作為極限編程思想的一種主要實踐,可以有效地讓程序開發(fā)人員開發(fā)出更高品質的、經(jīng)過完整測試的程序。文中介紹了測試驅動開發(fā)思想,對測試驅動開發(fā)過程給出了清晰的流程,總結了測試驅動開發(fā)的多種模式。最后介紹了如何用進行測試驅動開發(fā)。關鍵詞:極限編程;測試驅動開發(fā);中圖分類號:耶文獻標識碼:文章編號:(),(如蝴,):()(),舢,山:;極限編程與測試驅動開發(fā)極限編程(,)是適應于中小型團隊在需求不
2、明確或迅速變化的情況下進行軟件開發(fā)的輕量級方法學】。極限編程是一種輕量、高效、低風險、柔性、可預測、科學而且充滿樂趣的軟件開發(fā)方式。它作為一種方法論有如下特點:周期較短,在短周期內(nèi)進行早期、具體和持續(xù)的反饋。遞增地進行計劃編制。這種方法迅速提供一個總體計劃,然后在項目的整個生命周期內(nèi)不斷發(fā)展。具有針對不斷變化的業(yè)務需求靈活地對功能的實現(xiàn)進行計劃的能力。依賴于由程序員或客戶編寫的自動測試來監(jiān)控開發(fā)進度,使得系統(tǒng)得以發(fā)展并及早捕獲缺陷。依賴于口頭交流、測試和源代碼來溝通系統(tǒng)的結構和意圖。依賴于在系統(tǒng)存在期間一直持續(xù)的進化式設計過程。收稿日期:一一作者簡介:張揚(一),男,山西呂梁人,碩士研究生,研
3、究方向為數(shù)據(jù)挖掘與數(shù)據(jù)倉庫;黃厚寬,教授,博士生導師,研究方向為人工智能及模式識別。對程序員的技術水平要求不高,但要求他們緊密協(xié)作。既可滿足程序員的短期本能,也滿足項目的長期利益。極限編程有個原則,分別為溝通、簡單、反饋和勇氣。旨在采用許多只能通過溝通完成的實踐來保持良好的溝通,如單元測試、結對編程及任務估算。假設不用深謀遠慮,想的很深很遠才開始動手。它要求今天能實現(xiàn)今天的設計就可,不去預先考慮解決明天或后天的事情。強調即時的反饋。它有兩種反饋模式,分別以分鐘和天的級別進行反饋;以周和月的級別進行反饋。程序員為系統(tǒng)中所有可能出錯的邏輯編寫單元測試。他們每分鐘都得到有關系統(tǒng)狀態(tài)的具體反饋??蛻舾?/p>
4、兩到三周檢查一次日程,查看開發(fā)團隊的整體速度是否與計劃相符,并隨之調整計劃。要求程序員有勇氣即時地修復缺陷,即使這使原來運行通過的測試中出現(xiàn)了錯誤;如果一天快要結束,而代碼依然失控,要求程序員有勇氣放棄原來的代碼??傊?,極限編程要求程序員快速反饋,把每個問題都看成可以用近乎荒謬的簡單設計來解決,遞增進行微小更改來解決問題。測試驅動開發(fā)(,)作為編程思想的一種主要實踐,可以有效地讓程序開發(fā)人員開發(fā)出更高品質的、經(jīng)過完整測試的程序。測試驅動開第期張揚等:測試驅動開發(fā)及開發(fā)實踐發(fā)以測試作為開發(fā)過程的開端,它要求在編寫任何產(chǎn)品代碼之前,首先編寫用于定義產(chǎn)品代碼行為的測試,而編寫的產(chǎn)品代碼又要以使測試通
5、過為目標。不是一種開發(fā)工具,也不是一種測試方法,它是一種編碼之前進行單元測試的軟件開發(fā)思想。測試驅動開發(fā)過程與模式測試驅動開發(fā)流程 開發(fā)過程有別于傳統(tǒng)開發(fā)流程(),它在進行簡單的概要設計后,首先進行的是測試用例的編寫,然后執(zhí)行測試用例進行測試。測試失敗,則進行編碼驅使測試通過,這就是所謂的測試驅動。最終,測試得到通過,再對代碼進行重構,優(yōu)化代碼結構和性能。而傳統(tǒng)流程則先進行概要設計,然后在概要設計基礎上進行詳細設計,在詳細設計階段盡可能設想到全部問題和需求的解決方法,然后才開始編碼實現(xiàn)詳細設計。開發(fā)流程圖如圖所示。一、(翌苧蘭璺苧)圖開發(fā)流程圖測試驅動開發(fā)的精髓在于:將測試方案設計工作提前,在
6、編寫代碼之前先做這一項工作;從測試的角度來驗證設計,推導設計;同時將測試方案當作行為的準繩,有效地利用其檢驗代碼編寫的每一步,實時驗證其正確性,實現(xiàn)軟件開發(fā)過程的“小步快走”。測試驅動開發(fā)預期有更好的代碼質量。因為所有的代碼都是由測試驅動而來,所以所有代碼都是可以測試和必需的。在測試驅動開發(fā)過程中,調試較傳統(tǒng)開發(fā)方式更加容易,因為在此之前所有的代碼都已成功通過測試,總是由那些新添的測試或代碼引入的。在傳統(tǒng)的開發(fā)方式中,有時候程序員很難準確定位的真正所在,這是一件很頭疼的事情。測試驅動開發(fā)較之傳統(tǒng)流程開發(fā)有更小的開發(fā)壓力,它強調今天做好今天事情既可,而且盡可能簡甲地實現(xiàn)眼前的需求。而每一個今天的
7、開始又建立在正確而健壯的以往代碼的基礎上。測試驅動開發(fā)較之傳統(tǒng)流程開發(fā)有更快的開發(fā)速度,因為每一個當前需要實現(xiàn)的功能都有測試需求作為依托,從而明確并且規(guī)模很小,這有利于程序員所謂的“小步快走”。測試驅動開發(fā)的詳細開發(fā)過程如圖所示。圖詳細開發(fā)流程圖最后的重構步驟指在不改變代碼外在行為的前提下,對代碼做出修改,以改進程序的內(nèi)部結構,提高其可理解性,降低其修改成本。對極限編程而言,重構并非“預先設計”的替代品,只是減輕了“預先設計”的壓力??梢栽诘玫降谝粋€可被接受的解決方案后開始編程,而不需要保證“預先設計”正確無誤。重構應該隨時隨地進行。測試驅動開發(fā)模式在測試驅動開發(fā)中,關鍵的問題如下:什么時候進
8、行測試、如何選擇要測試的邏輯和如何選擇要測試的數(shù)據(jù)。測試驅動開發(fā)模式指導程序員如何解決上述問題。測試相互獨立。在測試驅動開發(fā)中,所運行的各種測試之間關系的期望狀態(tài)是沒有任何相互影響的。相互獨立的測試意味著所有的測試都是不依賴于順序的,可以隨便從這些測試中挑出部分測試來運行。程序員必須將自己的問題分解為一些彼此正交的小問題,這樣就使得為每個測試搭建環(huán)境簡單而快捷。獨立測試鼓勵利用高度內(nèi)聚、低度耦合的對象組合來解決問題。寫出測試列表。程序員在開始寫測試之前,應該寫一個包含所有必須要編寫的測試的清單。那么,記錄到列表上的就是當前程序員要去實現(xiàn)的測試。首先將需要實現(xiàn)的每種操作的范例都記錄在清單上。對于
9、目前尚不存在的操作,將其空版本記錄在清單上。測試和斷言優(yōu)先。在測試驅動開發(fā)中,程序員構建一個系統(tǒng)應該是從其對最終系統(tǒng)的描述開始的。程序員應該從希望最終代碼能夠通過的測試開始編寫一項功能。相應地,程序員應該從測試完成時能夠通過的斷言開始編寫一個測試。在測計算機技術與發(fā)展第卷試優(yōu)先的測試里程序員應該盡量使用容易讓人理解的數(shù)據(jù),一般不用一個常量來表達多種意思。一般從測試列表中選擇具有指導意義并且比較有把握實現(xiàn)的測試來進行編寫。當使用一個新類里的一種新的方法時,不直接用它來編寫程序,而是編寫一個小測試來驗證這個的工作是否符合人們的愿望。當出現(xiàn)某種與當前討論話題并不直接相關的想法時,那么就在列表中增加一
10、個測試然后重新回到論題上來。當發(fā)現(xiàn)一個錯誤的時候,首先寫個盡可能小的測試并使其運行,然后再去修復這個錯誤。利用進行測試驅動開發(fā)單元測試()指許多段的程序,寫這些程序的目的是用來成批執(zhí)行,以驗證程序員所寫的類(鶴)。每一格都負責送一個消息()給一個特定的,并且驗證所傳回來的值就是該所預期的答案。單元測試即用來測試程序員在主要程序中所有類的公共介面()的程式。單元測試的重點在于驗證程序員所寫方法()所產(chǎn)生的結果與預期相同。常用編程語言及其對應可用來進行作其測試工具的單元測試工具,如表所示。表單元測試工具表鋤毋瑚】面蚴單元測試框架眥就是語言的一套程序庫(),適合于普通程序員使用原本就熟悉的開發(fā)語言(
11、)以及開發(fā)工具()寫出這些單元測試來。源自于由(極限編程創(chuàng)始人)所設計的單元測試框架()。利用進行測試驅動開發(fā)在建立測試,并進行驅動開發(fā)?,F(xiàn)在開發(fā)一個“”的例子。按照的規(guī)則,應該在代碼建立以前先把測試寫好。為了能夠在某處開始,假設未來的類名是,并且有一個方法(),這個方法返回的值(例如“!”)。根據(jù)設定的程序功能,寫出測試代碼如下:;()();()();(“!”,();()();建立測試案例的步驟如下:)建立一個的實例。)定義一些以“”開頭的無返回方法(例如(),(),等等)。包含這些:的子類和一個叫做()的方法。這個方法調用了()函數(shù),它用來比較預期的值和由()返回的值。()方法用來運行測試
12、和顯示輸出。的處理測試,提供基于圖像和文本的輸出表現(xiàn)形式。我們使用基于文本的版本,因為支持它,且也適合我們。當開始運行后,基于文本的版本測試會以文本形式輸出,會把這些輸出自動變成圖像界面的輸出?,F(xiàn)在建立被測試代碼:()(“!”);狀態(tài)條為綠,測試通過,代碼實現(xiàn)既定目的。測試驅動開發(fā)中容易陷入的誤區(qū)測試驅動開發(fā)中容易陷入以下幾種誤區(qū):基于各種原因的不寫測試。程序員在很多情況下有很多客觀或情緒上的理由來排斥測試代碼先行。他們會想:進度太緊,沒有時間寫測試;感覺比較古怪,無法接受;本項目有它自己的特殊性,并不適合測試驅動開發(fā)的方式;有些代碼根本寫不出測試不論是在寫程序的時候,還是在應用新的開發(fā)過程的
13、時候,人都是會犯錯的。測試驅動開發(fā)可以讓程序員很方便地研究它們、定義它們、檢查它們并可得到清晰的反饋結果。最終,程序員會發(fā)現(xiàn)他們不知不覺間解決了全部的問題。測試的覆蓋面太小。有些人自詡也在應用進行開發(fā),但在上萬行的工程代碼中,只有,個。只對某些“核心”模塊或復雜算法進行測試驅動?;蛘邇H僅是某個人試試的新功能的結果。這種使用方式根本不是真正的測試驅動開發(fā)。測試用例并不是一條安全索,而是設計和實現(xiàn)的(下轉第頁)第期楊利峰等:基于非監(jiān)督紋理分割的圖像查詢詢圖像,查詢結果從左到右與查詢圖像的相似程度是遞減的,()為分割結果,這里的查詢圖像來自于數(shù)據(jù)庫。圖展示的是另外一個來自于數(shù)據(jù)庫的查詢圖像紋理的查詢
14、結果,同樣,()也為分割結果。 圖多重濾波器查詢結構圖 )理紋理紋理 ()紋理紋理紋理圖紋理圖像的查詢結果通過進行非監(jiān)督紋理分割,可以簡便地理解圖像的結構,同時可以提取一些紋理特征進行圖像查詢。運用假設檢驗,可以將紋理區(qū)域分到與它最類似的區(qū)域中。結論提出了一種非監(jiān)督分割框架用于紋理圖像查詢。通(上接第頁)手段,是一個組成部分。測試跨度過大。提供了系統(tǒng)最外層的輸入,然后就變魔術般地輸出最終結果。作為驗收測試是適當?shù)?,而且一般來說,寫下的第一個測試就是這樣的高層次測試。但是,僅僅有這種測試是不夠的。需要有更多的說明產(chǎn)生這一結果的內(nèi)部過程機制的測試代碼。判斷測試跨度的一個標準就是,每個測試應該在較短
15、時間內(nèi)得以通過(比如幾小時之內(nèi))。如果寫下一個測試后進行一周編碼后此測試才能通過,那么對你不會有太大的幫助。應該盡快地通過虛擬對象通過高層測試,并將注意力集中到較低層次對象需要滿足的測試上。測試針對代碼而不是針對功能。測試驅動開發(fā)中的測試是為了驅動開發(fā),從而產(chǎn)生能過這種分割方法,自動提取圖像各類別的一組特征參數(shù)?;谶@些特征參數(shù),可以進行有效的紋理圖像查詢。(紋理紋理紋理()紋理紋理紋理圖紋理圖像的查詢結果參考文獻:,:,:,():,():,:,():,:,實現(xiàn)預期功能和意圖的代碼,而不是求全的測試。測試驅動開發(fā)中的測試不必求全覆蓋所有的測試情況,而應該清楚地表達你希望程序達到的意圖,并保證程
16、序真的符合這些意圖。參考文獻:(測試驅動開發(fā)(中文版)孫平平譯北京:中國電力出版社,解析極限編程擁抱變化唐東銘譯北京:人民郵電出版社,(中文版)鮑志云譯北京:電子工業(yè)出版社,單元測試之道版使用陳偉柱譯北京:電子工業(yè)出版社,王東剛軟件測試與實踐北京:人民郵電出版社 測試驅動開發(fā)及開發(fā)實踐作者:張揚, 黃厚寬, ZHANG Yang, HUANG Hou-kuan作者單位:北京交通大學,計算機與信息技術學院,北京,100044刊名:計算機技術與發(fā)展英文刊名:COMPUTER TECHNOLOGY AND DEVELOPMENT年,卷(期:2006,16(5被引用次數(shù):5次參考文獻(5條1. 王東剛 軟件測試與Junit實踐 20052. Hunt A;Thomas D;陳偉柱 單元測試之道Java版-使用Junit 20053. Massol V;鮑志云 Junit IN ACTION 20054. Beck K;唐東銘 解析極限編程-擁抱變化 20025. Beck K;孫平平
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商戶綠色活動方案
- 團建新奇活動方案
- 國外營銷活動方案
- 國慶健步行活動方案
- 商場歡樂體驗活動方案
- 國風打卡活動方案
- 商場婚慶pr活動方案
- 國學傳承活動方案
- 國慶節(jié)公司工會活動方案
- 牙周病試題及答案
- 警察政治培訓課件
- 2025-2030中國疏浚工程行業(yè)發(fā)展態(tài)勢與前景規(guī)劃分析報告
- 科室vte管理制度
- 2025年中國舒適眼鏡白皮書-艾瑞咨詢-202506
- 中小學美術教學評價構建及實施策略
- 2025-2030玉石行業(yè)風險投資發(fā)展分析及運作模式與投融資研究報告
- 江蘇省揚州市2024-2025學年四年級下學期6月數(shù)學期末試題一(有答案)
- (2025)發(fā)展對象培訓考試題和答案
- 2024年西南醫(yī)科大學招聘專職輔導員真題
- 2025年經(jīng)濟學基礎理論考試試卷及答案
- 建筑施工項目支付流程及管理
評論
0/150
提交評論