任 爽,杜 巍,孫 美
(中國(guó)鐵路信息科技有限責(zé)任公司,北京 100038)
傳統(tǒng)IT企業(yè)或大中型企業(yè)IT部門(mén)的軟件研發(fā)測(cè)試架構(gòu)一般采取“一項(xiàng)目一環(huán)境”模式,此模式具有項(xiàng)目針對(duì)性強(qiáng)、單項(xiàng)目構(gòu)建成本低的優(yōu)點(diǎn)。但是,隨著企業(yè)的業(yè)務(wù)不斷增長(zhǎng)和信息系統(tǒng)項(xiàng)目不斷增多,特別是在項(xiàng)目研發(fā)初期的設(shè)備采購(gòu)、環(huán)境搭建和項(xiàng)目執(zhí)行過(guò)程中的流程控制上,這種模式存在很多缺陷[1]。隨著信息化的迅猛發(fā)展和互聯(lián)網(wǎng)的高速增長(zhǎng),企業(yè)對(duì)應(yīng)用軟件研發(fā)測(cè)試的速度、效率和質(zhì)量要求越來(lái)越高,傳統(tǒng)開(kāi)發(fā)測(cè)試架構(gòu)模式已不適應(yīng)信息化快速發(fā)展的需要[2]。
鐵路總公司發(fā)布的《鐵路信息化總體規(guī)劃》[3]中關(guān)于信息基礎(chǔ)設(shè)施平臺(tái)規(guī)劃明確提出“引入云計(jì)算技術(shù),建設(shè)基于云平臺(tái)的開(kāi)發(fā)測(cè)試平臺(tái),向全路提供統(tǒng)一的開(kāi)發(fā)測(cè)試云環(huán)境,實(shí)現(xiàn)開(kāi)發(fā)測(cè)試資源共享,提高開(kāi)發(fā)測(cè)試標(biāo)準(zhǔn)化、規(guī)范化水平,提升業(yè)務(wù)應(yīng)用系統(tǒng)開(kāi)發(fā)測(cè)試環(huán)境部署效率”的目標(biāo)。為此,本文提出基于云平臺(tái)的鐵路統(tǒng)一開(kāi)發(fā)測(cè)試平臺(tái)體系架構(gòu)。利用源代碼開(kāi)發(fā)、自動(dòng)化部署等技術(shù),優(yōu)化軟件開(kāi)發(fā)測(cè)試流程,實(shí)現(xiàn)應(yīng)用集中開(kāi)發(fā)管理、資源自動(dòng)分配、軟件自動(dòng)部署、持續(xù)測(cè)試、軟件快速發(fā)布等功能[4-6],為鐵路信息系統(tǒng)開(kāi)發(fā)、測(cè)試提供新模式。
為了進(jìn)一步提升鐵路應(yīng)用自動(dòng)化水平和創(chuàng)新能力,圍繞如何從資源、應(yīng)用、服務(wù)等多個(gè)維度支撐開(kāi)發(fā)測(cè)試環(huán)境,對(duì)應(yīng)用開(kāi)發(fā)測(cè)試過(guò)程中項(xiàng)目管理、彈性供應(yīng)、自動(dòng)化部署、自動(dòng)化測(cè)試、統(tǒng)一配置展開(kāi)相關(guān)的研究和設(shè)計(jì),體系架構(gòu)設(shè)計(jì)如圖1所示。

