Devops下的接口全生命週期質量建設

什麼是devops?隨着時間的推移,devops的定義也在不斷的演進。對於其定義可能出現千人千面,但從核心觀點,總體業界仍是保持着一致的認識。DevOps不是單一的技術或者工具,甚至不僅是一個流程,他包含應用設計、敏捷開發、持續交付和監控運維等一系列流程,涉及到企業文化、團隊協做流程等多個方面,它能夠被理解爲一系列能夠高速、高質量進行軟件開發的工具鏈。數據庫

結合軟件生產全生命週期來看,devops落地實踐的核心目標是縮短開發週期,提升部署頻率和更可靠的發佈。
image.pngsegmentfault

DevOps的誕生源於企業要適應這個瞬息萬變的市場,可以作到持續交付。正如《持續交付2.0》做者在書中精煉的2個環:價值探索和快速驗證。api

image.png

快速驗證環的兩個核心關鍵是質量與速度服務器

image.png

它會要求以最可靠的質量和最快的速度,交付最小可行方案,可靠地收集真實反饋,來造成這樣的閉環。對於質量來說一個核心的實踐就是質量內建,有一個公認的事實。那就是在整個持續交付全生命週期過程當中,缺陷越滯後發現,所須要的成本就越高。質量內建就是要從生產過程當中的第一個環節開始,就要注重產出物的質量,而且在每一個環節中都要去開展質量保障活動,這就要求在軟件全生命週期參與的各個角色都須要實時的對軟件的質量負責。確保軟件在交付到下一個環節前有了基礎的質量保障。其核心目的就是減小由於質量問題致使的返工,避免浪費大量人力成本。網絡

速度,得益於在軟件全生命週期過程當中每一個環節有效的開展自動化,進而作到「持續」兩個字,好比持續構建、持續測試、持續發佈、持續運維。框架

對於快速驗證環,從測試的層面,是如何落地實踐的。讓咱們聚焦於接口,這個軟件產物中必不可少的核心組成部分。從接口的全生命週期出發,介紹接口管理、測試、監控。接下來會圍繞網易易測團隊輸出的接口全生命週期協做平臺GoAPI出發,從痛點梳理、平臺的設計、測試左移和右移實踐、接口監控閉環建設等幾個部分闡述是如何實現對於接口的「快速驗證環」運維

1.接口全生命週期

什麼是接口全生命週期?能夠從以下的一張圖來理解工具

image.png

結合軟件研發流程來看的話,接口全生命週期包含了接口定義、編寫、測試、上線應用、運維監控、回收下線等階段。在接口的不一樣生命週期過程當中,圍繞着質量內建的思想,實際上是需求開發/測試/運維等角色去開展各類質量保障活動。性能

在實踐的過程當中,一個典型的現象是接口的質量保障仍是測試這個角色在接口測試及迴歸階段進行,這種現象出現可能有兩種團隊形態,一是開發、測試、運維三個角色分工明確,你們都聚焦於自身角色的一些目標。二是你們都在積極的開展着質量活動,可是在實施過程當中發現會遇到各類阻礙和痛點。測試

那麼在接口全生命週期中有哪些核心的痛點,能夠從如下4點來進行分析

* 接口定義管理與同步難:傳統接口定義可能是文檔化管理,文檔更新則每每不及時,當接口發生變動時,時常不能及時同步到下游的測試團隊。

* 自動化門檻高:數據準備、用例編寫、用例執行和任務的編排都有較高的准入門檻

* 角色及使用階段受限:傳統模式下的接口測試只侷限於測試人員在版本回歸階段使用,缺乏協做

* 線上接口監控難:因代碼變動致使的接口異常、偶發性的接口錯誤、線上服務宕機等異常行爲缺少有效的監控與發現手段。

圍繞以上痛點,從質量內建的目標出發,從測試左移和右移的視角去思考,能夠看到以下圖示的典型問題及階段變化

image.png

* 第一個問題:測試須要更多的時間關注在接口定義層面

從接口定義開始,涉及到一個核心點在於接口管理,目前的一些管理方式中包含Swagger和Postman等形式,相似Swagger這種管理屬於靜態的,在接口變動時缺少及時性通知機制,每每會存在測試人員在測試過程當中纔會發現接口已經發生變動,這無疑會致使項目交付週期延長。

* 第二個問題:接口自測冒煙在開發與測試之間沒有造成很好的協做。

同一件事情被多人重複作了
開發人員在開發完一個API接口,會部署到開發環境中,而後經過本身寫自動化腳本或者利用 POSTMAN工具驗證一下這個API 接口是否符合預期,這時候其實已經作過一個簡單的API測試了。到了提測階段開發會將寫好的API接口文檔給測試人員,測試人員會部署代碼到測試環境中去,而後經過 TestNG 或者其餘自動化測試框架寫接口測試用例,咱們發現,API的正向用例測試,開發人員作過一次,測試人員用不一樣的方式又作了一次?

開發提測的質量不可度量

開發人員提測,測試人員進行冒煙驗收,通常只是執行一下冒煙測試用例,提交接口文檔,口頭敘述一下這些接口我在開發環境都驗證經過,符合提測標準了。可是對於測試人員來說這個口頭敘述是無法來度量提測的質量的,測試人員缺乏客觀的數據來評估接口的質量是否符合預期,從而致使後期由於質量問題出現版本回退的現象,拖延了版本交付週期。

* 第三個問題:API 接口的變更引發的疊加效應

API 接口變更是常有的事情,可是現有的流程中,一個接口的變更會牽扯出一系列的變更,接口文檔的變更,接口測試用例的變更,接口測試代碼的變更,持續集成的變更......, 時間成本瞬間提升。有沒有辦法只要一個地方修改了這個變更,那麼其餘全部的事情都解決了呢?

