測試驅(qū)動(dòng)開發(fā)技術(shù)在航天領(lǐng)域的應(yīng)用實(shí)踐分析_第1頁
測試驅(qū)動(dòng)開發(fā)技術(shù)在航天領(lǐng)域的應(yīng)用實(shí)踐分析_第2頁
測試驅(qū)動(dòng)開發(fā)技術(shù)在航天領(lǐng)域的應(yīng)用實(shí)踐分析_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、測試驅(qū)動(dòng)開發(fā)技術(shù)在航天領(lǐng)域的應(yīng)用理論分析測試驅(qū)動(dòng)開發(fā)技術(shù)作為軟件敏捷開發(fā)中的一個(gè)重要組成局部,在軟件開發(fā)理論中得到了廣泛的應(yīng)用。本質(zhì)上,測試驅(qū)動(dòng)開發(fā)技術(shù)是一種軟件開發(fā)技術(shù),而不是一種軟件測試技術(shù),它的作用在于通過測試來驅(qū)動(dòng)開發(fā),以進(jìn)步軟件的高內(nèi)聚、低耦合程度,改善軟件設(shè)計(jì)質(zhì)量,減少軟件代碼中的缺陷率,進(jìn)步軟件開發(fā)的效率,提升軟件產(chǎn)品的質(zhì)量。測試驅(qū)動(dòng)開發(fā)技術(shù)相對于傳統(tǒng)的軟件開發(fā)流程,是一種開發(fā)思維上的轉(zhuǎn)變。它是一種基于目的驅(qū)動(dòng)的軟件開發(fā)思想,與傳統(tǒng)的先編寫代碼再進(jìn)展調(diào)試的開發(fā)流程不同,強(qiáng)調(diào)在編寫產(chǎn)品代碼之前先考慮作為用戶該如何去使用這個(gè)功能,先確定如何去用這個(gè)目的,并通過測試代碼使目的明確可運(yùn)行

2、,之后再去考慮如何實(shí)現(xiàn)這個(gè)功能,需要開發(fā)人員在用戶與功能開發(fā)者之間不斷進(jìn)展角色切換,多角度考慮。先編寫測試代碼,再編寫產(chǎn)品代碼,用測試來驅(qū)動(dòng)開發(fā)。測試驅(qū)動(dòng)開發(fā)技術(shù)是隨著敏捷開發(fā)技術(shù)不斷開展應(yīng)用起來的,敏捷開發(fā)除了測試驅(qū)動(dòng)之外,還包括用戶故事、結(jié)對編程、持續(xù)集成等要素。本文不針對測試驅(qū)動(dòng)開發(fā)在敏捷開發(fā)中的理論,而是將測試驅(qū)動(dòng)開發(fā)技術(shù)應(yīng)用于傳統(tǒng)的軟件開發(fā),與傳統(tǒng)的領(lǐng)域開發(fā)流程相結(jié)合,介紹測試驅(qū)動(dòng)開發(fā)技術(shù)在領(lǐng)域應(yīng)用中的理論。1測試驅(qū)動(dòng)開發(fā)本節(jié)介紹測試驅(qū)動(dòng)開發(fā)的概念及測試驅(qū)動(dòng)開發(fā)所起到的作用。1.1測試驅(qū)動(dòng)開發(fā)概念測試驅(qū)動(dòng)開發(fā)技術(shù)是由Kent Beck于20世紀(jì)90年代提出并不斷開展起來的,根本方法是

3、編寫所有產(chǎn)品代碼的目的都是為了使失敗的測試可以通過。首先編寫一個(gè)測試,由于它要運(yùn)行的功能還不存在,所以它會(huì)運(yùn)行失敗。然后,編寫產(chǎn)品代碼使測試通過。作為結(jié)果,一個(gè)非常完好的測試用例集就和產(chǎn)品代碼一起開展起來。軟件重構(gòu)、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、敏捷軟件開發(fā)與理論等技術(shù)或理論均將測試驅(qū)動(dòng)開發(fā)作為一個(gè)必要條件和理論原那么,它們的一個(gè)共同特點(diǎn)是均采用迭代開發(fā)思想,在開發(fā)過程中不斷對已有產(chǎn)品進(jìn)展精化和完善。軟件重構(gòu)關(guān)注改善既有代碼的設(shè)計(jì),從代碼層面不斷對軟件進(jìn)展優(yōu)化,使代碼構(gòu)造更合理、擴(kuò)展性更好,可理解性更強(qiáng)。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)關(guān)注領(lǐng)域模型與代碼實(shí)現(xiàn)的綁定,強(qiáng)調(diào)軟件各個(gè)局部的設(shè)計(jì)應(yīng)忠實(shí)地反映領(lǐng)域模型,與模型相對應(yīng),在開發(fā)