圖1 統(tǒng)一開(kāi)發(fā)測(cè)試平臺(tái)體系架構(gòu)
1.1.1 門(mén)戶(hù)層
統(tǒng)一門(mén)戶(hù)采用松耦合架構(gòu),為開(kāi)發(fā)測(cè)試平臺(tái)提供了統(tǒng)一的訪問(wèn)入口,提供自服務(wù)門(mén)戶(hù)和管理門(mén)戶(hù);自服務(wù)門(mén)戶(hù)面向業(yè)務(wù)使用人員提供了服務(wù)的申請(qǐng)、查看、使用等能力,為用戶(hù)提供多樣化的開(kāi)發(fā)測(cè)試服務(wù),包含項(xiàng)目管理、開(kāi)發(fā)工具、測(cè)試工具、應(yīng)用部署等服務(wù);管理門(mén)戶(hù)面向平臺(tái)管理人員提供開(kāi)發(fā)測(cè)試服務(wù)的統(tǒng)計(jì)、審批、定制、訂單管理、系統(tǒng)維護(hù)等能力。
1.1.2 平臺(tái)支撐層
項(xiàng)目生命周期管理為軟件開(kāi)發(fā)過(guò)程中相關(guān)人員提供統(tǒng)一的工作平臺(tái),包括項(xiàng)目管理、需求管理、任務(wù)管理、開(kāi)發(fā)測(cè)試管理、缺陷問(wèn)題管理、持續(xù)集成、文檔管理、事務(wù)組織管理、統(tǒng)計(jì)功能、搜索功能等,實(shí)現(xiàn)軟件開(kāi)發(fā)與項(xiàng)目全過(guò)程的管理。具體管理流程如圖2所示。

圖2 項(xiàng)目管理流程
1.1.3 環(huán)境運(yùn)行支撐層
運(yùn)行環(huán)境基于基礎(chǔ)設(shè)施云平臺(tái)為開(kāi)發(fā)測(cè)試平臺(tái)提供PaaS層服務(wù),包括Web服務(wù)器、應(yīng)用服務(wù)器、消息中間件和數(shù)據(jù)庫(kù)服務(wù)器。
基礎(chǔ)設(shè)施云平臺(tái)向開(kāi)發(fā)測(cè)試平臺(tái)提供對(duì)所有基礎(chǔ)設(shè)施的利用,包括CPU、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)和其它基本IT資源,用戶(hù)可按實(shí)際需要自由部署操作系統(tǒng)或應(yīng)用程序。開(kāi)發(fā)測(cè)試平臺(tái)無(wú)需管理或控制任何基礎(chǔ)設(shè)施,云平臺(tái)可靈活提供、調(diào)整計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)資源,滿(mǎn)足開(kāi)發(fā)測(cè)試平臺(tái)需求。
PaaS層通過(guò)創(chuàng)建標(biāo)準(zhǔn)模板及接口封裝,提供信息系統(tǒng)開(kāi)發(fā)、運(yùn)行時(shí)平臺(tái)環(huán)境,幫助提高開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境的部署效率;開(kāi)發(fā)測(cè)試平臺(tái)在PaaS層之上完成應(yīng)用系統(tǒng)開(kāi)發(fā)、配置和部署。
基于云計(jì)算技術(shù),建設(shè)鐵路統(tǒng)一化、標(biāo)準(zhǔn)化、自動(dòng)化的開(kāi)發(fā)測(cè)試平臺(tái),實(shí)現(xiàn)開(kāi)發(fā)測(cè)試資源共享,提升應(yīng)用系統(tǒng)開(kāi)發(fā)測(cè)試的環(huán)境部署效率,面向全路提供統(tǒng)一共享的開(kāi)發(fā)測(cè)試云環(huán)境。鐵路開(kāi)發(fā)測(cè)試平臺(tái)技術(shù)架構(gòu)設(shè)計(jì)如圖3所示。
1.2.1 門(mén)戶(hù)管理
(1)自服務(wù)門(mén)戶(hù)

