《平安銀行 DevOps 體系中持續測試能力建設-金艷.pdf》由會員分享,可在線閱讀,更多相關《平安銀行 DevOps 體系中持續測試能力建設-金艷.pdf(36頁珍藏版)》請在三個皮匠報告上搜索。
1、平安銀行持續測試能力體系質量與工程效能負責人/金艷CONTENTSCONTENTS0101云原生轉型中的持續測試體系建設突破突破 DevOps DevOps 瓶頸瓶頸0202DevOps體系必不可少的基礎建設測試左移及測試自動化測試左移及測試自動化0303提升測試效率和有效性的實踐精準測試精準測試0404全鏈路壓測、混沌工程、全鏈路灰度能力測試右移測試右移0505整體的測試保障測試資源整合測試資源整合0606總結以及一些觀察與心得總結與心得總結與心得0101突破交付瓶頸突破交付瓶頸云原生轉型中的持續測試體系建設平安銀行的云原生轉型業務應用業務應用全面云原生全面云原生硬工程能力硬工程能力全面升級
2、全面升級保持系統高穩定性保持系統高穩定性提升團隊技術能力提升團隊技術能力突破交付效率的瓶頸突破交付效率的瓶頸提高業務服務能力提高業務服務能力軟件工程能力軟件工程能力全面升級全面升級技術底座技術底座全面云原生全面云原生更專業領先更專業領先 更高效復用更高效復用更穩定運行更穩定運行更敏捷創新更敏捷創新技術體系技術體系工程體系工程體系云原生轉型帶來新的挑戰和機遇微服務化微服務化系統的復雜度提升,需要我們用更多的精力關注服務集成引入引入DevOpsDevOps文化為對傳統軟件質效造成沖擊,尤其是對于金融企業引入持續交付引入持續交付更快的迭代節奏對研發質效提出了新的挑戰,開發和測試開始“互卷”引入容器技
3、術引入容器技術測試時需要考慮容器間的通信微服務架構允許獨立測試和部署每個服務組織、文化、流程的改良,讓工作的協同更加順暢,帶來能力的持續優化更多的自動化工具和相應的實踐被探索出來,研發效能上升到新的臺階好處更多:容器技術帶來環境的一致性、隔離性(安全性)、可擴展性、資源彈性,等等等等測試成為影響交付的瓶頸理想中的交付現實的交付開發測試部署開發測試部署開發測試測試測試突破瓶頸測試的持續化需求需求研發研發測試測試預發布預發布/發發布布運營運營單元測試單元測試冒煙測試冒煙測試 系統測試系統測試 回歸測試回歸測試 UATUAT測試測試代碼掃描代碼掃描代碼評審代碼評審全鏈路壓測全鏈路壓測混沌工程混沌工程
4、需求質量需求質量評估評估全鏈路監測全鏈路監測線上巡檢線上巡檢質量門禁質量門禁左移左移右移右移靜態測試靜態測試動動態測試態測試白盒測試白盒測試黑盒測試黑盒測試預防性優化方向:流程,合理性發現性優化方向:自動化&智能化能力,能力集成,環境問題需要功能覆蓋率更高更準確,總體ROI更高,過程更加可視化需要代碼覆蓋率更高,研發人員可以更精準的定位缺陷橫向:左移和右移擴展測試活動的范圍,與團隊緊密協作,橫向:左移和右移擴展測試活動的范圍,與團隊緊密協作,流程流程“持續化持續化”縱向:根據活動的性質針對性提升測試能力,提高活動效率,縱向:根據活動的性質針對性提升測試能力,提高活動效率,能力能力 “持續化持續
5、化”自動化精準化服務化/集成化0202測試左移及測試自動化測試左移及測試自動化DevOps體系必不可少的基礎建設為什么要“測試左移”問題發現得越早問題發現得越早 ,修復問題的代價越低,修復問題的代價越低測試左移的工程實踐需求階段需求階段設計階段設計階段編碼階段編碼階段左移:驗證需求的合理性/安全性左移:驗證設計的合理性/安全性左移:驗證編碼/功能實現的正確性需求評審BDDATDD設計評審安全評審代碼評審測試評審KickOffTDD單元測試持續集成自動化測試需求需求研發研發測試測試預發布預發布/發發布布運營運營單元測試單元測試冒煙測試冒煙測試 系統測試系統測試 回歸測試回歸測試 UATUAT測試
6、測試代碼掃描代碼掃描代碼評審代碼評審全鏈路壓測全鏈路壓測混沌工程混沌工程需求質量需求質量評估評估全鏈路監測全鏈路監測線上巡檢線上巡檢質量門禁質量門禁左移左移右移右移靜態測試靜態測試動動態測試態測試白盒測試白盒測試黑盒測試黑盒測試預防性優化方向:流程,合理性發現性優化方向:自動化&智能化能力,能力集成,環境問題需要功能覆蓋率更高更準確,總體ROI更高,過程更加可視化需要代碼覆蓋率更高,研發人員可以更精準的定位缺陷自動化測試:提升相關測試活動的自動化測試:提升相關測試活動的效率效率,降低,降低成本成本,并將活動,并將活動集成集成在研發平臺在研發平臺/活動中活動中研發域自動化能力構建用戶用戶體驗體驗
7、響應及解決時效響應及解決時效所見即所得所見即所得效率效率持續集成持續集成用例智能生成用例智能生成運營數據運營數據質量質量首移首移/移測質量移測質量代碼覆蓋率代碼覆蓋率能力能力整合整合 支持平臺參數化配置,單測用例一鍵生成支持平臺參數化配置,單測用例一鍵生成 單測用例集自動執行,自動上傳單測代碼倉庫,支持單測用例資產單測用例集自動執行,自動上傳單測代碼倉庫,支持單測用例資產管理管理 用例執行成功率、覆蓋率采集、分析,用例失敗原因快速定位用例執行成功率、覆蓋率采集、分析,用例失敗原因快速定位 單元測試質量紅線管控,支持單測單元測試質量紅線管控,支持單測devopsdevops全流程一體化建設全流程
8、一體化建設效能效能提升提升 平臺工具、平臺工具、IDEAIDEA插件結合,自動生成高覆蓋率、高有效性的單元測插件結合,自動生成高覆蓋率、高有效性的單元測試用例,提升代碼質量水平試用例,提升代碼質量水平 自動生成自動生成mockmock擋板、斷言、代碼邏輯分支分析,正反用例自動生成擋板、斷言、代碼邏輯分支分析,正反用例自動生成 精準單測,通過監控代碼變更,增量生成單元測試用例、增量執行精準單測,通過監控代碼變更,增量生成單元測試用例、增量執行創新創新孵化孵化 AIAI能力加持結合傳統遺傳算法的自動生成,互為補充,生成用例能力加持結合傳統遺傳算法的自動生成,互為補充,生成用例更精準更精準 單測用例
9、結果自動分析,智能探測常見代碼異常單測用例結果自動分析,智能探測常見代碼異常測試域自動化能力構建案例編寫案例執行進度跟蹤無碼案例DSL案例 缺陷管理測試報告質量門禁自動化流程管理自動化流程管理自動化案例管理自動化案例管理MOCK數據構造基礎服務基礎服務缺陷管理CI流水線自動化測試報告自動化代碼覆蓋率度量自動化案例有效性度量準備準備階段階段接口測試流程測試版本維度案例管理外部外部MOCKMOCK測試計劃有碼案例多框架案例支持等流量回放環境管理執行執行階段階段無代碼&智能案例生成平臺接口資產循環組件接口組件函數組件代碼組件sql組件案例資產組件層接口層案例層內置邏輯平臺邏輯可自定義邏輯DB邏輯執行
10、邏輯支持文件組件文件邏輯處理復合組件基于契約的智能案例生成平臺邏輯支持0303精準測試精準測試運用精準測試提升測試效率和有效性DevOps體系下測試為何難以“小步快跑”1.1.大量的黑盒測試,難以評估影響范圍:大量的黑盒測試,難以評估影響范圍:依靠人工容易造成漏測或是跟不上敏捷開發的節奏;2.2.黑盒測試無法有效衡量:黑盒測試無法有效衡量:除單元測試外,其他類型的測試對測試覆蓋程度以及質量無法精確量化,測試投入邊際成本過高,讓ROI下降;3.3.自動化測試的悖論:自動化測試的悖論:需求、功能的增長使得自動化用例積累越來越多,維護和排查的成本越來越高,“測試開發”變成了“開發”。一切都來源于我們
11、無法打開測試過程的一切都來源于我們無法打開測試過程的“黑盒黑盒”需求需求研發研發測試測試預發布預發布/發發布布運營運營單元測試單元測試冒煙測試冒煙測試 系統測試系統測試 回歸測試回歸測試 UATUAT測試測試代碼掃描代碼掃描代碼評審代碼評審全鏈路壓測全鏈路壓測混沌工程混沌工程需求質量需求質量評估評估全鏈路監測全鏈路監測線上巡檢線上巡檢質量門禁質量門禁左移左移右移右移靜態測試靜態測試動動態測試態測試白盒測試白盒測試黑盒測試黑盒測試預防性優化方向:流程,合理性發現性優化方向:自動化&智能化能力,能力集成,環境問題需要功能覆蓋率更高更準確,總體ROI更高,過程更加可視化需要代碼覆蓋率更高,研發人員可
12、以更精準的定位缺陷從另一個視角看測試精準測試基于源代碼變更分析,利用分析算法,可以精確定位影響范圍,提升測試效率。精準測試將用例與代碼間的邏輯映射關系建立起來用例與代碼間的邏輯映射關系建立起來:開發可利用精準測試正向追溯用例執行的代碼細節,進行缺陷定位與修復;測試人員可利用精準測試逆向追溯代碼的變更,快速確定影響范圍進而確定用例范圍,讓測試有的放矢;黑盒測試的過程將透明化、白/灰盒化,測試覆蓋數據更加有效。虛擬機 or 容器ApplicationAgent一級緩存二級緩存三級緩存內存過濾內存隊列MQ自動化數據(ES)Server覆蓋率數據(MySQLl)日志數據配置數據數據存儲日志文件clie
13、nt 監控系統業務系統(Java)開放平臺(OpenApi)精準測試的實施挑戰一體化一體化智能化智能化實時性實時性精準性精準性平安銀行的精準測試平臺能力數據層數據層日日志數據志數據自動化自動化數據數據覆蓋率覆蓋率數據數據配置數據配置數據服務層服務層Java代碼覆蓋JS代碼覆蓋分支覆蓋智能推薦智能定位API智能追蹤集成流水線無人值守自動觸發異常場景測試字節碼字節碼InstrumentatioInstrumentation n精準測試的運用效果增量代碼覆蓋率增量代碼覆蓋率自動化全量代碼覆蓋率自動化全量代碼覆蓋率300300%38%38%0404測試右移測試右移全鏈路壓測、混沌工程、全鏈路灰度發布中
14、和發布后測試還能做什么?針對軟件的線上表現針對軟件的線上表現進行測試進行測試在發布后的環境中測試在發布后的環境中測試在生產環境中收集質量在生產環境中收集質量相關數據相關數據全鏈路壓測混沌工程灰度發布與驗證A/B測試測試監控預警對生產環境中的日志進行分析分析學習用戶行為測試右移:在測試右移:在DevOpsDevOps的實踐中,持續從用戶側獲得反饋進而學習和提升是非常重要的的實踐中,持續從用戶側獲得反饋進而學習和提升是非常重要的實踐,測試右移旨在讓測試人員關注軟件的交付成效,獲得持續學習的手段。實踐,測試右移旨在讓測試人員關注軟件的交付成效,獲得持續學習的手段。全鏈路壓測能力版本管理版本管理基礎基
15、礎能力能力環境服務測試測試執行執行分析分析與與報告報告性能指標分析基線自動比對場景場景構建構建生產接口URL郵件服務權限控制用戶管理子系統管理預警熔斷服務器資源監控關系數據庫監控中間件監控缺陷管理鏈路篩選報告自定義全鏈路報告場景快速生成場景管理在線修改SLA管理JMX反解析Jar包自動下發作業自定義對比生產接口性能APP管理版本信息SST信息測試SQL工單生產SQL工單任務流程流水線流程報告同步壓力機控制基線管理自動伸縮定時執行在線編輯自動分割自動提取Horae批量場景指標自動上報實時日志分析日志下載非關系數據庫鏈路監控大盤壓測關聯鏈路性能調優工單資源指標分析數據庫指標分析代碼瓶頸診斷版本管理
16、版本管理管理管理與控與控制制回放流量構造壓測實時調整A類上容專項全鏈路壓測文檔歸檔SST執行率子系統覆蓋率A類應用覆蓋率A類去O專項性能巡檢(監管)生產預警SQL治理質量卡點多種壓測模式多種壓測模式 并發/階梯/脈沖/爬坡模式 混合場景模式 輪次模式支持多協議支持多協議 http/https、JDBC、TCP、RPC、Web、FTP多保障多保障閾值告警主動熔斷全流程自動化,無人值守全流程自動化,無人值守流水線觸發性能平臺預約第三方調起手工執行混沌工程能力云原生開發平臺云原生開發平臺流量模擬服務器流量模擬服務器控制中心控制中心業務生產服務器業務應用錄制服務消息隊列回放服務被測系統(虛擬機)被測系
17、統(虛擬機)業務測試服務器業務應用業務測試服務器業務應用Agent被測系統(容器)被測系統(容器)業務測試Pod業務應用業務測試Pod業務應用注冊Chaos AgentAdminDatabaseAPI自動化測試+業務腳本Agent生產流量模擬流量控制信息DevOps流程控制Agent流量模擬流量模擬 生產/測試流量錄制 流量編排 流量對比回放 流量分析故障注入故障注入 故障注入場景提供各類實驗 虛機環境故障模擬(SaaS、PaaS、IaaS多種故障)容器環境故障模擬(節點、網絡、資源)場景實驗場景實驗 業務場景與故障場景組合 動態參數調整 執行計劃配置,日志收集分析常態演練回歸常態演練回歸 重
18、要系統定期混沌工程模擬 單類故障基線,運營穩定保障渠渠 道道網網 關關應用應用A A應用應用A A應用應用B BESBESB應用應用C CDBDB應用應用C CX流量控制流量控制前后端同步灰度多應用同步灰度可視化配置管理全鏈路灰度能力全鏈路灰度能力使得測試人員得以在可控的情況下,以真實可控的數據進行測試。全鏈路灰度能力使得測試人員得以在可控的情況下,以真實可控的數據進行測試。0505測試資源測試資源整合整合動態測試環境、流量仿真以及測試依賴的解耦,等等流量錄制與回放數據庫對比數據庫對比數據庫關鍵表/字段對比實時對賬報文對比報文對比請求和響應報文對比非功能診斷非功能診斷回放接口性能診斷故障注入自
19、愈性診斷穩定性預防演練告警邏輯驗證關聯系統影響診斷關聯系統影響診斷能診斷重構后是否影響其他系統的正常運維技術難點:技術難點:流量采集不影響生產系統分布式環境下流量排序和流量-數據庫對齊流量鏡像/回放時并發處理邏輯重構版本重構版本業務交易比業務交易比對對生產流量生產環境生產環境預發環境預發環境oracle入口應用入口應用生產生產版本版本流量復制mysql性能診斷性能診斷穩定性預防演練穩定性預防演練告警邏輯驗證告警邏輯驗證監監控控系系統統監控數據數據庫賬務比數據庫賬務比對對流量鏡像流量鏡像/回放回放MOCK擋板分布式測試系統系統A A接口接口A A接口接口B B接口接口C C接口接口D D系統系統
20、B B接口接口A A接口接口B B接口接口C C接口接口D D第三方系統第三方系統接口接口A A 系統系統A A接口接口A A接口接口B B接口接口C C接口接口D D系統系統B B接口接口A A接口接口B B接口接口C C接口接口D D第三方系統第三方系統接口接口A A擋板擋板服務服務依賴系統(第三方)被測系統MOCKMOCK測試接口訪問mock服務地址匹配不成功,轉發真實服務匹配成功,返回配置的報文返回真實響應得益于統一規范的契約管理能力,我們得以實現得益于統一規范的契約管理能力,我們得以實現MOCKMOCK擋板,將依賴關系復雜云原生應擋板,將依賴關系復雜云原生應用測試流程解耦用測試流程解
21、耦.beforebeforeafterafter動態測試環境ABCDABCACED動態環境資源池基準環境專項測試環境動態SST1環境動態SST2環境全系統全鏈路全系統全鏈路生產基線版本生產基線版本生產測試配置一致生產測試配置一致混混 部(容器部(容器+虛機)虛機)動態(一鍵使用)動態(一鍵使用)虛擬虛擬/容器標準基礎容器標準基礎公共依賴統一公共依賴統一應用依賴就緒應用依賴就緒流量路由流量路由數據隔離數據隔離ETag1Tag2V1V2V1V2V1V2V1V2tag 1tag 1tag 1tag 1tag 1tag 1tag 1tag 1tag 2tag 2tag 2tag 2V1環境資源的靈活、
22、高效、精細化申請與使用,測試部署流程編排一鍵部署,測試環境動環境資源的靈活、高效、精細化申請與使用,測試部署流程編排一鍵部署,測試環境動靜環境結合靜環境結合,提升環境可用性,降低成本。提升環境可用性,降低成本。0606總結與心得總結與心得總結以及一些觀察與心得平安銀行的持續測試體系預發環境生產環境故障可轉移故障可轉移彈性擴縮容彈性擴縮容容錯限流容錯限流運營可監控運營可監控測試環境預發校驗預發校驗灰度灰度/藍綠發布藍綠發布仿真模擬仿真模擬流量流量模擬模擬全鏈路壓測全鏈路壓測常態預案演練常態預案演練數據監測核對數據監測核對需求分析需求分析-開發設計開發設計-單元測試單元測試-集成測試集成測試-系統
23、測試系統測試-UATUAT驗證驗證CRCR持續交付(持續交付(CICD CICD)安全測試安全測試兼容測試兼容測試性能性能/混沌混沌環境一致性環境一致性賬務賬務/數據核對數據核對測測試試評評審審生產變更生產變更:可監控、能回滾、必驗證:可監控、能回滾、必驗證版本管控安全安全掃掃描描接口接口測試測試集成集成測試測試常態常態壓測壓測代碼代碼覆蓋覆蓋工具支撐,持續度量,持續改進工具支撐,持續度量,持續改進灰度部署灰度部署-流量模擬驗證流量模擬驗證-異動監測異動監測-生產流生產流量拉入量拉入質量質量攔截攔截架構可感知架構可感知切流決策架架構構評評審審環境巡檢環境巡檢測試/質量活動環境階段原則度量支持研發過程:研發過程:需評審、全測試、守安全需評審、全測試、守安全總體方針工具工具 固化 流程流程實踐實踐 運用 方法流程流程 引導 實踐實踐方法方法 源自 需求需求“工作的軟件工作的軟件”高于高于 “詳盡的文檔詳盡的文檔”敏捷宣言平臺能力很重要,歸根到底還是“人”平安銀行倡導的平安銀行倡導的“工程師文化工程師文化”誠信是底線誠信是底線質量是生命質量是生命專業是根本專業是根本協作的基礎協作的基礎銀行業務的紅線和基礎銀行業務的紅線和基礎科學的方法,有效的手段科學的方法,有效的手段最后“和諧的交付團隊和諧的交付團隊 ”