看了這篇文章《什么是測試自動化?》
首先說明一下什么是自動化測試, 它主要完成2個方面的工作:
● 把手動的測試用例自動化,手動的測試用例可以自動執行
● 把沒有辦法手動的測試用例自動化,比如讓你測試光驅可以打開幾次,做個壓力測試,人工測試顯然不可行(也有人把這部分稱之為自動化測試,但是我覺得這樣太繞了,就全部稱之為測試自動化吧)
然后再說明一下為什么要自動化,ROI如何;
● 研發要解決的問題是,一個是效果問題,一個是效率問題, 自動化可以提高效率(大部分人這么認為,雖然其實這個有待商榷),所以自動化有利于提高效率
● 這是一種工程師的態度,或者是套用一下流行的詞,叫做Facebook的文化,Hacker的文化;因為不喜歡重復的做一個事情,把它自動化,看上去是很Cool的事情
所以自動化最重要的事情就是提高效率(當然能否提高效率,這個事情是這樣的,因為UI經常變動,或者是由于其他的外部因素,自動化需要修改,維護,那么投入的人力和物力是否大于產出或者小于產出,這個每個公司,每個產品都不一樣,具體就不在這里討論了)以及實現手動無法完成的事情;
接下來回應一下《什么是測試自動化?》
文章里面提到測試自動化是無法自動化所有的測試用例,這點是肯定的,完全同意;所以這里來說說自動化的弊端:
● 自動化其實更多的是一種防御策略,是為了防止Regression,自動化發現的bug數量一般都是不及手動測試發現的bug數量;而且有人提出了有些系統比較難發現Bug的測試用例你即使在不同的版本多跑幾次相同的測試用例效果甚微,就像殺蟲劑效應一樣,由于蟲子有抗藥性,同樣Bug也有;所以不能期望自動化測試發現更多的Bug
● 自動化測試需要更多的投入,維護,由于系統需要經常變動,期望值發生改變,所以自動化測試也需要變動
另外說明一下對API的測試不能算成自動化測試的范疇,因為你本來就是要測試這些API,只是恰好這些都可以寫成Code,可以自動的運行而已;
所以理想的情況是, 自動化的產出大于投入在自動化的人力,物力;然后解放出來的人力,物力可以花在發現新的Bug,解決新的Bug上面;而且由于大家不用去做重復的事情,真個團隊的Productivity也很高。
相信這樣的解釋,大家對自動化就有一個合理的期望,然后心安理得的選擇自動化或者是手工的測試。