4、過程中通過不斷的重構(gòu)與精煉去獲得和實(shí)現(xiàn)深層次的領(lǐng)域模型。敏捷軟件開發(fā)與理論將測試驅(qū)動(dòng)開發(fā)作為一個(gè)根底理論,與其他理論結(jié)合形成一個(gè)完好的迭代開發(fā)流程。1.2設(shè)計(jì)作用測試驅(qū)動(dòng)開發(fā)要求在編寫產(chǎn)品代碼之前先編寫測試,開發(fā)人員首先必須站在產(chǎn)品代碼使用者的角度去考慮應(yīng)該怎么去使用這個(gè)功能,這個(gè)功能應(yīng)該提供哪些接口供測試代碼來訪問,這種考慮方式會(huì)促使開發(fā)人員先從接口的角度考慮功能模塊的設(shè)計(jì),促進(jìn)功能模塊的接口設(shè)計(jì)的正確性與合理性,同時(shí)會(huì)激發(fā)開發(fā)人員去解除各個(gè)功能模塊之間的耦合,這樣才可以對各功能模塊進(jìn)展獨(dú)立的測試,形成高內(nèi)聚、低耦合的軟件設(shè)計(jì)與實(shí)現(xiàn)。從一定程度上說,編程就是設(shè)計(jì),測試驅(qū)動(dòng)開發(fā)可以實(shí)現(xiàn)更好的設(shè)

5、計(jì)。1.3文檔作用測試驅(qū)動(dòng)開發(fā)的第二個(gè)作用是提供準(zhǔn)確的功能模塊使用說明文檔。隨著測試驅(qū)動(dòng)開發(fā)過程的不斷進(jìn)展,會(huì)建立起一套非常完好的測試用例集,該用例集準(zhǔn)確的描繪了各個(gè)功能模塊的使用方法,功能模塊的使用者通過測試用例可以準(zhǔn)確的查看功能模塊的接口及其使用方法,明確功能模塊需要的前置條件及執(zhí)行結(jié)果的后置條件,更好的理解模塊的功能和作用。從一定程度上說,源代碼就是文檔,測試代碼可以提供更準(zhǔn)確、可驗(yàn)證的模塊使用說明文檔。1.4測試作用測試驅(qū)動(dòng)開發(fā)的第三個(gè)作用是測試,測試集是隨著開發(fā)過程不斷建立起來的,且均是先編寫測試代碼,后編寫產(chǎn)品代碼,通過這套完好的可運(yùn)行的測試用例集,可以隨時(shí)對產(chǎn)品代碼運(yùn)行測試用例,

6、對開發(fā)過程中運(yùn)行的所有測試實(shí)現(xiàn)可重復(fù)的自動(dòng)化的運(yùn)行,因此從開發(fā)人員角度考慮,可以認(rèn)為產(chǎn)品代碼的正確性與測試用例是否全部通過是等價(jià)的。同時(shí)開發(fā)人員工作是否完成的標(biāo)志從編譯是否正確變成了測試用例是否全部通過。1.5根底設(shè)施作用一個(gè)優(yōu)秀的軟件架構(gòu)和軟件產(chǎn)品的產(chǎn)生,需要結(jié)合應(yīng)用領(lǐng)域不斷的進(jìn)展理論、重構(gòu)、優(yōu)化,包括代碼級別的重構(gòu)、設(shè)計(jì)形式級別的重構(gòu)、領(lǐng)域模型的重構(gòu)及軟件架構(gòu)的重構(gòu)。對一個(gè)軟件架構(gòu)或產(chǎn)品不斷進(jìn)展不同級別的各種重構(gòu),勢必會(huì)對已經(jīng)可以正常工作的軟件代碼造成很大的影響,引入各種各樣的軟件Bug,這也是很多開發(fā)人員不愿意或沒有勇氣對已有軟件進(jìn)展重構(gòu)或調(diào)整的原因。而測試驅(qū)動(dòng)開發(fā)技術(shù)可以很好的解決這個(gè)

7、問題,將測試驅(qū)動(dòng)開發(fā)產(chǎn)生的測試代碼作為軟件產(chǎn)品開發(fā)的一個(gè)重要組成局部與根底設(shè)施,一定程度上,軟件的正確性與測試是否全部通過是等價(jià)的。在重構(gòu)的過程中不斷進(jìn)展測試,假如因重構(gòu)引出問題,測試結(jié)果會(huì)立即顯示出來,由于每一步的重構(gòu)動(dòng)作都是很小的一步,且剛剛進(jìn)展過修改,印象深入,結(jié)合有問題的測試用例,可以很快地定位問題的原因,確保在不影響軟件正確性的前提下,軟件的各類重構(gòu)可以有序進(jìn)展。2航天領(lǐng)域應(yīng)用理論航天領(lǐng)域作為一個(gè)高風(fēng)險(xiǎn)的行業(yè),對應(yīng)用軟件的正確性與可靠性提出了更高的要求,要既能滿足航天工程所需的軟件需求及其變更,又要確保軟件的正確性與可靠性。測試驅(qū)動(dòng)開發(fā)技術(shù)作為軟件開發(fā)活動(dòng)中的一個(gè)優(yōu)秀理論,可有效進(jìn)步

