自動化測試優與劣
爲什麼要開展自動化測試?手工測試與自動化測試相比孰優孰劣呢?本節針對該問題展開論述與講解。
測試工做中,每每須要面對不少問題。常常能夠聽到測試工程師的抱怨,其抱怨內容大致以下:
v 重複、頻繁的工做太多;
v 測試工做任務重,測試周期短,工做壓力大;
v 創新性的工做太少,沒法體現本身的能力與本身的人生價值;
v 測試結果有時須要精確到秒,手工測試來作太難了。
那如何將測試工程師從繁雜的測試工做中解脫出來?如何體現測試工程師的價值,發揮測試工程師的特長?又如何將測試結果精確到秒呢?
上述問題都可以經過自動化測試來解決,一方面提升了測試的工做效率,另外一方面能夠經過自動化測試體現測試工程師的能力,改變衆人對測試工做的觀點。html
1.1 自動化測試定義
既然自動化測試能夠彌補手工測試的一些不足,並能體現測試工程師的價值,那何爲自動化測試?它又具有哪些特性?
自動化測試即藉助於測試工具、依照測試規範,從局部或所有代替人工進行測試以及提升測試效率的過程。其具有以下主要特徵:
v 自動測試過程是經過模擬人工操做,完成對被測試系統的輸入,而且對輸出進行檢驗的過程。
v 自動測試是由軟件代替人工操做,對被測試系統的GUI發出指令,模擬操做,完成自動測試過程。
相對於手工測試,自動化測試可歸納爲以下幾點:
v 優化成本:下降勞動量,下降測試成本;
v 可靠:提升測試的全面性,提升測試精確度;
v 快速:加快測試速度;
v 規範化:提供規範化的測試流程;
v 可重用:提升測試的重用性;。網絡
1.2自動化測試與手動測試的關係
自動化測試既然有如此大的優點,那手工測試是否能夠退出測試舞臺呢?首先,,讓咱們思考幾個問題。經過對以下問題的討論,來解答讀者的疑問。工具
1. 手工測試與自動化測試相比誰發現的缺陷多?
測試的主要目的是經過發現缺陷、解決缺陷來提升軟件質量。一般,測試的執行須要依賴測試用例。而測試工做中執行測試用例的通用方法每每是手工運行測試用例。假想一下,若是某個測試用例被自動化,則首先應對自動化後腳本的正確性進行測試。
據統計數據顯示:手動測試能夠發現80%以上的缺陷,而自動測試只能發現20%左右的缺陷。這偏偏反映出自動化測試源於手工測試,且只是替代人工的重複性勞動。測試
2. 測試質量孰高孰低?
自動化測試(工具)只能判斷實際結果與指望結果之間的差別。所以,在自動化測試過程當中,測試任務就演變爲驗證明際結果與指望結果的一致性。而測試的目的是提升測試的質量。所以經過手動測試,測試質量更高一些。優化
3. 自動化測試與軟件開發的關係?
自動化測試比手動測試更「脆弱」。軟件開發過程當中,部分功能的改變,也有可能使自動化測試崩潰。而因爲自動化測試比手工測試開銷大,而且須要不斷的維護,這也限制了自動化測試的開展。spa
4. 自動化測試工具是否存在侷限性?
自動化測試工具畢竟是軟件,工具只可按預訂指令執行。而自動化測試工具和測試者均可以按指令執行一組測試,但人擁有思想,能夠按不一樣的方式、不一樣的思惟完成相同的任務。
例如:測試工程師運行測試用例(或測試場景),執行測試執行過程當中,常常需檢查實際輸出是否正確。此時,即便軟件實際輸出與指望輸出一致,軟件也有可 能存在缺陷,測試者能夠判斷,而測試工具則不可。測試者能夠發揮其想象力和創造力改進測試用例(或測試場景),而測試工具只有呆板的執行。
經過以上四個問題的討論,能夠得出結論:手動測試不會退出歷史舞臺,其有存在的價值。同時,手動測試比測試工具的優越性還有不少,手動測試能夠靈活的 處理意外事件。例如,網絡鏈接中斷時,手動測試就能夠儘量快地解決問題,然而這樣的意外事件卻可讓自動測試的執行終止。
以上,1.2和1.3小節分別闡述了自動化測試與手動測試存在的必要性,那麼在測試工做中,什麼時候引入自動化測試呢?自動化測試又有哪些優點呢?下面經過如下幾節,逐一揭示。htm
1.3什麼時候開展自動化測試
何時適合開展自動化測試呢?
測試工做中,被測軟件(或系統)須要多個版本的迭代。根據公司(或項目)的不一樣,版本發佈的時間也存在差別。
開展自動化測試以前,首先需依照測試用例,對被測功能模塊展開手動測試。當手動測試執行經過後,使用自動化測試工具,將手動測試的操做過程錄製下來, 並將正確的結果進行保存(被稱爲指望結果)。因爲自動化測試工具記錄的爲關鍵性功能模塊,被測軟件(系統)的下一版本發佈後,該模塊仍應進行測試。
在軟件新版本的測試中,啓動自動化測試工具,運行前面錄製好的自動化測試腳本。對比實際運行後的結果與預期結果,如不一致,則肯定爲缺陷;如一致,則認爲該功能模塊在新的版本中測試經過。
到此,能夠得出一條結論:自動化測試,適合在被測軟件(或系統)版本相對穩定後開展。如軟件版本相對不太穩定,則會形成使用自動化測試工具錄製的腳本在新的版本中回放失敗,這樣既浪費人力,又浪費時間。事件
1.4 自動化測試的優點
自動化測試的開展究竟能給測試工做帶來哪些改進,帶來哪些突破與欣喜呢?其實,自動化測試的特色即可以很好的歸納自動化測試的優點。其主要特色以下:資源
1. 可重複
不能否認,軟件測試有時確實是繁雜且重複性較高的工做。關鍵性功能模塊要在不斷迭代的測試版本中重複的測試,而這些工做,隨着軟件測試版本的迭代將一 直持續下去。當開展自動化測試後,便可經過自動化工具來替代這些重複性工做。大大縮減迴歸測試的工做量與壓力,有效提升工做效率,縮短迴歸測試的時間。開發
2. 可程序化
自動化測試深刻開展後,將再也不是簡簡單單的錄製與回放,自動化測試將優化錄製的測試腳本,大大提升腳本的靈活性與交互性。自動化測試錄製後生成腳本,腳本中包含錄製過程當中生成的操做與數據。測試工做中,需用不一樣的測試數據覆蓋不一樣的測試路徑來知足不一樣的測試場景。
所以,數據維護將是一個繁雜的工做。能夠將數據與錄製的自動化腳本剝離,用外部數據源管理測試數據,而測試腳本只負責測試流程的組織。這樣,就能夠大大提升自動化測試的靈活性與可持續性。
後續自動化測試工做中,還可開發UI界面,使用UI驅動自動化測試腳本。增長自動化測試交互性。
3. 可靠,提升測試精確度
自動化測試能夠執行一些手工測試難以達到或不可能實施的測試。例如,測試工做的執行要精確到秒;模擬大量用戶同時對某一個功能點展開測試。這些工做都是手動測試沒法實現或很難達到的。而開展自動化測試後,很容易實現這些測試需求。
4. 資源的有效利用
將繁雜重複的測試任務實現自動化,能夠提升準確性和工做效率,提升測試工程師的工做積極性。將測試工程師從繁雜重複的工做中解脫出來,投入更多精力到 其餘的測試工做中(如測試質量),這更有利於測試質量的提升。在實際工做中,有些測試場景是僅適合於手動測試的,測試工程師能夠專一於手動測試部分,提升 手動測試的效率。
1.5 自動化測試實施的場景
1.4小節中提到,並不是任何手動測試都適合用自動化測試來替代。究竟哪些場合適合開展自動化測試呢?
v 迴歸測試;
v 更多更頻繁的測試 ;
v 手工測試沒法實現的工做 ;
v 跨平臺產品的測試;
v 重複性較強的操做 。
哪些場合又不適合開展自動化測試呢?
v 軟件版本不穩定;
v 涉及與物理設備交互的測試;
v 測試結果較容易經過人工判斷的測試。
1.6 實施自動化測試的成本
當前,不少企業或管理者指望藉助軟件測試自動化做爲催化劑,提升效率、提升質量,同時,節省開支。甚至有些企業但願實施自動化測試後,就可以給企業帶來效益。
在此,能夠確定的是自動化測試已經在不少領域成功實施,也有不少成功案例給了企業但願,而且這些企業成功實施自動化測試後,確實節省了至關可觀的費 用。而不幸的是,也有不少失敗的案例,即便在看到光鮮的成功案例背後,也有失望與失敗的過程。身邊也有不少企業不止一次嚐到了自動化測試失敗的滋味。花巨 資購買自動化軟件,被擱置,努力化爲了泡影。失敗的結果不只僅形成了人力、物力的損失,更是直接給公司帶來了經濟上的損失。
測試自動化實施前期須要考慮不少因素,人力、物力、財力都是須要認真考慮與規劃的。自動化測試在整個測試周期中什麼時候開展,哪些測試工做能夠由自動化測 試替代,這些都須要在開始部署自動化測試前,認真的思考。影響自動化測試效率的因素,不僅僅是你們看到可量化的測試工做,還有許多無形的因素影響着自動化 測試,如測試組織的部署等。所以,在真正實施前必定要認真規劃和考慮自動化測試實施方案。
自動化測試的實施過程,徹底不一樣於手動測試。自動化測試用例與手工測試用例也大不相同。自動化測試實施過程當中,須要不斷的開發與維護腳本,所以對測試人員能力有很高的要求。
自動化測試實施前,須要認真分析與規劃測試方案,計算自動化測試的成本。自動化測試成本包括如下幾方面:
v 軟件成本:自動化軟件產品購買的費用;
v 培訓成本:自動化測試工程師培訓費用;
v 人力成本:自動化測試用例和測試腳本的編寫的人力成本。
只有合理的規劃自動化成本,站在全局角度考慮自動化的成本與收益,方可增長自動化方案成功實施的可能性。