一,什么是自動化測試:
- 首先自動化測試技術,是以程序測試程序,以代碼代替思維,以腳本的運行代替手工測試。把以人為驅動的測試轉化為機器執行的一種過程。目的是為了節省人力,時間或硬件資源,提高測試效率。其次自動化測試涵蓋各種各樣的測試種類如:功能(黑盒)自動化測試,功能(白盒)自動化測試,性能測試,壓力測試,GUI測試,安全性測試等...
二,自動化測試的優勢:
-
回歸測試更方便,可靠:通常來說,這是自動化測試最主要的任務和特點,特別是在程序修改比較頻繁時(新功能的不斷加入,老功能邏輯不變或很少變的),效果是非常明顯的。由於回歸測試的業務流程操作和測試用例是預先完全設計好的,預期結果也是完全在項目人員掌握之中,將回歸測試交給計算機自動運行,可以極大提高測試效率,縮短回歸測試時間。
-
可運行更多更繁瑣的測試,且快速高效:自動化測試明顯的一個好處就是可以在較少的時間內運行更多的測試,有很大一部分業務功能由於業務邏輯極其繁瑣,使用手工測試的話要耗費很多時間,測試次數不是太多的話還可以接受,但是要求測試次數多了的話手工測試人員會沒有耐心,而自動化測試的耐心是無限大的,並且計算機的執行速度遠比人工快。
- 可執行相對於手工來說相當困難或跟本做不到的測試:比如對於大量用戶的並發測試,不可能讓足夠多的測試人員同時進行,但是可以通過自動化測試模擬很多用戶同時並發點擊某一功能,從而達到測試的目的,再例如人工不可能二十四小時不休息的進行測試,但是計算機則不用休息....等。
- 更好的利用資源,使資源的使用更有價值:將更繁瑣的任務自動化,以及提高准確性和測試人員的積極性,將測試人員解脫出來投入更多的精力設計更好的測試用例,有些測試不適合自動化測試,手工測試人員可專注於手工測試部分,或將測試人員精力投入新功能或者測試更深的業務邏輯中去爭取發現更深層次的缺陷。
- 具有一致性和可重復性:由於機器是自動執行的,每次測試的內容與操作的一致可以得到保障,從而達到測試可重復的效果 ,機器可以按照相同的軌跡不斷的執行測試並不會發生差錯,而手動測試很難或者不可能做到這一點。
- 自動化腳本完全具有復用性:由於自動化測試通常以腳本的方式來實現,這樣在不同的版本之間,就有可能只需要做少量的維護甚至不用做任何修改,實現在不同版本中使用相同的測試腳本執行相同的測試用例。
- 使軟件更有信任度:由於測試是由計算機代勞的,所以不存在執行過程中的疏忽和錯誤,完全取決於測試的設計質量,一旦軟件通過了具有說服力的自化測試后,軟件的信任度會大大增加。
- 多環境下測試:一個系統往往會被要求能支持各種不同的環境並穩定運行,但是這么多不同的環境如常用的瀏覽器:IE6,IE7,IE8,FireFox等,系統有:windows2003,windowsXP,windows Vista,windows7等,甚至還有殺毒軟件 ,那么多環境組合,如果每一種環境組合都來人力完成,那么研發周期得成倍增加,而自動化可以發揮其優勢與作用,由計算機代勞,在不同的環境組合中運行。
三,自動化測試的劣勢:
- 永遠不可能代替手工測試:自動化腳本無法做到手工測試的覆蓋率,不是每個測試用例都適合轉換成自動化測試用例。復雜性極強的操作也只能通過手工測試來完成,如果寫成代碼的話會是件大麻煩事,得不償失。比如驗證當前頁面的布局是否正確。
- 無法完全保證測試的正確性:自動化測試是由腳本組成的,它的核心任然是代碼。簡單來說,自動化測試就是程序測試程序,是程序就會有缺陷,所以不能保證測試工程師開發的腳本就一定沒有缺陷,如果代碼有 一個小小的邏輯錯誤,哪怕是一個條件判斷的誤寫也會導致測試結果完全出錯,當然對於自動化測試工程師來說,大多數的錯誤還是會在腳本調試中避免的。
- 手工測試發現的缺陷遠比自動化測試的多:自動化測試幾乎是無法發現新缺陷,大多是用來發現曾經發現過的缺陷在每個新版本下有沒有重新出現。自動化測試更適合缺陷預防,而不是發現更多缺陷,自動化測試最大的用途就是回歸。
- 對測試質量的依賴性極大:自動化測試的運行,首先是建立在手工測試質量穩定的大條件下,如果當前版本測試的質量不夠穩定,運行自動化測試會非常不順利,幾乎是一種無用功白白浪費時間的行為。
- 測試自動化可能會制約軟件發展:由於自動化測試比手工測試更脆弱,以及腳本維護受到限制,從而制約軟件的開發。
- 自動化工具死板問題:自動化測試無法做到像人類一樣隨心所欲的創造,自動化測試好壞完全取決於測試負責人和測試開發工程師的思想與技術,和自動化測試工具沒有任何關系,所有程序都是依靠輸入代碼的方式來告訴工具該怎么做。
- 成本投入高,風險大:自動化測試需要很大的成本投入,並且沒有良好的成本分析與控制手段以及自動化測試計划,與執行過程控制,那么往往會導致自動化測試項目失敗。白白浪費人力物力,還得不到任何回報。
- 自動化測試要求相對較高:自動化測試工程師要有一定的開發背景,開發技術越高,腳本質量也就越高,越具有想象力。
四,自動化測試適用范圍:
- 軟件需求變動不頻繁:測試腳本的穩定性決定了自動化測試腳本的維護性。如果軟件需求變動過於頻繁,測試人員需要根據變動的需求來更新測試用例以及相關的測試腳本,而腳本的維護本身就是一個代碼開發過程,需要修改,調試,必要的時候還要修改自動化框架,如果所花費的成本不低於利用其節省的測試成本,那么自動化測試便是失敗的。項目中某些模塊相對穩定,而某些模塊需求性很大。我們便可以對相對穩定的模塊進行自動化測試,而變動較大的用手工測試。
- 項目周期較長:由於自動化測試需求的確定,自動化框架的設計,測試腳本的編寫與調試均需要相當長的時間來完成,這樣的過程本身就是一個測試軟件的開發過程,需要較長的時間來完成,如果項目周期比較短,沒有足夠的時間支持這樣一個過程,那么自動化測試便不可能實現。
- 自動化測試腳本可重復使用:自動化測試腳本的重復使用要從三方面來考量,一方面所測試的項目之間是否存在很大的差異性(如B/S系統和C/S系統的差異);所選的測試工具是否適應這種差異;最后,測試人員是否有能力開發出適應這種差異的自動化測試框架。