999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

測試驅動開發技術在航天領域的應用實踐

2017-05-17 10:50:18連彥澤何信華趙雷
中國高新技術企業 2017年6期

連彥澤+何信華+趙雷

摘要:文章介紹了測試驅動開發技術的概念及其在軟件開發過程中所起到的設計、文檔、測試與基礎設施的作用,重點介紹了測試驅動開發技術應用于傳統航天工程領域的軟件開發實踐的方法、步驟,提出了分階段的訓練方法,并對測試驅動開發的效率問題進行了分析。

關鍵詞:測試驅動開發技術;航天領域;軟件開發;軟件敏捷開發;航天工程 文獻標識碼:A

中圖分類號:TP311 文章編號:1009-2374(2017)06-0045-02 DOI:10.13535/j.cnki.11-4406/n.2017.06.023

測試驅動開發技術作為軟件敏捷開發中的一個重要組成部分,在軟件開發實踐中得到了廣泛的應用。本質上,測試驅動開發技術是一種軟件開發技術,而不是一種軟件測試技術,它的作用在于通過測試來驅動開發,以提高軟件的高內聚、低耦合程度,改善軟件設計質量,減少軟件代碼中的缺陷率,提高軟件開發的效率,提升軟件產品的質量。

測試驅動開發技術相對于傳統的軟件開發流程,是一種開發思維上的轉變。它是一種基于目標驅動的軟件開發思想,與傳統的先編寫代碼再進行調試的開發流程不同,強調在編寫產品代碼之前先思考作為用戶該如何去使用這個功能,先確定如何去用這個目標,并通過測試代碼使目標明確可運行,之后再去思考如何實現這個功能,需要開發人員在用戶與功能開發者之間不斷進行角色切換,多角度思考。先編寫測試代碼,再編寫產品代碼,用測試來驅動開發。

測試驅動開發技術是隨著敏捷開發技術不斷發展應用起來的,敏捷開發除了測試驅動之外,還包括用戶故事、結對編程、持續集成等要素。本文不針對測試驅動開發在敏捷開發中的實踐,而是將測試驅動開發技術應用于傳統的軟件開發,與傳統的領域開發流程相結合,介紹測試驅動開發技術在領域應用中的實踐。

1 測試驅動開發

本節介紹測試驅動開發的概念及測試驅動開發所起到的作用。

1.1 測試驅動開發概念

測試驅動開發技術是由Kent Beck于20世紀90年代提出并不斷發展起來的,基本方法是編寫所有產品代碼的目的都是為了使失敗的測試能夠通過。首先編寫一個測試,由于它要運行的功能還不存在,所以它會運行失敗。然后,編寫產品代碼使測試通過。作為結果,一個非常完整的測試用例集就和產品代碼一起發展起來。

軟件重構、領域驅動設計、敏捷軟件開發與實踐等技術或實踐均將測試驅動開發作為一個必要條件和實踐原則,它們的一個共同特點是均采用迭代開發思想,在開發過程中不斷對已有產品進行精化和完善。軟件重構關注改善既有代碼的設計,從代碼層面不斷對軟件進行優化,使代碼結構更合理、擴展性更好,可理解性更強。領域驅動設計關注領域模型與代碼實現的綁定,強調軟件各個部分的設計應忠實地反映領域模型,與模型相對應,在開發過程中通過不斷的重構與精煉去獲得和實現深層次的領域模型。敏捷軟件開發與實踐將測試驅動開發作為一個基礎實踐,與其他實踐結合形成一個完整的迭代開發流程。

1.2 設計作用

測試驅動開發要求在編寫產品代碼之前先編寫測試,開發人員首先必須站在產品代碼使用者的角度去思考應該怎么去使用這個功能,這個功能應該提供哪些接口供測試代碼來訪問,這種思考方式會促使開發人員先從接口的角度考慮功能模塊的設計,促進功能模塊的接口設計的正確性與合理性,同時會激發開發人員去解除各個功能模塊之間的耦合,這樣才能夠對各功能模塊進行獨立的測試,形成高內聚、低耦合的軟件設計與實現。從一定程度上說,編程就是設計,測試驅動開發可以實現更好的設計。

1.3 文檔作用

測試驅動開發的第二個作用是提供精確的功能模塊使用說明文檔。隨著測試驅動開發過程的不斷進行,會建立起一套非常完整的測試用例集,該用例集精確的描述了各個功能模塊的使用方法,功能模塊的使用者通過測試用例可以準確的查看功能模塊的接口及其使用方法,明確功能模塊需要的前置條件及執行結果的后置條件,更好的理解模塊的功能和作用。從一定程度上說,源代碼就是文檔,測試代碼可以提供更準確、可驗證的模塊使用說明文檔。

