軟件測試自動化不是靈丹妙藥 自動化測試工具
一天和同事聊天,他試圖實現一個功能,讓一個程序在系統重啟后能自動啟動,并且加載指定的配置。
我分析了一下發現實現這個功能會比較復雜,主要是涉及多處配置文件的修改;仡^再看看,發現這個系統很少會重啟,可能一年就4,5次。于是我建議他放棄這個想法。因為維護配置文件會成為一個負擔,考慮到系統重啟的頻率,這會是得不償失。
但是看來他并不以為然。他說他的目標是這些配置工作完全不用人來參與,“最好是在家里動一個手指所有的配置工作都自動化的為我做好了”?吹剿判臐M懷的樣子,我不愿意掃他興。但我相信如果即使有一天他真正實現了這個目標,維護這個自動化系統也會讓他寢食難安。
這樣悲觀的看法,我想在兩三年前我肯定沒有。那個時候我像他一樣對“自動化”抱有無限美好的期望,好像只要測試自動化了,軟件測試工作馬上變得和“公務員一樣輕松”,只需要動一下指頭,所有的testcase都自動化得跑起來。
但隨著做了更多的自動化測試項目,也看了更多的成功和失敗的案例。對自動化的特點了解得來越多,對自動化的期望也在一直不斷的下降。
這種看法的變化,我倒覺得是越來越貼近真實的“自動化測試”。
如果要充分利用一個工具,一定要了解其特點,F在在業界,自動化軟件測試就像一個人見人愛的香饃饃。自動化測試好像已經和“高科技”,“高測試效率”,“成熟的測試team”…這些褒義詞聯系了起來。在這種一邊倒的氛圍下,自動化程序的缺點和不足和必須要付出的代價被掩蓋了起來。
認識自動化的不足,我覺得首先要轉變的一個想法是“自動化測試并不是用來發現bug的”。原因很簡單,自動化測試基于testcase,但所有的bug中只有大約1/4是僅僅按照testcase來測試就能發現的,其它的bug,來自于聰明的“人”的經驗,分析,發散思維和說不清道不明的“靈光一閃”,而這些特性對于自動化程序來說完全是無能為力。所以,幻想“動一下手指”,所以的bug都被自動化程序發現出來是完全不可能實現的。
自動化另外一個特點是自動化本身也是程序,也需要投入大量的人力來實現。一個軟件買出的copy越多,它的價值越大。對于自動化測試程序來說,它運行的次數越多,它的價值越大。有下面一些原因都可能減少自動化測試程序運行的次數,甚至導致自動化項目的失敗。
1)測試產品功能或界面變化頻繁
2)自動化的case本身不需要頻繁的測試,比如安裝過程或者一些非核心的功能
3)自動化程序不穩定,容易跑“死”掉
看到了一些自動化測試程序因為這些原因而效果大打折扣,我對“自動化一切”的熱度慢慢退燒了。
最后一個需要注意的自動化測試程序的特點是,自動化測試程序不是商業產品,它的用戶都是專業人士,所以它不用商業產品那樣高的擴展性,靈活性,可配置性,友好的交互性。因為這些特性的得來是要付出高昂的代價的,那就是人力投入和軟件的復雜度大大增加。對于設計師來說,如果要在這些特性和簡單中選擇的話,一定要選擇簡單。
1)對于錯誤處理要簡單直接,而不要靈活和聰明。打印錯誤并直接退出是最好的選擇,不要試圖猜測錯誤的根源并試圖從錯誤恢復。這里包括用戶輸入,環境錯誤等。
2)對于環境設置,要求單純一些,不要去兼容環境變化。一般來說測試環境都是有測試人員在維護。試圖兼容環境可能導致代碼大大增加。
3)對于自動化測試的代碼來說,也不要用太炫的設計技巧和復雜的設計模式。因為自動化測試的代碼最好能被使用它的測試人員讀懂,甚至能做簡單的修改和排錯,這樣能提高自動化測試的次數。
對自動化期望不能太高和自動化程序不要設計得太完美,是我對自動化測試程序設計和使用過程中獲得的最深刻的體會。
文章來源于領測軟件測試網 http://www.kjueaiud.com/