8、航天領(lǐng)域軟件產(chǎn)品的正確性與可靠性。2.1工程理論測試驅(qū)動(dòng)開發(fā)的工程理論包括學(xué)習(xí)測試框架、搭建測試環(huán)境、施行測試驅(qū)動(dòng)開發(fā)等步驟。測試驅(qū)動(dòng)開發(fā)的理論原那么是非常簡單的,重要的是開發(fā)人員要從思想上承受這種形式并通過不斷的訓(xùn)練,使測試驅(qū)動(dòng)開發(fā)技術(shù)真正融入到日常的軟件開發(fā)活動(dòng)中。2.2學(xué)習(xí)測試框架要應(yīng)用測試驅(qū)動(dòng)開發(fā)技術(shù),首先必須學(xué)習(xí)一些常用的測試框架及測試的方法。目前C+、Java、C#等主流的程序開發(fā)語言都有優(yōu)秀且開源的測試框架,如xUnit系列測試框架支持Java、C#、C+等語言的測試,GTest是一個(gè)支持C+語言的跨平臺(tái)的測試框架,提供了支持測試的各項(xiàng)功能。另外,還需要學(xué)習(xí)對測試框架的初始化、測

9、試用例的建立與退出、支持各種數(shù)據(jù)類型的聲明和斷言。當(dāng)然,測試框架也不是必須的,在沒有可直接使用的測試框架的條件下,自己也可以開發(fā)一個(gè)簡單測試環(huán)境,重要的還是測試驅(qū)動(dòng)開發(fā)的思想。2.3搭建測試環(huán)境原那么上,測試代碼一般作為一個(gè)獨(dú)立的可運(yùn)行的測試工程,與產(chǎn)品代碼所在工程保持獨(dú)立。在真正的產(chǎn)品代碼開發(fā)之前,先把測試工程運(yùn)行起來,然后通過編寫測試驅(qū)動(dòng)產(chǎn)品代碼的編寫。測試代碼工程隨著產(chǎn)品代碼工程不斷開展,形成一套完好的測試集。2.4施行測試驅(qū)動(dòng)開發(fā)測試驅(qū)動(dòng)開發(fā)的根本的施行步驟是,首先編寫一個(gè)測試,由于它要運(yùn)行的功能還不存在,所以它會(huì)運(yùn)行失敗。然后,編寫產(chǎn)品代碼使測試通過。每次編寫的產(chǎn)品代碼只需要確保測試

10、可以通過。在切換到測試代碼的編寫,重復(fù)此過程。一般測試代碼與產(chǎn)品代碼的切換非??欤ㄟ^編寫測試代碼運(yùn)行測試失敗編寫產(chǎn)品代碼運(yùn)行測試成功重構(gòu)的循環(huán)形式,推進(jìn)軟件產(chǎn)品的開發(fā)過程。2.5訓(xùn)練方式要將測試驅(qū)動(dòng)開發(fā)技術(shù)真正應(yīng)用于開發(fā)理論,使其成為軟件開發(fā)人員開發(fā)思想的一個(gè)必不可少的組成局部,需要進(jìn)展有效的訓(xùn)練和刻意的練習(xí),整個(gè)過程可分為三個(gè)階段:第一階段,強(qiáng)迫自己先寫測試代碼,再寫產(chǎn)品代碼;第二階段,在理論中應(yīng)用,有時(shí)可能會(huì)無意識(shí)地轉(zhuǎn)換回傳統(tǒng)的軟件開發(fā)流程,直接去編寫產(chǎn)品代碼,在開發(fā)過程中,當(dāng)意識(shí)到這段產(chǎn)品代碼還沒有編寫測試時(shí),應(yīng)馬上停下來,補(bǔ)充相應(yīng)的測試代碼,有意識(shí)的不斷訓(xùn)練;第三階段,會(huì)自覺的先編寫測試代碼,再編寫產(chǎn)品代碼,假如某一時(shí)刻直接去編寫產(chǎn)品代碼,自己會(huì)覺得很不舒適,感覺缺少了什么東西或?qū)κ裁词虑椴环判?,?huì)立即意識(shí)到應(yīng)該去編寫測試代碼。到該階段,測試驅(qū)動(dòng)開發(fā)的思想會(huì)真正融入到開發(fā)人員的開發(fā)思維中,形成一種自覺的開發(fā)行為形式。2.6效率問題剛開場接觸測試驅(qū)動(dòng)開發(fā)的人員都會(huì)有編寫測試會(huì)不會(huì)降低開發(fā)效率的問題。傳統(tǒng)的軟件開發(fā)形式中,編碼與調(diào)試所消耗開發(fā)人員時(shí)間的比例一般為13,調(diào)試會(huì)占用開發(fā)人員大量的時(shí)間,消耗開發(fā)人員的精力。測試驅(qū)動(dòng)開發(fā)技術(shù)會(huì)徹底改變這種傳統(tǒng)的工作形式,通過不斷編寫測試用例、頻繁的運(yùn)行測試,幾

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論