1.4 測試作用

測試驅動開發的第三個作用是測試,測試集是隨著開發過程不斷建立起來的,且均是先編寫測試代碼,后編寫產品代碼,通過這套完整的可運行的測試用例集,可以隨時對產品代碼運行測試用例,對開發過程中運行的所有測試實現可重復的自動化的運行,因此從開發人員角度考慮,可以認為產品代碼的正確性與測試用例是否全部通過是等價的。同時開發人員工作是否完成的標志從編譯是否正確變成了測試用例是否全部通過。

1.5 基礎設施作用

一個優秀的軟件架構和軟件產品的產生,需要結合應用領域不斷的進行實踐、重構、優化,包括代碼級別的重構、設計模式級別的重構、領域模型的重構及軟件架構的重構。對一個軟件架構或產品不斷進行不同級別的各種重構,勢必會對已經可以正常工作的軟件代碼造成很大的影響,引入各種各樣的軟件Bug,這也是很多開發人員不愿意或沒有勇氣對已有軟件進行重構或調整的原因。而測試驅動開發技術可以很好的解決這個問題,將測試驅動開發產生的測試代碼作為軟件產品開發的一個重要組成部分與基礎設施,一定程度上,軟件的正確性與測試是否全部通過是等價的。在重構的過程中不斷進行測試,如果因重構引出問題,測試結果會立刻顯示出來,由于每一步的重構動作都是很小的一步,且剛剛進行過修改,印象深刻,結合有問題的測試用例,可以很快地定位問題的原因,確保在不影響軟件正確性的前提下,軟件的各類重構能夠有序進行。

2 航天領域應用實踐

航天領域作為一個高風險的行業,對應用軟件的正確性與可靠性提出了更高的要求,要既能滿足航天工程所需的軟件需求及其變更,又要確保軟件的正確性與可靠性。測試驅動開發技術作為軟件開發活動中的一個優秀實踐,可有效提高航天領域軟件產品的正確性與可靠性。

2.1 工程實踐

測試驅動開發的工程實踐包括學習測試框架、搭建測試環境、實施測試驅動開發等步驟。測試驅動開發的實踐原則是非常簡單的,重要的是開發人員要從思想上接受這種模式并通過不斷的訓練,使測試驅動開發技術真正融入到日常的軟件開發活動中。

2.2 學習測試框架

要應用測試驅動開發技術,首先必須學習一些常用的測試框架及測試的方法。目前C++、Java、C#等主流的程序開發語言都有優秀且開源的測試框架,如xUnit系列測試框架支持Java、C#、C++等語言的測試,GTest是一個支持C++語言的跨平臺的測試框架,提供了支持測試的各項功能。另外,還需要學習對測試框架的初始化、測試用例的建立與退出、支持各種數據類型的聲明和斷言。當然,測試框架也不是必須的,在沒有可直接使用的測試框架的條件下,自己也可以開發一個簡單測試環境,重要的還是測試驅動開發的思想。

2.3 搭建測試環境

原則上,測試代碼一般作為一個獨立的可運行的測試項目,與產品代碼所在項目保持獨立。在真正的產品代碼開發之前,先把測試項目運行起來,然后通過編寫測試驅動產品代碼的編寫。測試代碼項目隨著產品代碼項目不斷發展,形成一套完整的測試集。

2.4 實施測試驅動開發

測試驅動開發的基本的實施步驟是,首先編寫一個測試,由于它要運行的功能還不存在,所以它會運行失敗。然后,編寫產品代碼使測試通過。每次編寫的產品代碼只需要確保測試能夠通過。在切換到測試代碼的編寫,重復此過程。一般測試代碼與產品代碼的切換非常快,通過“編寫測試代碼→運行測試失敗→編寫產品代碼→運行測試成功→重構”的循環模式,推進軟件產品的開發過程。

2.5 訓練方式

要將測試驅動開發技術真正應用于開發實踐,使其成為軟件開發人員開發思想的一個必不可少的組成部分,需要進行有效的訓練和刻意的練習,整個過程可分為三個階段:第一階段,強迫自己先寫測試代碼,再寫產品代碼;第二階段,在實踐中應用,有時可能會無意識地轉換回傳統的軟件開發流程,直接去編寫產品代碼,在開發過程中,當意識到這段產品代碼還沒有編寫測試時,應馬上停下來,補充相應的測試代碼,有意識的不斷訓練;第三階段,會自覺的先編寫測試代碼,再編寫產品代碼,如果某一時刻直接去編寫產品代碼,自己會覺得很不舒服,感覺缺少了什么東西或對什么事情不放心,會立刻意識到應該去編寫測試代碼。到該階段,測試驅動開發的思想會真正融入到開發人員的開發思維中,形成一種自覺的開發行為模式。

