十多年了,介面自動化測試越來越雞肋?
引言
從《 Google 軟體測試之道》到後來的敏捷開發、DevOps ,10 多年了,介面自動化測試一直是測試領域必談的重點。各種自動化測試工具( Postman 類)、自動化測試框架、自動化測試平臺層出不窮,每個公司/部門甚至每個團隊都有一套直接的自動化解決方案。但盲目投入後,反而會感覺越來越雞肋,食之無用棄之可惜。
介面自動化的價值
不管你是 B/S 還是 C/S 架構,APP 還是小程式,還是什麼協議,總體來說是由 GUI 和服務端 API 組成。通常一個迭代是 PM 需求、RD 開發/聯調、QA 單功能測試、bugfix(穿插多輪)、合碼 QA 整合/迴歸測試、發版。在這一套模式下,大家常說的介面自動化測試(暫不考慮 UI 自動化)的價值如下:
提高測試效率/降低人力成本?
因為自動化測試執行很快,所以引入介面自動化測試能提高測試效率。但有個很現實的問題,介面自動化只覆蓋了服務端 API ,GUI 這部分也有很多邏輯,RD 也是有大量工作量投入的,這部分的測試是少不了的。即使是偏服務端 API 的功能,你的手工 GUI 測試替代率是多少?介面自動化執行完了能不需要手工測試嗎?這恐怕不敢打包票吧。所以對於一個端到端的測試團隊,反而介面自動化 case 的編寫和維護成了額外的負擔。
降低人力成本也是無稽之談,因為你手工 GUI 測試的成本並沒有降下來,反而需要投入寫介面自動化的人力。除非你之前就有一批人是使用 Curl 測介面的。
提高測試覆蓋率?
這個理論上有道理,一些介面引數分支,UI 上無法走到,透過介面則可以直接覆蓋到,提升了覆蓋率,後面 UI 上增加了此分支能保證基本的質量,提升迭代效率。但事實上產品變化很快,還沒等覆蓋到新引數分支,需求又變了,介面甚至都得重寫一遍。掉入了過早最佳化的陷阱。
持續整合和持續交付( CICD )!
網際網路大部分開發模式都是迭代開發、小步快跑。介面開發完成後還沒到測試環節,這時候跑一遍自動化(迴歸測試),能保證基礎功能沒影響,程式碼就可以合入了,過幾天就自動進入到測試環節。也能儘早發現問題,縮短交付週期。
同時還可以用作線上監控,保障服務穩定性。
保證結果的一致性和準確性!
手工用例總是需要人理解然後執行,因為各種原因,不同的人可能對同一條 case 理解不一樣,造成執行偏差。然後人總有惰性,雖然很少,但偶爾還是會有因覺得執行過程偷懶而導致的漏測。而介面自動化一旦成為規模,執行的結果就是可靠的。
總的來說,如果你是想只透過介面自動化這一種方式降本提效,那介面自動化可能會事與願違。而是應該把提質作為目的,即介面自動化作為質量保障的重要手段,儘早的寫(不應該在服務上線了補),穿插到整個研發生命週期裡面去,才能發揮更大的作用(特別是現在 DevOps 時代)。合適的度量指標:線上問題召回率(基本不可能透過手工召回)、自動化 Bug 發現比率(含 CICD 過程中發現的)。
介面自動化的成本
在評估自動化收益的時候我們常用這樣一個公式:自動化收益 = 迭代次數 x(手工執行成本 – 用例維護成本)- 用例編寫成本。但在介面自動化中不太合適,前面也說了,介面自動化和手工測試並不對等,並不是替代人工。不過自動化測試的成本倒是可以透過類似的公式計算:執行次數 x 用例維護成本 + 用例編寫成本。這可能和大家想象的不一樣,介面自動化通常被認為是邊際成本很低,即用例編寫成本會隨著執行次數增加而攤薄。但事實上維護成本也不低,而且無法攤薄,因為不執行就不需要維護,只要執行就會出問題,就需要排查、維護。
維護成本的來源可能是多方面的,雖然都有一定的解決辦法,但不能忽視這部分的成本,而且分散在日常中還是隱性成本,如果做的不好,甚至會出現團隊都很累,但質量又很差的情況。
維護成本來源 | 解決方案 |
---|---|
介面引數不相容改動,需要相關 case 都改動 | 介面適當封裝,case 使用封裝後的模板或函式,方便使用和維護 |
前置變數失效導致 case 失敗,比如商品 id 或者說一個新環境的適配成本 | 一方面 case 裡面不能寫死 id,需要變數化,資料和邏輯分離;另一方面,case 需要自給自足,相關依賴資源在前置操作中產生,並在後置操作中銷燬 |
case 間的量子糾纏 | 適當的執行使用者隔離,一些資源操作加鎖 |
很多測試框架/平臺把重點放在寫 case 這塊,但其實都沒 Postman 好用,不過也有一些新方式,比如流量錄製匯入。但拉長 case 週期來看,編寫成本是一次性的,10 分鐘寫完一條 case 和 1 小時寫完一條差別不大。更多的應該放在如何寫好 case(場景構造、資料準備等)、維護好 case ,這才能降低最終的成本(放心沒廣告)。
總結
還是那句話:軟體工程沒有銀彈。雞肋不雞肋要看目的,降本增效可能不是直接的收益。同時也要注意介面自動化維護成本也不小,需要重點投入解決這塊的問題,才能使最終的 ROI 高。
當然,本文看著還是泛泛而談,並沒有說介面自動化該如何寫,但我認為具體怎麼寫都是招式問題,先修一下內功心法總綱更重要。
原文字人部落格: https://iyaozhen.com/api-automation-test-tasteless.html
初來寶地,我說的可能比較片面,但也希望大家討論討論,豐富下這塊的話題
相關文章
- 越來越強大的SAFS/STAF/STAX自動化測試框架框架
- 視覺上越來越扁平,互動上越來越擬物視覺
- C# 中的 is 真的是越來越強大,越來越語義化C#
- 程式設計師越來越值錢了程式設計師
- 為什麼軟體測試行業越來越受歡迎?行業
- 介面自動化測試
- 這款能夠生成文件的介面測試軟體,為什麼越來越受歡迎?
- 遊戲公司做影視:我們越來越認真了遊戲
- 【日記】感覺自己越來越擺了(546 字)
- Chrome越來越臃腫Chrome
- TypeScript 正在越來越重要TypeScript
- 短壽魔咒下,數值卡牌遊戲越來越難了遊戲
- 你有沒有感覺網頁越來越臃腫了?網頁
- 百萬tokens低至1元!大模型越來越捲了大模型
- 測試前景分析——崗位會越來越少嗎?
- photoshop2022破解版出來了,p圖越來越智慧,使用越來越簡單
- 越來越討厭爬蟲爬蟲
- 越來越“簡單”的JavaJava
- python 介面自動化測試Python
- 介面自動化測試框架 HttpFPT框架HTTP
- 二、介面自動化測試(2)
- protobuf 介面自動化測試摸索
- 創造一個大型遊戲世界越來越難了嗎?未必遊戲
- 想在遊戲裡不打出敏感詞,已經越來越難了遊戲
- 流量越來越貴?降本增效--程式化廣告投放
- 益普索:歐洲交通變得越來越電氣化
- javaScript正變得越來越流行JavaScript
- 越來越鋒利的C#C#
- Django 介面自動化測試平臺Django
- 介面自動化測試解決方案
- 介面自動化測試 - RobotFramework RESTinstanceFrameworkREST
- 使用 testng 做介面自動化測試
- JMeter 介面自動化測試(手工轉自動化指令碼)JMeter指令碼
- 當軟體更改的成本代價越來越低,你的產品就會越來越強!!!
- 谷歌高管越來越官僚化?CEO皮查伊這樣解釋谷歌
- RPA技術超越傳統自動化,讓業務流程越來越高效
- 自動化測試系列 —— UI自動化測試UI
- 人工智慧的影響正變得越來越難以預測人工智慧