本站小編為你精心準備了阿里云下的持續集成系統設計實現參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
【關鍵詞】持續集成系統;阿里云插件;模塊化設計
1引言
很多軟件項目都有一個非常奇怪而又常見的特征,即在開發過程里,應用程序在相當長的一段時間內無法運行。大規模團隊開發軟件中,大多數公司只會在項目收尾階段才進行分支合并、試運行和驗收測試的工作,甚至還會發現軟件并不能滿足需求的情況。持續集成是一種根本的顛覆。在交付過程中,問題暴露的越早,修復代碼的成本越低,成功部署的概率就越大。持續集成高頻率地編譯、測試、審查、部署項目代碼,這其中代碼集成是主要的風險來源。因此用戶可以體會到持續集成在互聯網行業迅速發展的今天,是非常重要的。設計并開發一個自動化的測試系統,可以有效地幫助企業完成其整個的自動化測試過程,對整體的一個開發環境下某些特殊的軟件測試系統應該考慮如何能夠讓其進行全面的、完整的測試,這些都是新時代里自動化軟件測試領域里研究的焦點問題。本文對軟件自動化測試的相關技術進行了深入的分析研究,構建了一個基于阿里云的持續集成方案,力圖從理論上和實用上獲得研究進展。
2持續集成系統概述
應用需求規模越是增加就造成需求變化越是頻繁,這種情況的產生對于軟件開發提出了更高的要求,通過持續集成敏捷軟件開發方法能夠為企業提供解決的方案。引入迭代式的開發方法將軟件生命周期分成幾個小的迭代周期過程,使得在開發過程中能夠對變化做出快速的響應,為了應對變化的問題敏捷過程在每個迭代周期過程完成之后為用戶提供階段成果,在用戶對階段性結果提出針對性的修改,滿足用戶的需求。軟件開發過程中的多變性的需求也使得版本的時間周期作出調整,在邏輯復雜、需求多變、時間緊迫的開發任務之下,敏捷軟件開發方法不斷的進行設計改進和測試,通過多輪的更改和修正,從而實現項目過程中變化所帶來的成本的下降。因此持續集成受到軟件代碼程序員的支持成為了現階段軟件工作中不可或缺的內容。持續集成模式如圖1所示。
3阿里云插件設計原理
3.1阿里云插件概述
阿里云是阿里巴巴官方的云服務平臺,也有著大量的開源產品,這對于某公司后續的二次開發具有重要的意義。阿里云Eclipse插件(AliyunToolkitforEclipse)是阿里云官方提供的適用于EclipseJava集成開發環境的應用插件,致力于為廣大開發者提供一站式解決方案,它集成了三部分功能:阿里云產品圖形界面、阿里云Java應用向導和阿里云部署&工具。阿里云eclipse插件能夠讓開發人員更為輕松地使用阿里云系列產品進行開發、調試和部署Java應用程序。借助阿里云Eclipse插件,可以更加快速構建阿里云應用程序,并提高生產力。
3.1.1云產品資源管理和查詢云產品圖形界面集成了大部分阿里云管理控制臺功能,在開發應用程序時,能夠輕松訪問和管理賬戶下的云資產,包括ECS、RDS、OSS等所有類型的阿里云基礎設施產品。
3.1.2阿里云部署&工具當使用阿里云Java應用向導或自行完成本地項目開發后,借助于用戶提供的阿里云部署&工具,可以輕松的將本地的Java應用部署到線上阿里云產品中,從而可以對線上環境中運行的應用程序進行遠程調試。
3.1.3阿里云Java應用向導阿里云Eclipse插件包含了適用于Java的阿里云SDK工具包,方便從無到有的在Eclipse內,構建基于阿里云產品的應用服務,包括ECS、RDS、ESS等多種Java應用程序。
3.2阿里云插件的配置
阿里云插件配置主要由圖片上傳工具osscmd安裝、項目配置以及上傳三個步驟。osscmd是基于Python2.x的命令行工具,支持Bucket管理、文件管理等功能。如圖2所示,其中圖片上傳工具osscmd的安裝,是把本地相對路徑static/下的包上傳到oss://qy-staticresources/website/里,并做md5校驗,然后進行相關項目的后續配置。第二步是對項目maven進行打包,項目maven打包的過程實際上是對插件的文件進行打包,同時也檢驗打包的空間是否滿足要求。項目maven打包如圖3所示。第三步是,上傳至OSS(ObjectStorageService)。在OSS中,用戶操作的基本數據單元是文件對象(Object)。單個文件的最大允許大小是根據上傳數據方式不同而不同的,如PutObject方式文件最大不能超過5GB。上傳至OSS如圖4所示。
4基于阿里云的持續集成系統功能模塊的實現
4.1基本開發環境框架
針對基于阿里云的持續集成系統進行的功能和系統開發,目的是為判定該系統所具有的功能是否正確。本測試為保證軟件的正常運行,服務器端選用了較高的軟硬件配置,客戶端采用商用的工作站,具體配置如下:軟件配置環境主要是:客戶端配置:Windows7操作系統瀏覽器配置:InternetExplorer8.0服務器軟件配置環境:jenkens服務器;ARP解析防火墻;Resin-3.0.27;SQLServer2013等。
4.2系統整體構成和設計實現
基于阿里云持續集成系統的功能模塊,結合對于需求的分析我們可以將系統架構分為三層:第一層是用戶接口層,第二層是適配處理層,第三層是下載處理層。用戶接口層屬于直接對接用戶的層次,主要是針對用戶的操作進行實現,屬于協議中系統應用層,用戶可以通過安裝模塊實現全局配置;下載處理層則是將軟件版本與路由器端口對應,通過更新路由器新版本實現系統重啟升級;適配處理層在在下載層和用戶接口層之間,主要是將兩層的數據相連接,通過處理可以實現兩層之間數據的傳輸?;诎⒗镌瞥掷m集成系統的適配處理層需要同時實現多個路由器版本升級,因此在下載需求配置時需要多線程模塊同時進行。結果報告模塊顯示命令行的結果,向用戶展示集成的結果。在功能層面,基于阿里云的持續集成系統功能模塊主要分為三個功能模塊:構建、自動化測試、持續集成系統。這三個模塊是構建基于阿里云的持續集成系統最為基礎的三個內容,因此本文基于構建——自動化測試——持續集成系統三個功能模塊展開設計。
4.2.1構建構建主要通過初始化階段、用例執行階段、報告生成階段三個階段實現。(1)初始化階段:初始化階段主要是springbean的初始化以及解析頁面信息配置文件,最終初始化測試數據;springbean的初始化包括bean容器ExecutionUtil的初始化,通過ShutDownHook類加入鉤子防止程序出現意外關閉的情況。加入主配置文件page.xml并導入文件流從而解析主配置文件,通過PageManager類設置頁面對象和瀏覽器配置信息,通過DatalnfoManager類設置頁面數據并關聯相關數據路徑,實現頁面對象信息的導入;最后頁面對象信息通過dataMap獲取對應的數據,將數據值預設在對應對象上。(2)例執行階段:用例執行階段作為整個測試過程最為核心的活動,主要是完成不同的業務邏輯測試。完成邏輯測試需要啟動測試過程監聽器,通過不同狀態執行監聽對于各種測試情況進行反饋。通過從pageMap中取出相關頁面對象并獲取用戶名文本框對象,對文本框對象通過定位策略,定位到對應文本框元素;根據頁面對象通過定位策略定位到實際頁面按鈕進行點擊操作,到此業務邏輯操作完成。(3)告生成階段:主要功能有對測試過程的日志進行整理、生成測試報告、發送郵件給相關人員。激活報告監聽并調用TestNG框架并發送報告郵件給關系人。
4.2.2自動化測試自動化測試是持續集成系統最為重要的執行過程,通過測試服務主程序ITest.sh,來對指定的測試計劃進行規劃并完成產品的測試工作。并通過每日構建進行日常檢查。通過日構建進行檢查,在測試計劃文件中,通過plan_coverage.sh的功能有效排除不成功的平臺測試計劃,檢查構建報告是日構建之中最為重要地工作。檢查構建報告,主要是在自動化測試前對構建的結果報告進行分析,通過對構建成功的產品進行分析,從而獲得自動化測試可行性。
4.2.3持續集成系統基于阿里云的持續集成系統的實現,借助于流水線業務實現。通過集成、測試、以及部署上線整個流程不斷的觸發達到持續集成的效果,在持續集成的過程中流水線功能可以快速發現問題并及時修復,從而提升產品的可靠度。定時啟動管理主要是通過持續集成的機制,不斷定時進行啟動。代碼完成——測試完成——驗收完成中所有流程的完成對于生產率的提升和測試有著重要的意義。實時監控是與定時啟動管理相互關聯的功能。實時監控通過Jenkins實現了多任務同時運行,實時監控和報告構建形成最終的結果,在宏調用下通過循環的方式執行各構建周期。報告日志讀取存儲管理,在測試環境的自動部署完成之后執行自動化測試,最終向相關人員發送測試結果報告。
5總結
本文立足于持續集成系統的實際功能需求,在介紹持續集成系統的基礎上進一步介紹阿里云插件設計原理以及基于阿里云的持續集成系統功能模塊的實現,進而實現構建——自動化測試——持續集成系統三個功能模塊的設計。本文的研究對于企業來說借助該系統能夠進行更為全面的、完整的測試,并將所有的過程完全的自動化,具有很強的應用價值。本文構建了一個基于阿里云的持續集成方案,從理論上和實用上都具有一定價值。
參考文獻
[1]黃永剛,王斯洋.持續集成方法在項目中的應用實踐[J].中國財政電腦,2008(8):59-61.
[2]王英.持續集成在軟件項目管理中的作用[J].福建電腦,2009(12):66-67.
[3]戴建國,趙慶展,郭理.持續集成在項目開發中的應用研究[J].計算機工程與設計,2009,30(10):2573-2576.
[4]Kentbeck.測試驅動開發:實戰與模式解析[M].北京:機械工業出版社,2013.
[6]吳志福.基于持續集成環境的軟件過程管理[J].福建電腦,2011(5):85-86.
[7]徐仕成,楊邦榮.基于CruiseCoWrol的持續集成實現方案[J].計算機與數字工程,2007,35(4):169-175.
[8]陳剛,羌鈴鈴.如何實現主從SMP之間轉發MML命令[J].電腦編程技巧與維護,2010(6):41-43.
[9]劉嘯.主流源碼版本管理工具的特色淺析[J].程序員,2008(03):116-118.
作者:何東 單位:翼軟科技有限責任公司