圖3 統(tǒng)一開(kāi)發(fā)測(cè)試平臺(tái)技術(shù)架構(gòu)
自服務(wù)門(mén)戶(hù)能夠?yàn)樽罱K用戶(hù)構(gòu)建一個(gè)多樣化的綜合服務(wù)門(mén)戶(hù),提供申請(qǐng)資源和審批服務(wù),其中,審批流程可針對(duì)不同服務(wù)設(shè)置相應(yīng)流程,包括門(mén)戶(hù)內(nèi)容管理、服務(wù)目錄、消息通知、服務(wù)搜索和服務(wù)生命周期。
(2)管理門(mén)戶(hù)
管理門(mén)戶(hù)以應(yīng)用運(yùn)維為核心,提供應(yīng)用節(jié)點(diǎn)管理、應(yīng)用分區(qū)管理、交付件倉(cāng)庫(kù)管理、存儲(chǔ)管理、后端服務(wù)接入與發(fā)布等,包括服務(wù)注冊(cè)、服務(wù)發(fā)布/取消、服務(wù)訪問(wèn)控制、服務(wù)監(jiān)控統(tǒng)計(jì)和流程審批。
1.2.2 開(kāi)發(fā)測(cè)試平臺(tái)云
(1)項(xiàng)目管理
項(xiàng)目管理為項(xiàng)目過(guò)程提供專(zhuān)業(yè)的知識(shí)庫(kù)、技能分工、管理工具,在有限的資源條件下按用戶(hù)期望完成項(xiàng)目的最終目標(biāo),包括項(xiàng)目的生命周期管理、風(fēng)險(xiǎn)管理、文檔管理、任務(wù)管理、問(wèn)題管理等功能。
(2)需求和變更管理
需求管理是開(kāi)發(fā)測(cè)試平臺(tái)的一個(gè)重要組成模塊,應(yīng)能夠快速高效地對(duì)需求進(jìn)行全周期管理。主要包括:定義需求屬性、需求內(nèi)容、需求流程、需求報(bào)表、需求跟蹤矩陣、需求生成任務(wù)、需求版本管理。
(3)開(kāi)發(fā)管理
開(kāi)發(fā)測(cè)試平臺(tái)中提供統(tǒng)一的交付模式,存在差異的應(yīng)用環(huán)境應(yīng)根據(jù)業(yè)務(wù)特性提供不同的部署方案,并且針對(duì)部署過(guò)程依賴(lài)的部署包進(jìn)行統(tǒng)一管理。包括開(kāi)發(fā)框架管理和開(kāi)發(fā)工具管理,提供支持Java、.NET、Python等各語(yǔ)言環(huán)境,可自動(dòng)構(gòu)建,內(nèi)置常用開(kāi)發(fā)工具,覆蓋在開(kāi)發(fā)過(guò)程中涉及的代碼管理、編譯打包、集體開(kāi)發(fā)環(huán)境(IDE)開(kāi)發(fā)、部署發(fā)布。
(4)配置管理
配置管理解決開(kāi)發(fā)測(cè)試環(huán)境下配置項(xiàng)統(tǒng)一管理問(wèn)題,將項(xiàng)目中通用的配置項(xiàng)在配置中心進(jìn)行統(tǒng)一管控,從而實(shí)現(xiàn)多業(yè)務(wù)應(yīng)用的配置統(tǒng)一發(fā)布,配置變更實(shí)時(shí)推送。主要包括:運(yùn)行環(huán)境配置、應(yīng)用組件配置、配置倉(cāng)庫(kù)、部署配置和配置審計(jì)。
(5)持續(xù)集成管理
持續(xù)集成管理讓開(kāi)發(fā)團(tuán)隊(duì)持續(xù)生產(chǎn)可靠軟件,審視軟件質(zhì)量,提升交付速度。提供代碼托管、開(kāi)發(fā)流水線、設(shè)置構(gòu)建策略、管理構(gòu)建依賴(lài)文件、自動(dòng)化測(cè)試、生成交付件策略等功能。
(6)測(cè)試管理
根據(jù)鐵路開(kāi)發(fā)測(cè)試平臺(tái)的測(cè)試管理要求,通過(guò)測(cè)試模塊可以形成快速交付體系,幫助鐵路用戶(hù)進(jìn)行自動(dòng)化測(cè)試,構(gòu)建應(yīng)用全覆蓋的測(cè)試體系。測(cè)試管理包括單元測(cè)試、系統(tǒng)測(cè)試、集成測(cè)試、功能測(cè)試、性能測(cè)試、安全測(cè)試6個(gè)方面。
(7)缺陷管理
缺陷管理是在軟件開(kāi)發(fā)過(guò)程中針對(duì)軟件缺陷的識(shí)別、溝通、修復(fù)、關(guān)閉的處理過(guò)程,開(kāi)發(fā)測(cè)試平臺(tái)的缺陷管理包括軟件缺陷申請(qǐng)、缺陷監(jiān)管、缺陷處理、缺陷庫(kù)、指派通知等功能,實(shí)現(xiàn)對(duì)信息運(yùn)行缺陷的全過(guò)程管理。
基于在線IDE的源碼開(kāi)發(fā)技術(shù)進(jìn)行研究,在線編程技術(shù)涉及Web前端以及后端編譯系統(tǒng)。Web前端需要識(shí)別開(kāi)發(fā)語(yǔ)言類(lèi)型(如Java、PHP、.net等),提供用戶(hù)代碼錄入、行號(hào)、高亮語(yǔ)法、自動(dòng)補(bǔ)全等功能。后端編譯系統(tǒng)接收到用戶(hù)的代碼,判斷用戶(hù)的代碼運(yùn)行環(huán)境,并調(diào)用正確的編譯器進(jìn)行編譯并將結(jié)果返回前端進(jìn)行顯示。在線IDE工具包括Web入口、編輯器、匯編器 (面向CPU或指令集)、編譯器 (面向不同語(yǔ)言) 同時(shí)充當(dāng)預(yù)編器、鏈接器、源碼構(gòu)建工具,其過(guò)程如圖4所示。

