內容來源:2017年4月8日,京東到家資深測試開發工程師孫斌在「餓了麼技術沙龍北京測試專場」進行《持續集成實踐》演講分享。IT大咖說做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。css
閱讀字數: 1716 用時: 11分鐘html
持續集成概念android
持續集成是一種軟件開發實踐,即團隊開發成員常常集成他們的工做,一般每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編輯、發佈、自動化測試)來驗證,從而儘快地發現集成錯誤。許多團隊發現這個過程能夠大大減小集成的問題,讓團隊可以更快的開發內聚的軟件。ios
持續集成的價值css3
一、減小風險:越早發現的錯誤,修正的費用越低。及時檢查軟件測試的健康情況,減小發布時的風險。git
二、減小重複性的工做:經過自動化的持續集成能夠將編譯、部署、測試等動做都變成自動化的,無需太多人工干預。web
三、任什麼時候間、任何地點均可以部署軟件:利用持續集成,能夠常常對源代碼進行一些小改動,並將這些改動和其餘的代碼進行集成。若是出現問題,項目成員立刻就會被通知到。ajax
持續集成對到家的意義api
京東到家是基於地理位置的o2o生活平臺。雖然業務和京東商城不太同樣,可是系統的複雜度不低於商城,從成立到如今有200+個服務。系統之間依賴度高,可是因爲業務的特殊性,迭代速度比較快。如何使各個服務可以快速部署快速測試上線,對測試和研發工程師造成了很大的挑戰。咱們引入了持續集成的概念,並開始逐步實施。
持續集成幫京東到家解決了三個問題。
一、提測質量差。若是壓縮了開發週期,質量必定是不行的。
二、測試周期長。一旦代碼質量變差,測試投入成本就會很高。
三、重複性的工做多。
如何推動持續集成
持續集成須要整個team都達成共識,按統一好的規則去作同一件事。
咱們先找了易作的、影響力大的事情去作,而後用一個項目去作試點,會獲得一些數據,就能夠用這些數據去說服領導和同事。
京東到家持續集成的實現
提升代碼到git,代碼靜態掃描,而後單元測試和代碼覆蓋job會運行,以後編譯打包,部署到對應的服務器上。
UI、jsf和App會運行自動化測試,並修復和分析失敗的case。若是有須要再作功能測試,收集功能測試代碼覆蓋率。
目前咱們對這套代碼的要求就是要修復阻塞和重要級別的bug,新增代碼必須達到必定的覆蓋率。全部系統都作到自動編譯、打包和部署。必須覆蓋主流程,不斷添加測試用例。及時查看覆蓋率報告,對於新增代碼業務邏輯必須全覆蓋。
測試環境的演變
第一階段:須要手動編譯、打包、部署。解決方案就是引入jenkins自動化編譯打包部署。
第二階段:服務器硬盤打滿了,一臺機器上部署的服務太多,服務中止。咱們作的就是定時清理硬盤空間,監控服務狀態,自動重啓服務,保證整體服務可用。
第三階段:主要問題是分佈式服務之間調不通。是由於迭代速度快,開發在本地調試,隨意修改本地配置文件。組名不對致使調用不到服務。
咱們部署了兩套測試環境,一套對外提供服務,供他人測試調用,一套本身使用。保存本地配置,與線上配置比對,防止誤改。使用自動化測試,檢查整個系統的健康情況,及時修復。
代碼靜態掃描
Sonar代碼質量管理系統
一、配置Sonar環境。
二、配置jenkins環境,下載sonarqube插件,並進行配置。
三、在jenkins代碼靜態掃描的job後,配置運行sonar。
代碼覆蓋率收集
單元測試代碼覆蓋率
Jenkins運行mvn clean install命令,生成代碼覆蓋率報告。
功能測試代碼覆蓋率環境搭建
一、啓動腳本中插入監聽參數。
二、Dump出監聽文件。
三、使用Ant腳本生成最終的html。
功能測試代碼覆蓋率
配置到jenkins的持續集成環境。
自動化測試
UI自動化測試:Selenium+TestNG+Jenkins
一、配置maven pom.xml文件。
二、配置Jenkins job。
APP自動化測試
當時選擇appium是由於它支持android和ios系統,支持現有框架和多種語言,並且能夠跨應用。最重要的是appium不依賴於源代碼。
APP自動化測試在持續集成中也遇到了一些問題。針對網絡不穩定失敗率高,咱們引入了重試監聽,若是重試3次還不能經過,那就是有問題的。第二個問題是不容易定位case失敗,咱們加入了截圖和log日誌功能,多打日誌加截圖,就能發現總體的問題所在。還有就是運行速度慢,android能夠啓動多個服務,分佈運行。
以上是我今天分享的內容,感謝聆聽!
相關推薦
推薦文章
近期活動
原文地址:t.cn/RoroPlK