• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Jenkins的持續(xù)集成系統(tǒng)研究

      2014-09-08 10:15:00林新黨穆加艷
      雷達(dá)與對(duì)抗 2014年1期
      關(guān)鍵詞:單元測(cè)試開發(fā)人員測(cè)試用例

      林新黨,穆加艷

      (1. 海軍駐南京地區(qū)雷達(dá)系統(tǒng)軍事代表室,南京 210003;2.中國(guó)船舶重工集團(tuán)公司第七二四研究所,南京 211153)

      基于Jenkins的持續(xù)集成系統(tǒng)研究

      林新黨1,穆加艷2

      (1. 海軍駐南京地區(qū)雷達(dá)系統(tǒng)軍事代表室,南京 210003;2.中國(guó)船舶重工集團(tuán)公司第七二四研究所,南京 211153)

      針對(duì)敏捷開發(fā)實(shí)踐的特點(diǎn),研究了基于Jenkins的持續(xù)集成系統(tǒng)。綜合考慮了軟件開發(fā)的項(xiàng)目組織形式,采用了支持分布式工作流的代碼存儲(chǔ)庫(kù),利用測(cè)試驅(qū)動(dòng)開發(fā)的測(cè)試方法。實(shí)現(xiàn)了自動(dòng)化軟件單元測(cè)試及持續(xù)集成,并與傳統(tǒng)的人工測(cè)試在時(shí)間開銷方面作了比較分析。

      持續(xù)集成系統(tǒng);自動(dòng)化測(cè)試;單元測(cè)試

      0 引 言

      在保證高質(zhì)、高效完成項(xiàng)目的前提下,需要提煉項(xiàng)目中重復(fù)且無需人工干預(yù)的任務(wù)交給計(jì)算機(jī)來完成??芍貜?fù)完成的任務(wù)是可回歸的??苫貧w性和敏捷性相輔相成,可回歸性是基礎(chǔ),而敏捷性是提升可回歸能力的重要方面。為了使軟件研發(fā)過程的可回歸性和敏捷性達(dá)到最優(yōu),必須實(shí)施持續(xù)集成。持續(xù)集成可以最大化地體現(xiàn)可回歸性和敏捷性。本文是持續(xù)集成的一個(gè)具體實(shí)踐,主要包括持續(xù)集成工具、代碼存儲(chǔ)庫(kù)和自動(dòng)化單元測(cè)試工具以及若干腳本文件。持續(xù)集成包括讀取源代碼、編譯、連接、測(cè)試等過程,整個(gè)創(chuàng)建過程都是自動(dòng)完成。成功的構(gòu)建都須通過測(cè)試才能完成。通過查看構(gòu)建趨勢(shì)和測(cè)試結(jié)果趨勢(shì),可以看出程序歷史版本的構(gòu)建情況。

      對(duì)于持續(xù)集成的工具,本文選擇的是Jenkins。它為開源項(xiàng)目,可免費(fèi)獲得,并提供較多的插件支持,可方便使用第三方的應(yīng)用功能。

      本系統(tǒng)以最小的人機(jī)交互來完成軟件的自動(dòng)化測(cè)試和持續(xù)構(gòu)建,可以提高軟件測(cè)試的速度和效率,縮短軟件開發(fā)時(shí)間,降低測(cè)試成本。

      1 系統(tǒng)設(shè)計(jì)

      1.1 系統(tǒng)組成

      本系統(tǒng)主要基于VC的項(xiàng)目使用,構(gòu)建并完成代碼的自動(dòng)化單元測(cè)試??紤]項(xiàng)目人員不集中等情況,持續(xù)集成系統(tǒng)的方案有如下兩種:

      ?第一種方案:Jenkins + Mercurial + MSBuild + CppUnit + sourceMonitor + Cpplint;

      ?第二種方案:Jenkins + Mercurial + MSBuild + LDRA_Testbed(商業(yè)測(cè)試軟件)。

      兩種方案比較:

      (1) 第一種方案采用開源和免費(fèi)的軟件,較易獲得,使用方便,便于普及;

      (2) 第二種方案中的測(cè)試軟件為商業(yè)測(cè)試軟件LDRA_Testbed,在普及上有一定局限性;優(yōu)點(diǎn)是代碼的規(guī)則檢查時(shí)可以定制規(guī)則,并且該軟件集代碼規(guī)則檢查、代碼度量和代碼覆蓋率測(cè)試功能于一體。

      本文的持續(xù)集成系統(tǒng)采用第一種方案,代碼存儲(chǔ)庫(kù)使用Mercurial,持續(xù)集成工具為Jenkins,測(cè)試工具使用CppUnit測(cè)試框架,靜態(tài)分析軟件為Cpplint,代碼度量工具為sourceMonitor。本系統(tǒng)組成如圖1。

      圖1 持續(xù)集成系統(tǒng)組成

      代碼存儲(chǔ)庫(kù)有兩種控制流,一種為分布式,另一種為集中式的。開發(fā)人員平時(shí)可以把代碼存儲(chǔ)庫(kù)視為分布式的,在本地管理自己的代碼,須將代碼上傳到持續(xù)集成服務(wù)器時(shí)再使用集中式控制流。

      開發(fā)人員須在計(jì)算機(jī)上配置代碼存儲(chǔ)庫(kù)、開發(fā)工具以及測(cè)試工具。當(dāng)開發(fā)人員在本地開發(fā)代碼時(shí),編寫測(cè)試用例作單元測(cè)試,測(cè)試通過后上傳到持續(xù)集成服務(wù)器。

      持續(xù)集成服務(wù)器需安裝代碼存儲(chǔ)庫(kù)、持續(xù)集成工具、MSBuild以及測(cè)試工具等,環(huán)境配置為持續(xù)集成環(huán)境。當(dāng)項(xiàng)目組上傳代碼時(shí),持續(xù)集成系統(tǒng)按照預(yù)先設(shè)置的環(huán)境參數(shù)完成自動(dòng)集成并測(cè)試。

      1.2 持續(xù)集成的流程

      持續(xù)集成的流程圖如圖2所示,持續(xù)集成模塊的使用場(chǎng)景如下:

      (1) 開發(fā)人員A負(fù)責(zé)開發(fā)工程模塊A,開發(fā)人員B負(fù)責(zé)開發(fā)該工程模塊B。開發(fā)人員分別在自己的電腦上開發(fā)完相應(yīng)模塊并且通過單元測(cè)試;

      (2) 項(xiàng)目負(fù)責(zé)人集成模塊A和模塊B,建立project,編譯并經(jīng)過單元測(cè)試后將project上傳代碼存儲(chǔ)庫(kù);

      (3) 項(xiàng)目負(fù)責(zé)人在本平臺(tái)新建job,并對(duì)該job的project源代碼位置以及自動(dòng)化測(cè)試進(jìn)行相關(guān)配置,設(shè)置構(gòu)建時(shí)機(jī)(可以設(shè)置為源代碼庫(kù)里相關(guān)代碼變動(dòng)了即開始構(gòu)建);

      (4) 開發(fā)人員修改代碼后上傳到代碼存儲(chǔ)庫(kù),上傳成功后持續(xù)集成平臺(tái)自動(dòng)執(zhí)行構(gòu)建和測(cè)試的工作;

      (5) 持續(xù)集成平臺(tái)將測(cè)試結(jié)果反饋給開發(fā)人員,開發(fā)人員修改代碼后再上傳到代碼存儲(chǔ)庫(kù),即觸發(fā)新一次構(gòu)建。

      圖2 持續(xù)集成的流程圖

      2 系統(tǒng)使用

      2.1 安裝和配置

      持續(xù)集成軟件Jenkins選擇默認(rèn)安裝,代碼存儲(chǔ)庫(kù)軟件選擇windows圖形界面tortoiseHg版本。持續(xù)集成系統(tǒng)需要安裝相應(yīng)的若干插件,具體如下:

      ?Mercurial插件:使Jenkins能使用代碼存儲(chǔ)庫(kù)Mercurial;

      ?MSBuild插件:使Jenkins能使用MSBuild,這樣才能構(gòu)建基于VC的項(xiàng)目;

      ?xUnit插件和CppUnit插件:使Jenkins能查看CppUnit測(cè)試結(jié)果,并作測(cè)試結(jié)果的趨勢(shì)統(tǒng)計(jì)。

      Jenkins在正常工作前需要作如下的配置:

      ?代碼存儲(chǔ)庫(kù)的配置:設(shè)置代碼倉(cāng)庫(kù)的路徑;

      ?MSBuild的配置:設(shè)置MSBuild的路徑;

      ?單元測(cè)試的配置:設(shè)置要查看的測(cè)試結(jié)果的路徑。

      整個(gè)系統(tǒng)的使用部署情況如圖3所示。

      圖3 持續(xù)集成系統(tǒng)的部署圖

      2.2 持續(xù)構(gòu)建

      持續(xù)集成軟件基于web服務(wù),訪問端口為8080。持續(xù)集成工具安裝配置成功后,在本地訪問的地址是http://localhost:8080/。首先須建立一個(gè)新任務(wù),并完成該任務(wù)的設(shè)置,包括需要編譯的工程文件的路徑以及觸發(fā)構(gòu)建的時(shí)機(jī)等。設(shè)置成功后系統(tǒng)就能自動(dòng)地完成持續(xù)集成工作。

      用戶可修改JENKINS_HOME的位置:在Jenkins的Jenkins.xml中找到JENKINS_HOME,默認(rèn)value為%BASE%。用戶可根據(jù)實(shí)際需要更改路徑,并重啟Jenkins,使其生效。

      Jenkins無須登陸即可直接使用。如果出于安全考慮而需進(jìn)行登錄設(shè)置的,可在“系統(tǒng)管理”-“系統(tǒng)設(shè)置”中進(jìn)行配置,也可以下載插件Role Strategy Plugin來進(jìn)行用戶管理。

      持續(xù)集成工具提供4種方式的構(gòu)建時(shí)機(jī),用戶可以根據(jù)需要自行設(shè)定。

      如果項(xiàng)目有構(gòu)建依賴,即A任務(wù)完成后B任務(wù)才可以運(yùn)行,那么就需要配置兩個(gè)任務(wù)間的依賴關(guān)系,在設(shè)置持續(xù)集成任務(wù)時(shí)配置完成。

      持續(xù)集成系統(tǒng)可以查看持續(xù)構(gòu)建的趨勢(shì),如圖4右下角的曲線圖,橫軸表示構(gòu)建次數(shù),縱軸表示每次構(gòu)建的時(shí)間。

      查看測(cè)試結(jié)果趨勢(shì)如圖5所示,橫軸表示構(gòu)建次數(shù),縱軸表示用例數(shù),兩條曲線分別表示用例總數(shù)和失敗用例數(shù)??梢圆榭床怀晒?gòu)建的原因以及失敗的測(cè)試用例等,如圖6所示。

      圖4 持續(xù)集成工具的界面圖

      圖5 測(cè)試結(jié)果趨勢(shì)圖

      圖6 查看測(cè)試結(jié)果

      2.3 單元測(cè)試

      沒有測(cè)試是不完整的構(gòu)建,只有通過測(cè)試的構(gòu)建才算構(gòu)建成功的版本。在本系統(tǒng)中采用xUnit測(cè)試框架CppUnit來作單元測(cè)試。該框架能夠輔助單元測(cè)試編寫測(cè)試用例、運(yùn)行測(cè)試以及產(chǎn)生報(bào)告,是測(cè)試驅(qū)動(dòng)開發(fā)測(cè)試方法的一個(gè)工具。利用該測(cè)試方法可先寫測(cè)試用例,再為測(cè)試代碼添加產(chǎn)品代碼。在進(jìn)行自動(dòng)化測(cè)試時(shí),將數(shù)據(jù)、配置和功能分開,有利于提高測(cè)試的時(shí)間和維護(hù)測(cè)試腳本及測(cè)試用例。

      單元測(cè)試包括靜態(tài)分析和覆蓋率分析。靜態(tài)分析包括代碼審查。自動(dòng)化的代碼審查能解決80%的問題,讓開發(fā)者來處理20%的重要問題[1]。本系統(tǒng)采用Cpplint來作代碼規(guī)則檢查。該工具針對(duì)google c++ style規(guī)則,持續(xù)集成系統(tǒng)可查看代碼審查結(jié)果。Cpplint對(duì)審查結(jié)果給出一個(gè)置信度評(píng)分,分值在[1,5]之間,分?jǐn)?shù)越高表示問題越肯定。

      代碼審查還包括代碼度量,主要針對(duì)代碼的圈復(fù)雜度??梢愿鶕?jù)復(fù)雜度隨時(shí)間的變化趨勢(shì)來決定測(cè)試的工作量。如果存在復(fù)雜度增加的趨勢(shì),就需要增加測(cè)試用例來減少風(fēng)險(xiǎn),或通過重構(gòu)來降低復(fù)雜度從而解決潛在的風(fēng)險(xiǎn)。

      持續(xù)集成系統(tǒng)也可作其他類型的測(cè)試,如單元測(cè)試、系統(tǒng)測(cè)試、負(fù)載/性能測(cè)試和安全測(cè)試等。

      2.4 信息反饋

      持續(xù)集成系統(tǒng)主要優(yōu)點(diǎn)是能快速向開發(fā)者和項(xiàng)目風(fēng)險(xiǎn)承擔(dān)者提供反饋信息。

      使用持續(xù)集成系統(tǒng),可以隨時(shí)了解項(xiàng)目的狀態(tài)。該過程為無須人工干預(yù)的過程,機(jī)器自動(dòng)執(zhí)行,確保隨時(shí)有可運(yùn)行的版本。持續(xù)集成系統(tǒng)每次構(gòu)建都會(huì)產(chǎn)生一個(gè)控制臺(tái)記錄文件,記錄構(gòu)建過程。

      反饋機(jī)制有三種:Email/IM/RSS(Really Simple Syndication)。每次構(gòu)建結(jié)束后持續(xù)集成系統(tǒng)會(huì)通過用戶選擇的方式將結(jié)果通知相關(guān)人員。

      3 結(jié)束語(yǔ)

      持續(xù)集成系統(tǒng)可以幫助項(xiàng)目組成員將時(shí)間用在更重要、更有挑戰(zhàn)性的問題上,從而縮短項(xiàng)目的開發(fā)時(shí)間、提高軟件質(zhì)量。開發(fā)者可以將時(shí)間更多地用在軟件設(shè)計(jì)上,而把繁瑣、可重復(fù)的集成工作交給機(jī)器來完成。因持續(xù)集成快速反饋的信息,測(cè)試人員能更頻繁地進(jìn)行測(cè)試,而每次測(cè)試范圍比較小,且是持續(xù)在測(cè)試,不必等到軟件全部完成后再測(cè)試。對(duì)于項(xiàng)目的管理者,通過持續(xù)集成,每次構(gòu)建都能得到可執(zhí)行的軟件產(chǎn)品和真實(shí)的測(cè)試數(shù)據(jù)。這些決策信息能讓項(xiàng)目管理者集中精力來管理項(xiàng)目時(shí)間、費(fèi)用和品質(zhì)。

      [1] Paul M.Duvall,等. 持續(xù)集成軟件質(zhì)量改進(jìn)和風(fēng)險(xiǎn)降低之道[M].王海鵬,等譯.北京:電子工業(yè)出版社,2012.6:126.

      [2] 尹平,等.軟件測(cè)試與軟件質(zhì)量評(píng)價(jià)[M].北京:國(guó)防工業(yè)出版社,2008:184.

      Continuous integration system based on Jenkins

      LIN Xin-dang1, MU Jia-yan2

      (1.Military Representatives Office of Radar System of the Chinese PLA Navy in Nanjing, Nanjing 210003; 2.No. 724 Research Institute of CSIC, Nanjing 211153)

      According to the characteristics of agile development practices, the continuous integration system based on Jenkins is studied. With the project organization forms of the software development taken into consideration and the code repository that supports distributed workflow adopted, a test-driven development test method is used. The automated software unit test and continuous integration system are realized, and the conventional manual test is compared with the new test in time spending.

      continuous integration system; automated test; unit test

      2013-12-20

      林新黨(1970-),男,工程師,碩士,研究方向:雷達(dá)總體技術(shù);穆加艷(1980-),女,高級(jí)工程師,工程碩士,研究方向: 雷達(dá)總體及終端技術(shù)。

      TP311.1

      A

      1009-0401(2014)01-0058-04

      猜你喜歡
      單元測(cè)試開發(fā)人員測(cè)試用例
      基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
      Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
      基于混合遺傳算法的回歸測(cè)試用例集最小化研究
      讓W(xué)indows 10進(jìn)入開發(fā)者模式
      電腦迷(2015年12期)2015-04-29 23:22:51
      后悔了?教你隱藏開發(fā)人員選項(xiàng)
      電腦愛好者(2015年6期)2015-04-03 01:20:56
      基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
      一年級(jí)上冊(cè)第五單元測(cè)試
      一年級(jí)上冊(cè)一、二單元測(cè)試
      第五單元測(cè)試卷
      第六單元測(cè)試卷
      青田县| 镇雄县| 揭西县| 旌德县| 剑川县| 平谷区| 陇川县| 绥德县| 馆陶县| 六枝特区| 邯郸县| 佛学| 信宜市| 丰镇市| 桑日县| 阿荣旗| 综艺| 白水县| 新郑市| 盐津县| 壶关县| 广灵县| 东阿县| 综艺| 海原县| 辽中县| 萨嘎县| 玛曲县| 全州县| 柘荣县| 三门峡市| 抚州市| 苏尼特左旗| 东方市| 方城县| 巩留县| 新源县| 万安县| 甘孜县| 朝阳市| 丽江市|