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