自動化測試落地為什麼那麼難
提起自動化測試能力,作為現在測試人員技術能力體現的一部分,越來越多的人關注到這部分能力的提升。但是,很多團隊的落地效果並不佳,在轟轟烈烈的開始中,慢慢淪為 PPT 產物。那麼,如何讓團隊真實地享受到自動化帶來的提效呢?結合個人在不同公司的落地情況,說說自己的想法。
01 管理好預期
提效從來不意味著降本,如果你是想透過自動化測試,來減少測試人員的數量,節約人力成本,以此為目標的話,大機率是失敗的。個人認為,自動化測試的意義在於構建快速反饋的能力,不論是整合在 CICD 流水線上,還是作為線上巡檢的一部分,都能夠提升質量反饋的速度。在敏捷研發的大環境下,快速反饋能力是必不可少的。不能讓測試執行成為團隊交付瓶頸。
記住這個初衷,它將影響後續一系列的動作。不要讓它變形了。
02 自動化的前提是標準化
在之前的《透過抓包能否做好介面測試》中,有提到過,只有標準化後,才有可能自動化,很多測試負責人僅從測試的角度出發,透過一些取巧的方式來實現介面自動化(比如透過 Curl 或者錄製 har 檔案,來實現介面測試),雖然能在短期內看似落地了介面自動化,但是缺乏對介面的理解,是無法長期執行併產生效果的。
這裡的標準化,指的是介面文件的時效性問題,很多團隊也有自動維護的介面文件,但都是第一稿的資訊,後續在實現過程中的變更都沒有辦法在文件中體現,那麼做介面自動化就會非常的痛苦。
所以,推動上游的介面標準化、實時性,就成為關鍵問題,其實這是個雙贏的事。對研發而言規範了介面,自己聯調也方便。並不難推動。
03 需要具備工程化思維
如何解決第 2 點的問題呢?你不能期待讓研發人員手動去維護介面文件,也不能期待研發人員主動告訴你介面變更了,這是不現實的,也不要抱怨。解決這類問題,需要從工程能力的角度去著手。基於現在的研發能力,不論是 Swagger 還是 ApiDoc,都有能力直接從程式碼工程上自動生成介面文件,而且還是實時的。
個人的實踐是,如果團隊比較小,那就直接引用 Swagger 的標準化框架,然後直接對接 Swagger 路徑,去自動解析介面,監聽介面變更。如果團隊較大,可以寫個 SDK,來主動上報 Swagger 路徑,從而獲取介面資訊。
一個完整的介面自動化全鏈路大致如下:
這樣對研發而言,改動量最小,又能規範研發程式碼,讓研發主管也能從中受益,相互繫結利益,推動起來也容易。
04 貼合實際業務的場景化指令碼
很多時候,自動化測試淪為雞肋的原因是,大多數的測試用例都只是單介面的用例,透過引數的等價類、邊界、異常值作為人參就完事了。不是說這類測試不重要,而是真的沒太必要把時間花在這上面。這些完全可以透過介面定義和引數註解來約束,出問題的機率不大(做好 Code Review 和靜態掃描,用好框架,能解決 90% 的這類問題)。
從測試覆蓋的角度看,我們更希望看到的是多介面串聯場景,能夠真實地模擬業務操作,把資料流完整地跑通,配合上有效的檢查點,來幫助我們發現、攔截問題。
這部分的具體內容,可參考《介面測試這麼玩才明白》。
所以,貼合實際業務場景的鏈路介面操作,合理的檢查點設定,才能讓自動化有效地運轉起來,能幫助我們有效地去攔截問題。測試用例的數量和覆蓋率並不是我們追求的資料。切記。
05 最大化介面測試的價值
基於介面自動化的指令碼,我們還可以做很多事,讓這件事的價值最大化。常見的有以下幾類:
CICD 門禁:由於自動化的執行效率高,可以整合到 CICD 中,作為質量門禁的一部分,把問題攔截在開發環境,及時反饋問題。
造數工具:在合理的引數化場景下,多數介面測試場景都能用於測試資料的製造,特別是對於鏈路比較長的前置資料,介面造數是個非常可行的方案
輔助迴歸測試:基於介面自動化測試,可以快速覆蓋核心功能,把時間節約出來,做針對性的專項測試或者對新功能進行驗證。前提是你的用例足夠清晰和健壯。
線上巡檢:線上環境的撥測已經被越來越多的團隊重視,也是測試右移的一項重要能力,自動化測試可以作為業務線上巡檢的一部分,快速發現問題。
06 小結
自動化測試是構建測試人員快速反應能力的基本要求,也是提升效率的有效手段,它需要前期的投入,標準化的維護以及有效的測試用例設計,才能最大化地發揮它的價值。自動化測試的負責人,需要具備推動標準化落地的能力,並讓自動化在更多的地方體現出價值來。
任意一項技術手段的推廣與實踐,不論是研發過程的規範,還是測試活動的規範,都不是一次性的投入,都需要長期持續地投入維護,潛移默化地影響其他人。
關於自動化測試的 ROI,東東也寫了一篇估算的文章,大家可以參考下:自動化測試投入產出效益與價值
相關文章
- 自動化測試是什麼?什麼軟體專案適合自動化測試?
- ? python 介面自動化 (二)--什麼是介面測試、為什麼要做介面測試 (詳解)Python
- 遊戲的留存為什麼那麼難調?遊戲
- web自動化測試工具那麼多,教你到底該怎麼選Web
- 軟體自動化測試有什麼優勢?自動化測試框架有哪些?框架
- 自動化測試為什麼不適合用於遊戲領域?遊戲
- 在遊戲裡“翻盤”為什麼那麼難?遊戲
- 軟體測試為什麼需要自動化測試框架?權威軟體測試公司分享框架
- 為什麼有些設計師找工作那麼難?
- 為什麼要學習自動化測試?這篇文章告訴你答案
- 什麼是自動化運維?為什麼選擇Python做自動化運維?運維Python
- Redis為什麼那麼快?Redis
- 為什麼程式設計那麼難?是我腦子不行嗎?程式設計
- 單元測試效率優化:為什麼要對程式進行測試?測試有什麼好處?優化
- 為什麼很多基於 python 的自動化測試框架要用 excel 寫用例Python框架Excel
- 大佬答疑解惑丨進行Web自動化測試,為什麼總是定位不到元素?Web
- 自動化測試與軟體測試有什麼區別?Python入門教程Python
- 程式設計為什麼那麼難:從儲值卡扣款說起程式設計
- 為什麼開發一款作業系統就那麼難?作業系統
- Java自動化測試框架有哪幾類、區別是什麼?Java框架
- PO模式在selenium自動化測試框架有什麼好處模式框架
- Kafka為什麼速度那麼快?Kafka
- 自動化測試系列 —— UI自動化測試UI
- 為什麼要做介面測試?怎麼做?
- 軟體自動化測試的作用有哪些?為什麼要選擇專業軟體測試公司進行?
- 物聯網方面的測試,自動化測試怎麼架構?架構
- 你們測試介面做自動化的主要用於什麼目的呢?
- Python 自動化測試框架到底是個什麼東西?Python框架
- 為什麼 python 那麼熱門Python
- 為什麼SSL證書那麼貴?
- 破玩意 | Redis 為什麼那麼快Redis
- CSS 為什麼這麼難學?CSS
- webpack 為什麼這麼難用?Web
- 為什麼 CSS 這麼難學?CSS
- 【自動化測試入門】自動化測試思維
- 明知《動森》是一場遊戲,為什麼那麼多人“動真情”?遊戲
- 自動化專項應當研究的是什麼,請教一個落地方向 (介面自動化)
- 自動點膠機為什麼那麼受手機生產行業的熱愛?行業