圍繞着接口全生命週期管理與測試中的典型痛點及多角色間協做的問題,網易易測通過多年的技術經驗積累和業務實踐,打造了GoAPI接口協做平臺。它是圍繞接口全生命週期管理、提高研發與測試效率爲目標的團隊協做平臺。平臺提供便捷的接口管理,無門檻與多維度的自動化測試,完善的OpenAPI擴展等多種豐富能力,大幅下降企業研發和測試成本。

接下來會重點介紹它的設計思路和應用實踐

2.總體設計思路

image.png

從核心目標、設計理念、實踐應用的幾個維度來看下總體的設計思路

* 核心目標:減小投入成本和增長收益

針對接口管理與測試,須要關注的一個核心是投入產出比,這會涉及到兩個指標:減小投入成本、增長收益。減小投入成本能夠從如下幾個方向去考慮:減小用例編寫的成本、減小用例維護優化的成本、減小依賴工具開發、數據構造的成本。而增長收益,咱們都知道自動化每執行一次它就發揮一次價值,那麼增長使用率,也就能增長收益;而要作到增長使用率有幾個方面能夠考慮去實施:作到人人能用,手工能用、能當工具用、同時接口全生命週期各個階段都能用。

* 設計理念:可視化、可協做、可追溯

可視化,須要作到2個0,0框架入門成本,如此才能不須要再關注自動化框架要如何去作封裝,如何去作業務分層和數據驅動等等;0編碼用例編寫,只須要拼裝好參數執行就能夠,再也不吐糟這是誰寫的測試代碼。

可協做,在前面分析痛點的過程當中一個很重要的點就是多角色共建共用;何謂共建,開發與測試共同完成接口測試用例,何謂共用,讓每個角色都可以垂手可得的去使用已有的接口自動化測試案例

可追溯,真正實踐的過程當中,當接口量級達到1萬+時,可追溯就變得很重要了,其中會包含失敗分析,得具有便捷高效的快速定位的能力。同時要針對性的展開數據統計分析,從不一樣維度和不一樣粒度去開展。

3.應用實踐

image.png

能夠看到整個接口全生命週期的各個角色都圍繞着GoAPI在實施活動,以上是一個單產品的統計數據,達到了1萬+接口,5萬+用例,5千萬+執行次數。在整個實踐應用過程當中涵蓋了接口生命週期的各個階段,從定義接口契約開始,調試能夠一鍵mock,不須要再另外搭建mockserver,接口自測冒煙及驗收,開發只需自測完成後添加一個執行集,測試就能夠一鍵完成冒煙驗收平臺能夠定時持續集成幷包含多維度通知機制,同時包含了當接口契約發生變動時,其餘全部環節會同步發生變動,以達到一鍵變動的目的。

測試左移實踐

image.png

測試環的快速驗證

利用GoAPI創建在測試環節圍繞接口的快速驗證,將GoAPI建設的接口自動化能力接入到持續集成、發佈過程、線上迴歸階段。

image.png

結合發佈平臺實施PE發佈驗證

某個業務線上應用集羣上百臺機器,而線上迴歸執行運行一次不能完整覆蓋到每臺機器上應用實例的可用性,可能會形成某臺應用實例由於不可知因素帶着問題上線,致使線上故障。那麼對於PE而言,他們的訴求是但願每次發佈的每一臺應用實例都是通過自動化迴歸過的,基於此,結合內部發布平臺實施方案以下,通常的發佈平臺都應該具有如下步驟:offline、deploy、check、online;先將當前實例下線,接着部署,而後check服務可用性,最後online到線上提供服務。只是當前check這一步只是健康檢查,而非服務功能性驗證。那麼如此能夠基於check擴展去調用GoAPI openAPI實施自動化執行,經過後再自動online。

經過這個方案實施後,PE每次發佈不再會「提心吊膽」,由於每個應用實例都是通過全量接口迴歸後上線的。

測試右移:接口監控

image.png
從接口全生命週期來看,還有「最後一千米」須要去攻克,那就是線上接口監控。首先咱們從總體的業務質量監控來看,須要依賴於業務質量監控和系統資源監控二者造成互補。

系統資源監控主要是貼近系統資源,從服務器、數據庫、中間件、應用異常、網絡等資源展開監控,可是其中的侷限在於難以直觀評估線上用戶實際影響。

業務質量監控主要是貼近業務功能場景,從接口監控、UI監控、指標監控、輿情監控等方面展開,可用於評估線上業務影響。

接下來聚焦於接口監控,經過監控是否可以及時發現接口不可用,減小對用戶的使用及體驗是很是重要的。圍繞接口監控造成的閉環解決方案,須要包含從監控、告警、處理、歸檔、統計的幾個環節。結合GoAPI的業務接口監控優秀實踐來看

image.png

從創建業務執行集開始,根據業務接口的重要程度進行執行計劃的制定,在執行失敗時,經過不一樣的重試機制來升級對應的報警策略,以達到責任人可以快速跟進處理的目的。在跟蹤分析過程當中,能夠結合業務的trace鏈路,經過在請求中帶相應的Header貫穿整個鏈路,實現對於失敗case的快速定位,處理完成後進行相應的記錄和結論同步,最後在統計層面落地了幾項指標:線上監控發現問題數、線上問題召回率、接口報警準確率,來有效的度量和推動接口監控的落地。

網易易測團隊基於網易10年質量效能經驗積累,爲企業提供測試管理、UI自動化測試、接口自動化測試、性能壓測等總體解決方案,助力企業創建健全質量效能體系,歡迎試用體驗
網易易測GoAPI

相關文章
相關標籤/搜索