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

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

2014-09-08 10:15:00林新黨穆加艷
雷達(dá)與對(duì)抗 2014年1期
關(guān)鍵詞:設(shè)置系統(tǒng)

林新黨,穆加艷

(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ǔ)庫,利用測(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ǔ)庫和自動(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ǔ)庫使用Mercurial,持續(xù)集成工具為Jenkins,測(cè)試工具使用CppUnit測(cè)試框架,靜態(tài)分析軟件為Cpplint,代碼度量工具為sourceMonitor。本系統(tǒng)組成如圖1。

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

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

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

持續(xù)集成服務(wù)器需安裝代碼存儲(chǔ)庫、持續(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ǔ)庫;

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

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

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

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

2 系統(tǒng)使用

2.1 安裝和配置

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

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

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

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

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

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

?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é)束語

持續(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

猜你喜歡
設(shè)置系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
中隊(duì)崗位該如何設(shè)置
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
7招教你手動(dòng)設(shè)置參數(shù)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
本刊欄目設(shè)置說明
中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
主站蜘蛛池模板: 亚洲αv毛片| 永久免费AⅤ无码网站在线观看| 日本不卡免费高清视频| 最新亚洲人成无码网站欣赏网| 国产高清在线观看| 五月激激激综合网色播免费| 中国毛片网| 99视频在线免费看| 亚洲国产精品久久久久秋霞影院| 国内毛片视频| 国产一二三区在线| 国产69精品久久久久孕妇大杂乱| 国产麻豆aⅴ精品无码| 久久人午夜亚洲精品无码区| 中文成人在线视频| 三上悠亚一区二区| 制服丝袜亚洲| 成·人免费午夜无码视频在线观看| 色综合天天娱乐综合网| 国产成人精品一区二区不卡| 国产成人高精品免费视频| 啪啪啪亚洲无码| 日韩福利在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 婷婷亚洲最大| 99手机在线视频| 免费看av在线网站网址| 91九色国产在线| 中文字幕永久在线观看| 国产特级毛片aaaaaaa高清| 香蕉伊思人视频| 天天综合亚洲| 99久久99视频| 999精品色在线观看| 18禁色诱爆乳网站| 97一区二区在线播放| 999精品免费视频| 福利国产在线| 激情综合网址| 手机成人午夜在线视频| 在线视频亚洲欧美| 欧美一级黄色影院| 欧美日韩一区二区三| 成年午夜精品久久精品| 熟女视频91| 国产成人AV大片大片在线播放 | 99这里精品| 婷婷伊人久久| 九色视频一区| 亚洲精品国产精品乱码不卞| 午夜高清国产拍精品| 国产精品无码在线看| 亚洲欧美日韩色图| 91久久偷偷做嫩草影院免费看| 老司机午夜精品视频你懂的| 亚洲最黄视频| 波多野结衣在线se| 日韩在线永久免费播放| 在线亚洲小视频| 欧美视频在线第一页| 国产激情无码一区二区三区免费| 美女被躁出白浆视频播放| 亚洲第一黄色网址| 亚洲欧美激情小说另类| 亚洲Aⅴ无码专区在线观看q| 亚洲国产成人麻豆精品| 毛片在线播放网址| 亚洲区欧美区| 亚洲国产成人麻豆精品| 亚洲精品高清视频| 亚洲欧洲日韩综合色天使| 亚洲综合香蕉| 国外欧美一区另类中文字幕| 亚洲精品无码专区在线观看 | 四虎精品黑人视频| 99视频全部免费| 国产高清色视频免费看的网址| 免费在线不卡视频| 九色综合视频网| 99视频国产精品| www成人国产在线观看网站| 久久影院一区二区h|