圖4 在線IDE開(kāi)發(fā)過(guò)程
持續(xù)集成是一種軟件開(kāi)發(fā)實(shí)踐,它倡導(dǎo)團(tuán)隊(duì)開(kāi)發(fā)成員經(jīng)常集成開(kāi)發(fā)測(cè)試運(yùn)維的全生命周期,甚至每天都可能發(fā)生多次集成。而每次的集成都是通過(guò)自動(dòng)化的構(gòu)建來(lái)驗(yàn)證,包括自動(dòng)編譯、發(fā)布和測(cè)試,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤,讓團(tuán)隊(duì)能夠更快地開(kāi)發(fā)內(nèi)聚的軟件。
自動(dòng)化部署技術(shù)是以用戶(hù)自定義的部署要求將應(yīng)用需要的環(huán)境進(jìn)行快速構(gòu)建,部署過(guò)程不需要用戶(hù)手動(dòng)干預(yù),并且能夠根據(jù)應(yīng)用的負(fù)載情況,自動(dòng)選擇部署策略,對(duì)部署過(guò)程進(jìn)行實(shí)時(shí)反饋[7]。其原理如圖5所示。

圖5 自動(dòng)化部署原理
流程編排技術(shù)使用基于業(yè)務(wù)流程建模符號(hào)(BPMN,Business Process Modeling Notation)的自定義流程開(kāi)發(fā)技術(shù)。BPMN定義了一個(gè)可視化的事件流程,該流程可用于創(chuàng)建業(yè)務(wù)流程操作的圖形化模型。業(yè)務(wù)流程圖由一系列的圖形化元素組成。這些元素簡(jiǎn)化了模型的開(kāi)發(fā),且可讓使用者便于理解和操作。
應(yīng)用資源優(yōu)化技術(shù)主要針對(duì)應(yīng)用集群的負(fù)載過(guò)大。開(kāi)發(fā)測(cè)試平臺(tái)能夠動(dòng)態(tài)擴(kuò)展應(yīng)用的實(shí)例,以支撐應(yīng)用能夠正常承載訪問(wèn)情況,保障應(yīng)用的持續(xù)、健康運(yùn)行。該技術(shù)主要依靠彈性伸縮和動(dòng)態(tài)資源管理實(shí)現(xiàn),為應(yīng)用實(shí)現(xiàn)了真正意義上的資源按需分配。資源優(yōu)化技術(shù)涉及到的技術(shù)點(diǎn)包括:彈性伸縮策略條件、策略解析器、彈性伸縮行為、資源動(dòng)態(tài)調(diào)度等幾個(gè)方面,彈性伸縮主要由監(jiān)控技術(shù)來(lái)發(fā)現(xiàn)負(fù)載的情況,并根據(jù)負(fù)載對(duì)應(yīng)的策略條件來(lái)觸發(fā)彈性伸縮行為。
云訪問(wèn)控制技術(shù),指防止對(duì)任何云資源進(jìn)行未授權(quán)的訪問(wèn),從而使開(kāi)發(fā)測(cè)試平臺(tái)在合法的范圍內(nèi)使用[8]。借助用戶(hù)身份及其所歸屬的某項(xiàng)定義組來(lái)限制用戶(hù)對(duì)某些信息項(xiàng)的訪問(wèn),或限制對(duì)某些控制功能的使用,如基于角色的權(quán)限訪問(wèn)控制(RBAC)、UniNAC網(wǎng)絡(luò)準(zhǔn)入控制的原理就是基于此技術(shù)之上。
技術(shù)路線分為兩種:(1)商業(yè)軟件平臺(tái)+開(kāi)源軟件+自主研發(fā)路線,商業(yè)軟件平臺(tái)采用Atlassian公司開(kāi)發(fā)的工具集,其工具集能夠完成統(tǒng)一認(rèn)證缺陷跟蹤、需求收集、流程審批、任務(wù)跟蹤、項(xiàng)目跟蹤,知識(shí)庫(kù)管理,持續(xù)集成,代碼檢測(cè),代碼托管等功能;采用開(kāi)源Docker&K8S平臺(tái)完成開(kāi)發(fā)管理的功能;自研或使用開(kāi)源ansible自動(dòng)化部署工具使Atlassian工具集和K8S平臺(tái)進(jìn)行聯(lián)動(dòng)。(2)開(kāi)源+自主研發(fā)路線:各個(gè)功能模塊均使用目前較為流行的開(kāi)源軟件,包括TestLink,gitlab,redmine,Docker等,各軟件基本能夠完成開(kāi)發(fā)測(cè)試平臺(tái)所涉及到的功能,但是有些軟件之間沒(méi)有實(shí)現(xiàn)數(shù)據(jù)流的自動(dòng)流轉(zhuǎn),需要二次開(kāi)發(fā)。兩種技術(shù)路線對(duì)比如表1所示。

