前段時間面試了某零售電商企業的測試經理崗位,面試官當時提了這樣一個問題:我們這邊測試團隊開展自動化測試工作將近一年了,但目前還未看到明顯的對測試過程或者質量的改善效果。如果是你,你會如何做?
自動化測試其實是一個老生常談的話題了,業內各種自動化測試平臺/框架,或者最佳實踐已經足夠多。
按理來說大家照貓畫虎摸着別人的路走應該都不至於難以落地,但現實是依然有很多團隊面臨難以落地或者說落地了沒到達預期效果。
我想結合自己的落地實踐經驗,試着分析爲什麼難以落地拿不到好結果,並給出自己的一些思考和建議。
自動化測試要解決什麼問題?
在傳統的軟件研發交付流程中,大致有五個階段:需求-設計-編碼-測試-發佈。測試更多的只是這個流程中的一環,主要負責QC(質量檢測),即分析需求,評估測試點,設計測試用例,執行case,發現並追蹤BUG。
由於測試處在軟件產品發佈前的最後一環,且在前面幾個階段往往有各種原因(比如需求變更、臨時需求)導致延期提測,真正用於測試活動執行的時間會被壓縮。
這就導致了一個問題:測試要用更少的時間爲可能更多的工作量來兜底。線上正常發佈沒什麼問題還好,如果出了問題大多第一時間找測試問責。
自動化測試,就是將手動執行的部分交給機器或者工具自動執行,通過一定的規則和判斷邏輯自動出具結果,提高執行的過程效率,讓測試人員單位時間內的執行效率可以有大幅提升。
隨着軟件工程和質量保障的相關理念不斷髮展,以及各種開源商用工具平臺的出現,自動化測試從一開始的提高執行效率向着更多方向擴展,比如造測試數據、線上業務場景巡檢,這些其實也對應着測試左移右移。
總結一下,自動化測試要解決的問題主要如下:
- 測試準備階段:提高測試活動開展前準備工作的執行效率(造數據);
- 測試執行階段:提高測試活動執行過程的效率(UI/API/UNIT自動化測試);
- 測試跟蹤階段:提高軟件線上發佈後的跟蹤和信息反饋效率(線上主流程巡檢);
但如果我們換個思維來看待自動化測試,我們會發現自動化測試最大的價值在於:縮短了各個階段的信息反饋鏈路。
即通過提高效率,可以更快的發現可能存在的風險,風險越早發現修復的成本越低,對質量的影響也越小。
爲什麼自動化測試難以落地?
自動化測試屬於高度和業務場景綁定的技術項目,要落地就要解決以下問題:
- 需求的穩定性:如果需求經常變更,那隻會造成自動化測試的大量重複返工。
- 環境的穩定性:測試用例的執行和結果驗證需要一個穩定的環境,而目前很多中小型公司對測試環境的穩定性不那麼重視,甚至是選擇性忽略。
- 人員的穩定性:自動化測試用例大多要結合具體的業務場景來設計,且相關的測試數據也需要考慮場景的複雜性,如果測試同學在不同的項目和需求間疲於奔命,那很難保證測試用例以及數據和被測場景的高度匹配。
- 目標的穩定性:自動化測試屬於技術實踐,合理明確的目標和階段里程碑就很重要。但很多測試同學在落地自動化測試時,根本沒考慮清楚到底要怎麼做,要解決什麼問題,通過什麼手段解決問題,只想着我要用某個高大上的框架或者工具,別人在做我也要做。
- 系統的簡潔性:這點可以理解爲系統架構的設計是否清晰,調用關係明確,請求鏈路可觀測。大部分自動化測試都是調用各種API或者元素執行case,如果系統架構設計混亂,不同服務和模塊間的調用關係混亂,那麼就需要花費大量的時間去梳理這些才能開展後續的工作。前期大量的時間精力投入會極大的影響後續工作的開展,因爲這意味着成本的增加。
總的來說,自動化測試有很顯著的對質量保障和提升效率的優點,但要實踐落地依然要面臨諸多挑戰。
而發現問題,用合理可行的方法解決問題,並考慮投入產出比,這些纔是落地一個技術項目的根本要素。
自動化測試如何達到預期效果?
我們在做一件事之前,一般都會對其賦予目標,比如開展自動化測試是爲了提供測試過程效率。所謂的預期結果,就是針對做這件事所設定的度量指標,比如自動化測試的預期結果是降低版本回歸測試的耗時。
有了指標就需要對其進行可量化的考覈,才能保證結果是否符合預期,比如原來版本回歸耗時2人/日,通過自動化測試希望達到0.5人/日。
自動化測試要落地達到預期效果,在我看來主要有這幾點需要考量:
- 明確的目標:落地自動化測試的目的是什麼,是爲了提高效率還是單純的想學習一個新工具/框架。
- 合理的評估指標:評估指標的制定要和目標有直接關聯,而不是照抄大廠,大廠的指標也許更好但不一定最合適。
- 多維度的度量數值:度量指標要從多個維度制定,而不是單一維度;度量指標依然是一個輔助決策工具,而不是決定性的給出結論;
- 合理可執行的過程方式:要達到好的目標,最關鍵的還是回到執行過程中。執行過程建議先劃分爲不同階段,每個階段制定合理的小目標和明確的時間節點,然後根據具體的執行情況及時調整。
比較合理的執行過程可以參考下列內容:
將大目標拆成比較小的幾個目標,以自動化測試來說:剛開始只覆蓋核心業務場景的P0場景,先拿到好的結果,然後再擴大覆蓋範圍,細化case的粒度,直至最終目標。
則是小步快跑,做出MVP結果(最小可行性方案),用好的結果說服團隊和上級,擴大覆蓋範圍,不斷改進和優化自動化測試的提效效果。
制定自動化測試的落地裏程碑,以及預期的交付時間和交付效果。比如第一週demo跑通,第一個月覆蓋主流程P0場景,第二個月覆蓋P0+P1場景,提升迴歸測試效率30%。
從我的經驗來說,成功的技術項目要落地達到預期效果,要具備這些特質:可落地可執行,有明確的落地時間+執行方式+預期結果。