qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          我們正在路上—從持續集成到持續發布

           持續集成作為一種很好的軟件工程實踐被很多團隊所采用,和其他一些先進的實踐一樣,它最終的目的一定是服務于產品的。產品的價值最終體現在用戶體驗的提升,而這個的前提就是產品的每一次更新能夠及時地傳遞給用戶,對于運維團隊來說就是更快地在生產環境中部署最新的產品,對于研發團隊來說就是更頻繁地發布可以工作的軟件。
            暫且拋開業界非常流行的DevOps理念,單純地從研發團隊來看,如何快速的發布對用戶有價值的軟件是重中之重。
            那結合持續集成,我們又可以做些什么呢?
            先來看看我們持續集成的現狀
            獨立的環境:持續集成往往有一套獨立的測試環境,而團隊還會在其他測試環境中進行測試,兩者似乎從來沒有交集
            獨立的構建:持續集成往往就是對當前最新的代碼做一些自動化的測試,而完全忽略了軟件版本的管理,甚至不能很好的保證各種測試是否是基于同一份代碼
            輔助手段:持續集成往往作為一種測試的輔助手段,更多的是用于快速發現代碼提交階段的錯誤
            以上這些在持續集成初期完全沒有問題,而且這種方式也的確帶來了不少的價值,能夠幫助團隊更透明地了解產品的質量,并且快速的定位和解決問題。只是,我們可以做的更多
            再來展望下持續發布的流程
            整體的思路就是以持續集成流水線作為核心,把軟件發布的各個環節透明地展示給團隊,并且通過流水線來管理版本的發布流程
            測試環境整合:打通持續集成環境/手工測試環境/線上模擬環境,保證一條流水線上使用同一份代碼,同一份構建物
            測試流程整合:一鍵式的環境部署和一鍵式的版本管理(打TAG,拉分支,構建物的存儲等),發布前對產品質量有清晰的了解
            重要和主要手段:以持續發布流水線為基準,并積極拓展其他類型的測試
            把持續集成融入到產品開發和發布階段,而不是簡單地搭建一套“自動化運行任務”,并充分利用構建流水線實現流程和質量的雙重把控
            最后來看下某個產品初步定義的持續發布的流程
            產品現狀
            三套環境:持續集成環境(云主機),手工測試環境(云主機),線上模擬環境(物理機)
            持續集成狀態
            自動化的編譯,打包,部署,冒煙測試和快速性能測試已經實現自動化并實時通過代碼提交觸發,全程20分鐘左右
            單元測試和靜態代碼檢查還在完善中,也實時通過代碼提交觸發,不過沒有列入關鍵點,也就是成功與失敗并不直接影響構建流程
            每日的功能測試(1000+個測試用例)在晚間運行,全程3個小時左右
            新功能測試在手工測試環境下進行
            上線前需要在線上模擬環境進行性能測試和穩定性測試

           持續發布流水線
            持續集成環境實時保證當前的提交沒有破壞基本功能
            通過手工觸發(QA人員控制),一鍵部署產品到手工測試環境并能在流水線上展示手工測試結果(通過簡單的設置一個變量達到效果);同時可以選擇觸發功能測試,達到同步的執行
            如果QA人員認為當前測試版本可以達到內部發布要求,可以一鍵打TAG,并生成和存儲dist包
            通過手工觸發(QA人員控制),一鍵部署dist包到模擬線上環境,而后自動化進行性能測試和穩定性測試
            理想狀態這步應該是自動觸發,由于目前機器的不可獨占性,暫時只能手工觸發
            自動化的性能測試和穩定性測試還是實施中
            最終版本的對外發布也是通過手工觸發(QA人員控制)
            以上的流程是根據項目/產品的需求和現狀制定的,只是一些思路可以借鑒,具體的實施一定要結合實際情況,因地制宜的開展
            Jenkins持續發布流水線
            幾個Jenkins持續發布流水線配置小Tips
            通過BuildNameSetterPlugin顯示當次流水線構建的版本(SVN revision或是Git revision)
            通過ParameterizedTriggerPlugin自動觸發下游任務,并把構建版本信息傳遞下去
            通過CopyArtifactPlugin用于構建物的部署
            通過BuildPipelinePlugin手工觸發某些任務,用于需要人工介入的階段

          posted on 2014-04-03 11:20 順其自然EVO 閱讀(1899) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乌海市| 云南省| 高碑店市| 梁平县| 田林县| 鄄城县| 禄劝| 鲁山县| 平顺县| 呼玛县| 二连浩特市| 天峨县| 林州市| 临邑县| 揭阳市| 邻水| 炉霍县| 仁寿县| 静宁县| 西贡区| 洛川县| 临高县| 休宁县| 鲁甸县| 大悟县| 伊金霍洛旗| 澳门| 保康县| 右玉县| 兴业县| 金寨县| 萨迦县| 禹州市| 柳江县| 屯门区| 棋牌| 上饶市| 北碚区| 仁布县| 修文县| 谢通门县|