標籤:

漫談自動化測試

自動化測試的重要性毋庸置疑,在穩定性作為第一要素的存儲行業,尤其如此。每一次代碼的迭代,都可能導致某些參數的變更。某一個性能參數的微小改動,就有可能導致本來可以流暢運行的業務進入停頓的狀態。對於許多應用程序來說,版本迭代是非常快的,這些迭代非常容易導致功能上的BUG,但大多數BUG只是影響了用戶的體驗,還不至於一些致命的後果。但對於企業級存儲產品來說,因為承載了企業關鍵數據,稍微一不注意,就會導致非常嚴重的後果,因此,每一次正式版本的變更,我們必須更加謹慎的對待。

維護穩定性的一個老辦法就是盡量不升級。有人會覺得運行了幾十年的老的業務系統應該更可靠。從理論上講,如果用戶需求沒有變化,功能特性(feature)沒有變動,性能要求也維持原樣,不升級是最好的選擇。但在如今的IT環境中,技術更新換代太快,為了跟上業務的步伐(比如視頻領域不斷把以前的標清視頻升級為高清視頻),功能也在不斷地調整,例行的升級不可避免。

為了適應軟體不斷迭代的趨勢,一個完整的自動化測試框架是保證系統可靠性必不可少的手段。以前跟的一個老闆在微軟工作過,他說在八九十年代,每個微軟員工有好幾台電腦,下班不用關機,後台的一個程序會自動從伺服器上下載測試腳本,把工作的機器自動融入到全自動化的測試環境當中。這樣不僅可以避免設備被限制,也有效地提高了軟體質量。很多年前尚且應該如此,何況現在?

自動化測試不是萬能葯,但它能快速發現如下問題:

* 代碼是否能夠正常構建出一個可用的版本。

* 系統是否可以正常啟動和運行。

* 系統的基本功能是否都符合預期。

* 系統的性能指標是否有可疑的變化。

* 以前修復了的一些Bug是否又出來了。

* 在異常情況系下(重啟、斷電、拔盤等),系統的穩定性是否還可以得到保障。

如果沒有自動化測試,某一次代碼提交,可能導致的某個功能不正常或者性能異常,要很久之後才能察覺到,再回過頭來追查,複雜性就會大很多。甚至很多問題要到客戶現場才能知曉,導致產品出現比較大的質量問題。

性能測試、基於CLI的功能測試、數據完整性驗證等用例,相對來說比較便於設計(但並不代表其內部測試流程就簡單)。基於Web的自動化測試,就要複雜一些。畢竟要用程序去模擬人的滑鼠點擊,就得對Web的界面元素有比較透徹的分析,然後再對用戶的正常點擊和非正常點擊進行不同的組合,模擬常規和非常規的流程。從開發的角度來講,如果在實現前端代碼的時候,能夠考慮到後續的Web自動化測試,在界面布局設置上考慮更多,後續的自動化測試就會更方便點。另外,現在瀏覽器的版本實在太多了,雖然可以在文檔裡面做一些說明,比如只支持IE某個版本,或者Chrome和Firefox,但用戶有時候用了各種***雙核瀏覽器仍然是不依不饒。還有人說,我也是Chrome,但你說的這個按鈕我怎麼點擊不了,後來一看,是解析度太小了,自適應的Web前端框架會使用一套精簡的布局。怎麼辦呢?為了用戶,能做更多的兼容性測試就多做一點吧。如果讓人來每天反覆點擊各種瀏覽器,耐心再好的人也會厭煩,所以自動化測試尤其必要。(當然,人為點擊測試也是需要的,畢竟自動化測試不能取代一切。)

以上僅針對自動化測試隨便說了幾句,如有問題,敬請指出。

(原文載於個人博客)

推薦閱讀:

簡單重構,顯著效果----提升scala自動化測試效率
同學,你為什麼定位不到元素?
性能測試解惑之並發壓力
python selenium2自動化測試系列電子書
在Selenium Webdriver中使用XPath Contains、Sibling函數定位

TAG:自動化測試 |