




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