要想回答這個問題,首先要搞明白另外一個問題。那是自動化是什么?
   
    首先回答自動化是什么?常見的答案:自動化是寫代碼。如果是寫代碼,那與軟件開發有什么區別。要想回答這個問題前提是代碼是什么。代碼是人的知識與邏輯思維的一種固化方式。軟件本身是人們為解決某一問題所需要知識與做事的處理流程的固化。 而測試腳本是人們測試邏輯思維的固化。一旦把知識與邏輯思維固化下來后,相當于建立一種制度。
   
    自動化能提高效率嗎,是不可以換一種方式問,制度能不能不效率?這樣一問,大家自然也明白了,制度不一定能提高效率。只有一個好的制度才能效率。因為有了制度之后,人們的會受制于制度,缺乏了靈活度。像上一篇文章的自動化測試三個發展階段:依賴工具階段,依賴人的階段,依賴架構階段。過第一階段之后,這種感覺越明顯。嚴重的話,會出現測試綁架開發的情況。例如軟件想進行重構,但會引起接口的變化,而接口的改變,測試腳本要跟著改了并且改動一般都不會是一比一關系,而是一比N(這個N有多大,看測試case設計的合理性而定了)。如果測試改動量特別大,可能會迫使軟件放棄重構。違背了做自動化的初衷了。
   
    現在流行的敏捷開發模式,代碼重構會貫穿于整個開發流程,同樣自動測試是保證敏捷順利進行一個不可或缺的基石。沒有自動化,不可能快速持續集成。
   
    所以,成也自動化測試,敗也自動化測試。是成是敗要看自動化框架的設計。