2.6 效率問題

剛開始接觸測試驅動開發的人員都會有編寫測試會不會降低開發效率的問題。傳統的軟件開發模式中,編碼與調試所耗費開發人員時間的比例一般為1∶3,調試會占用開發人員大量的時間,耗費開發人員的精力。測試驅動開發技術會徹底改變這種傳統的工作模式,通過不斷編寫測試用例、頻繁的運行測試,幾乎不再需要進行軟件調試的工作,即使需要調試,也會很快定位并解決問題,因此測試驅動開發會很大地提高軟件開發的效率。

3 結語

本文介紹了將測試驅動開發技術應用于傳統的軟件開發流程,并詳細介紹了測試驅動開發在航天工程領域的應用實踐,應用結果表明,測試驅動開發可以有效提高航天軟件的開發效率,確保軟件的正確性與可靠性,提升軟件質量,促進航天軟件的產品化。

參考文獻

[1] [美]Kent Beck.測試驅動開發[M].北京:中國電力出版社,2004.

[2] [美]Martin Fowler.重構-改善既有代碼的設計[M].北京:人民郵電出版社,2015.

[3] [美]Eric Evans.領域驅動設計 軟件核心復雜性應對之道[M].北京:人民郵電出版社,2016.

[4] [美]Robert C.Martin.敏捷軟件開發(原則、模式與實踐)[M].北京:清華大學出版社,2003.

作者簡介:連彥澤(1985-),男,山西長治人,北京宇航系統工程研究所工程師,研究方向:航天工程軟件研發。

(責任編輯:黃銀芳)

主站蜘蛛池模板: 国产一级无码不卡视频| 一级全免费视频播放| 97国产成人无码精品久久久| 伦伦影院精品一区| 久久窝窝国产精品午夜看片| 九九热免费在线视频| 暴力调教一区二区三区| 岛国精品一区免费视频在线观看| 国产尹人香蕉综合在线电影| 午夜欧美理论2019理论| 国产v精品成人免费视频71pao| 99久久精品国产自免费| 日本免费新一区视频| 亚洲精品视频免费| 成人va亚洲va欧美天堂| 久久性妇女精品免费| 香蕉视频在线观看www| 精品无码一区二区三区电影| 亚洲人成影院在线观看| 国产欧美视频一区二区三区| 欧美日韩高清在线| 国产免费a级片| 亚洲综合片| 日韩国产亚洲一区二区在线观看| 亚洲精品成人福利在线电影| 三级国产在线观看| 国产成人精品一区二区不卡| 国产成人免费手机在线观看视频| 免费人成在线观看视频色| 在线国产欧美| 四虎精品国产永久在线观看| 天堂网国产| 国产成人午夜福利免费无码r| 午夜毛片免费观看视频 | 波多野结衣国产精品| 亚洲人在线| 国产视频只有无码精品| 国产麻豆另类AV| 黄色网在线| 亚洲精品片911| 欧美不卡视频在线观看| 996免费视频国产在线播放| 91高清在线视频| 欧美福利在线观看| 亚洲中文无码h在线观看| 露脸一二三区国语对白| 精品夜恋影院亚洲欧洲| 97亚洲色综久久精品| 69av免费视频| 99精品国产自在现线观看| 久久精品娱乐亚洲领先| 在线观看亚洲天堂| 日本成人福利视频| 亚洲无码高清视频在线观看| 久久久久无码精品| 国产成人欧美| 国产在线专区| 欧美高清视频一区二区三区| 丝袜国产一区| 成人一级黄色毛片| 久久综合色视频| 亚洲精品动漫| 日本精品中文字幕在线不卡| 亚洲欧洲日产国产无码AV| 美女无遮挡拍拍拍免费视频| 97久久人人超碰国产精品| 免费一级无码在线网站| 亚洲三级电影在线播放 | 色婷婷视频在线| 国产中文在线亚洲精品官网| 亚洲男人在线天堂| 国产精品无码一区二区桃花视频| 无码免费视频| 国产成a人片在线播放| 亚洲国产精品无码AV| 99re在线视频观看| 国产第八页| 国产免费网址| 久99久热只有精品国产15| 五月丁香在线视频| 亚洲最大在线观看| 中文字幕免费视频|