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

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

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

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

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

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

速度,得益於在軟件全生命週期過程中每個環節有效的開展自動化,進而做到“持續”兩個字,比如持續構建、持續測試、持續發佈、持續運維。

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

1.接口全生命週期

什麼是接口全生命週期?可以從如下的一張圖來理解

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

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

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

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

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

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

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

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

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

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

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

同一件事情被多人重複做了

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

開發提測的質量不可度量

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

  • 第三個問題:API 接口的變動引起的疊加效應

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

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

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

2.整體設計思路

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

  • 核心目標:減少投入成本和增加收益

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

  • 設計理念:可視化、可協作、可追溯

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

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

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

3.應用實踐

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

測試左移實踐

測試環的快速驗證

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

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

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

通過這個方案實施後,PE每次發佈再也不會“提心吊膽”,因爲每一個應用實例都是經過全量接口迴歸後上線的。

測試右移:接口監控

從接口全生命週期來看,還有“最後一公里”需要去攻克,那就是線上接口監控。首先我們從整體的業務質量監控來看,需要依賴於業務質量監控和系統資源監控兩者形成互補。

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

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

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

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

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

網易易測GoAPi試用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章