自動化測試的本質是先寫一段代碼,然后去測試另一段代碼,所以實現自動化測試用例本身屬於開發工 作,需要投入大量的時間和精力,並且已經開發完成的用例還必須隨着被測對象的改變而不斷更新,你 還需要為此付出維護測試用例的成本。
優勢:
1. 自動化測試可以替代大量的手工機械重復性操作,測試工程師可以把更多的時間花在更全面的用例 設計和新功能的測試上;
2. 自動化測試可以大幅提升回歸測試的效率,非常適合敏捷開發過程;
3. 自動化測試可以更好地利用無人值守時間,去更頻繁地執行測試,特別適合現在非工作時間執行測 試,工作時間分析失敗用例的工作模式;
4. 自動化測試可以高效實現某些手工測試無法完成或者代價巨大的測試類型,比如關鍵業務7×24小 時持續運行的系統穩定性測試和高並發場景的壓力測試等;
5. 自動化測試還可以保證每次測試執行的操作以及驗證的一致性和可重復性,避免人為的遺漏或疏 忽。
劣勢:
1. 自動化測試並不能取代手工測試,它只能替代手工測試中執行頻率高、機械化的重復步驟。你千萬 不要奢望所有的測試都自動化,否則一定會得不償失。
2. 自動測試遠比手動測試脆弱,無法應對被測系統的變化,業界一直有句玩笑話“開發手一抖,自動 化測試忙一宿”,這也從側面反映了自動化測試用例的維護成本一直居高不下的事實。 其根本原因在於自動化測試本身不具有任何“智能”,只是按部就班地執行事先定義好的測試步驟並 驗證測試結果。對於執行過程中出現的明顯錯誤和意外事件,自動化測試沒有任何處理能力。
3. 自動化測試用例的開發工作量遠大於單次的手工測試,所以只有當開發完成的測試用例的有效執行 次數大於等於5次時,才能收回自動化測試的成本。
4. 手工測試發現的缺陷數量通常比自動化測試要更多,並且自動化測試僅僅能發現回歸測試范圍的缺 陷。
5. 測試的效率很大程度上依賴自動化測試用例的設計以及實現質量,不穩定的自動化測試用例實現比 沒有自動化更糟糕。
6. 實行自動化測試的初期,用例開發效率通常都很低,大量初期開發的用例通常會在整個自動化測試 體系成熟,和測試工程師全面掌握測試工具后,需要重構。
7. 業務測試專家和自動化測試專家通常是兩批人,前者懂業務不懂自動化技術,后者懂自動化技術但 不懂業務,只有二者緊密合作,才能高效開展自動化測試。
8. 自動化測試開發人員必須具備一定的編程能力,這對傳統的手工測試工程師會是一個挑戰。