表1 兩種技術(shù)路線對(duì)比表
因?yàn)樯逃卯a(chǎn)品采用閉源形式,有些不滿(mǎn)足統(tǒng)一測(cè)試平臺(tái)的功能不能被修改,不能做到自主可控,且費(fèi)用不菲,開(kāi)發(fā)測(cè)試原型平臺(tái)搭建采用開(kāi)源+自主研發(fā)的技術(shù)路線。
結(jié)合開(kāi)發(fā)測(cè)試平臺(tái)體系架構(gòu)設(shè)計(jì)、關(guān)鍵技術(shù)及技術(shù)路線分析,基于“鐵信云”的統(tǒng)一開(kāi)發(fā)測(cè)試平臺(tái)原型技術(shù)路線如圖6所示。

圖6 原型平臺(tái)技術(shù)路線
(1)原型以Redmine工具與各模塊進(jìn)行對(duì)接,對(duì)接模塊包括Testlink,Gitlab,jenkins。
(2)Redmine工具完成項(xiàng)目管理域需求管理的功能,TestLink工具完成缺陷管理的功能,Gitlab工具完成代碼管理功能,Jenkins工具完成持續(xù)集成的功能。
(3)sourceTree作為代碼管理客戶(hù)端與Gitlab對(duì)接,Jenkins與Sonar Qube,Gitlab,Robot Framework集成,完成代碼持續(xù)審查,自動(dòng)化測(cè)試。
(4)通過(guò)ansible自動(dòng)腳本調(diào)用Docker或K8S,完成自動(dòng)化部署,同時(shí),Docker能夠提供標(biāo)準(zhǔn)化的測(cè)試工具。通過(guò)輕量目錄訪問(wèn)協(xié)議(LADP)進(jìn)行用戶(hù)認(rèn)證。
本文通過(guò)對(duì)鐵路系統(tǒng)開(kāi)發(fā)測(cè)試現(xiàn)狀分析,引入云計(jì)算、自動(dòng)化部署等技術(shù),研究提出的基于云平臺(tái)的鐵路統(tǒng)一開(kāi)發(fā)測(cè)試平臺(tái)架構(gòu),可以有效解決現(xiàn)有系統(tǒng)開(kāi)發(fā)、測(cè)試過(guò)程中,資源分散、獨(dú)享、重復(fù)利用率低以及管理水平低等問(wèn)題,為鐵路信息系統(tǒng)開(kāi)發(fā)、測(cè)試提供新模式。