最近,我們被要求撰寫一篇部落格文章,該文章應該是關於在 DevOps 環境中實現測試自動化的「最佳實踐」。雖然我們不同意本文的前提——即 DevOps 環境中的測試自動化是一個好主意——但我們認為編寫「測試自動化」文章有點浪費精力,因為大多數資訊已經很容易獲得了。
因此,與其寫一篇關於在 開發運營框架,我們決定寫一篇文章來解釋為什麼您首先要實現測試自動化,因為仍然有許多手動驅動的測試套件完全有意義的用例。
手動測試並不理想
實施背後的想法 測試自動化 DevOps 環境中的目標是從測試中消除人為因素。理想情況下,您希望盡可能自動化測試過程,這樣即使您自己不是 DevOps 專家,您至少可以相信測試是高品質完成的。
然而,手動測試是一個緩慢、繁瑣的過程,容易出錯,對於任何必須進行多次測試的人來說,這都是令人沮喪的經歷。對於手動測試人員來說,每次測試可能需要數小時甚至數天的時間才能完成。
想像一下,必須一遍又一遍地執行相同的任務,每天 10 小時,連續一個月,只是為了完成整個測試過程並發現數百個錯誤。為了以每兩天一個測試案例的速度發現幾百個錯誤,你已經浪費了一個月的時間。
更糟的是,手動測試通常是以臨時方式完成的,沒有製定真正的計劃或策略。由於這通常是一個非常耗時的過程,並且沒有動力讓它更快,因此一些測試可能永遠不會重複,並且許多可以輕鬆自動化的捷徑最終會被忽略。
測試自動化可以更好地規劃並減少浪費
現在,在規劃測試策略時,您實際上無法針對每個場景進行規劃。但是,透過自動化測試,您可以編寫腳本來觸發一組預期的事件,並且由於這些事件完全是確定性的,因此您實際上可以非常準確地計算執行測試套件所需的時間。
因此,假設所有測試都通過,您可以相當準確地估計該專案需要多少資源(工時)。當然,這會根據您是否遇到任何障礙而有所不同,但通常最好做好最壞的打算,因此您最終不會因為發現一堆錯誤而感到驚訝。
此外,由於自動化測試通常是一個相當快速且簡單的過程,因此您可以與軟體本身的開發同時進行。這意味著開發人員和測試工程師都可以繼續在同一程式碼庫上工作,同時也確保測試能按預期及時執行。
例如,假設您正在實施一個網頁應用程式 Node.js的、Backbone 和 Marionette,您需要測試應用程式的功能。您可以輕鬆地 設定 CI/CD 管道 它將自動啟動虛擬機,安裝所有必要的依賴項,並在每次將變更推送到主分支時執行測試。
因此,您不僅可以獲得一組可以重複運行的一致測試,而且還可以透過減少通常需要的手動幹預量,從自動化工作中獲得更多價值。
測試自動化的好處很多
正如我們上面所說,測試自動化可以實現更好的規劃和策略,因為您可以輕鬆追蹤所有測試、它們的狀態以及它們遇到的問題。
這意味著您可以輕鬆確定需要採取哪些措施來解決問題並繼續下一個測試,而不必在每次出現問題時從頭開始。這也意味著您可以在必要時輕鬆地為執行測試的人員提供適當的培訓和支援。
此外,測試自動化是發現和監控軟體中隨著時間的推移而出現的新錯誤和問題的好方法。人們避免自動化測試的主要原因之一是因為他們認為不可能編寫涵蓋所有可能性的測試。
然而,這遠非事實,因為遇到的每個錯誤和問題都會記錄在某個位置的日誌中,從那裡開始,只需搜尋日誌並實施修復即可。事實上,這通常是一個簡單的過程,並且需要最少的手動幹預,這使得它更加值得。
此外,透過自動化測試,您可以輕鬆建立一組標準測試,這些測試將作為建置流程的一部分一遍又一遍地運行。因此,團隊中的每個人都可以快速查看程式的運作情況,而無需自己執行程式或依賴其他人來解釋結果。
此外,由於測試通常以“黑盒”方式編寫,這意味著它們不依賴任何特定的實現細節(除了預期輸入集之外),因此它們應該可以移植到任何平台,因此不太容易出現錯誤並且更容易驗證。
摘要
總而言之,只要您擁有合適的團隊和正確的方法,在 DevOps 環境中實施測試自動化可能是一個好主意。首先也是最重要的,確保您擁有在編寫功能和效能測試方面經驗豐富的人員。
此外,確保團隊對流程有足夠的所有權,以便他們有動力將其進行到底,並作為一個整體與您合作,找出障礙並找到解決方案。
最後,確保有人負責規劃、協調和執行測試,因為這比其他任何事情都更能決定你努力的結果。
加入 25,000 多名聰明的讀者——不要錯過!