自動化測試的意義是什麼?什麼時候需要自動化測試?

自動化測試的意義是什麼?什麼時候需要自動化測試?

13 人贊了文章

自動化測試的成本高,效果差,是一個相對的,而針對某些具體項目,是必須要接入自動化測試的。

首先說一些什麼時候會需要自動化測試

首先咱們討論這個問題之前要帶著一個疑問:決定要不要做自動化測試的因素有哪些?

應該說時間才是一個衡量比重比較大的因素。

假如一個項目從立項到結束只有一個月的時間,而這一個月的時間可能相當長的時間都是用來看需求文檔,改需求文檔,編寫測試用例等,真正留給測試的時間是不多的。所以這個時候如果強行要做自動化測試,可能用例設計還沒有完成,後面跟隨改動頭就更大了。

所以對於時間成本和工作效率而言,手工測試絕對是第一選擇。

但是呢,一旦項目穩定下來,就要考慮接入自動化測試了。因為這個時候項目比較穩定,做自動化就可以參照著手工用例去做了。

拋去了時間,就要考慮成本和效率了。

那麼講到這裡,也就明白了自動化測試的一些特點:

1、自動化測試是為了確保項目可以正常上線,項目的主流程沒有bug,而手工測試就是為了發現很多很多的bug。

2、從理論上來說,自動化是可以覆蓋到所有的手工測試的流程的,但是相應的如果每一次測試都用自動化,靠著公司的一到兩個自動化工程師,成本和效率反而會打折扣,跟不上迭代的速度。這也就是題主說的自動化成本高,效果差的反映。

3、如果是一名自動化測試人員,自身的價值絕對不是簡單用腳本來體現的。無論搭建環境、搭建web框架、開發應用程序,都是能力的體現,說白了,自動化測試工程師是要發揮創造力的工作。

那麼說什麼樣的項目直接就可以拿來做自動化測試呢?

自動化測試之所以能在很多大公司實施起來,就是有它適合自動化測試的特點和高的投資回報率。

? 產品型項目。產品型的項目,每個項目只改進少量的功能,但每個項目必須反反覆復的測試那些沒有改動過的功能。這部分測試完全可以讓自動化測試來承擔, 同時可以把新加入的功能的測試也慢慢地加入到自動化測試當中。

? 增量式開發、持續集成項目。由於這種開發模式是頻繁的發布新版本進行測試,也就需要頻繁的自動化測試,以便把人從中解脫出來測試新的功能。

? 能夠自動編譯、自動發布的系統。要能夠完全實現自動化測試,必須具有能夠自動化編譯,自動化發布系統進行測試的功能。 當然,不能達到這個要求也可以在手工干預的情況下進行自動化測試。

? 回歸測試。回歸測試是自動化測試的強項,它能夠很好的驗證你是否引入了新的缺陷,老的缺陷是否修改過來了。在某種程度上可以把自動化測試工具叫做回歸測試工具。

? 多次重複、機械性動作,將煩瑣的任務轉化為自動化測試。自動化測試最適用於多次重複、機械性動作,這樣的測試對它來說從不會失敗。比如要向系統輸入大量的相似數據來測試壓力和報表。

? 需要頻繁運行測試。在一個項目中需要頻繁的運行測試,測試周期按天算,就能最大限度的利用測試腳本

那麼說不適合做自動化測試的項目是什麼特點呢?

? 定製型項目(一次性的)。為客戶定製的項目,維護期由客戶方承擔的,甚至採用的開發語言、運行環境也是客戶特別要求的,即公司在這方面的測試積累就少,這樣的項目不適合作自動化測試。

? 項目周期很短的項目。項目周期很短,測試周期很短,就不值得花精力去投資自動化測試,好不容易建立起的測試腳本,不能得到重複的利用是不現實的。

? 業務規則複雜的對象。業務規則複雜的對象,有很多的邏輯關係、運算關係,工具就很難測試。

? 美觀、聲音、易用性測試。人的感觀方面的:界面的美觀、聲音的體驗、易用性的測試,也只有人來測試。

? 測試很少運行。測試很少運行,對自動化測試就是一種浪費。自動化測試就是讓它不厭其煩的、反反覆復的運行才有效率。

? 軟體不穩定。軟體不穩定,則會由於這些不穩定因素導致自動化測試失敗。只有當軟體達到相對的穩定,沒有界面性嚴重錯誤和中斷錯誤才能開始自動化測試。

? 涉及物理交互。工具很難完成與物理設備的交互,比如刷卡的測試等。

相信討論到這裡,題主的疑惑肯定是解決的非常清晰了。下面咱們就延伸的說一說,談談手工測試與自動化測試的區別以及目前行業內外對於自動化測試存在的一些誤區

一、手工測試與自動化測試的區別

1、手工測試與自動化測試並不是對立的

很多人會誤以為有了自動化測試就不需要手工測試了,手工測試做的好也用不到自動化測試,其實不然。二者並不是對立的,什麼手段效率高,就用什麼手段。自動化測試發展了這麼多年,也沒有把手工測試給取代。

2、手工測試的特點

手工測試有較強的異常處理能力,能通過人為的邏輯判斷效驗當前的步驟是否正確,同時用例的執行具有一定步驟跳躍性,能夠步步跟蹤,細緻定位問題。

如果修正缺陷所需時間稍長,那麼想將手工測試應用於回歸測試將變得異常困難。這是因為需要測試的測試用例太多。

難以對不可視對象或對象的不可視屬性進行測試。

3、自動化測試的特點

執行的對象是腳本,能通過人為的邏輯判斷效驗當前的步驟是否正確實現,用例步驟之間關聯性強,不像手工測試用例那麼跳躍。另外也是用來保證產品主體功能正確和完整,讓測試人員從繁重的工作中解脫出來。

可以更好的利用資源。在夜間執行自動測試用例。測試具有移植性和可重複性。好的測試腳本往往具有較好的平台移植性。可以更快地將軟體推向市場。因為自動測試節省了大量的時間。但是自動化測試要求的先期投入比較大,而且要求人員必須經過嚴格的培訓。

4、自動化測試與手工測試的關係

自動化測試不能完全替代手工測試,自動化測試的目的僅僅在於讓測試人員從繁瑣重複的測試流程中解脫出來,把更多的時間和精力放在更有價值的測試中,例如探索性測試。

二、自動化測試的12個認識誤區

1、自動化的軟體測試與手工的軟體測試過程一樣

自動化測試所需要的技巧與手工測試所需要的技巧是不一樣的。

通常,你的項目經理會被那些測試工具銷售們迷惑,認為自動化的軟體測試就是簡單地按一個錄製的按鈕,產生測試腳本。而事實上並沒有那麼簡單。

區分自動化測試所需要的技巧與手工測試所需要的技巧是非常重要的。最重要的是,自動化測試工程師需要掌握軟體開發技巧,沒有接受任何培訓的手工測試人員,或者沒有編程背景的手工測試人員,在實施自動化測試時會碰到很多困難。

2、自動化測試一定會馬上大量減少測試人員數量

自動化測試不會馬上大量減少測試人員數量。因為開展自動化測試初期需要投入一定的人力進行自動化測試腳本開發,並逐漸將自動化測試腳本用於日常的測試中,逐步減少手工測試人員從事重複勞動的時間和人數。為了縮短自動化測試腳本的開發時間,可以考慮將自動化測試腳本的開發工作藉助外包的力量來早日實現大規模的自動化測試。

3、測試自動化就是錄製和回放

僅僅錄製得到的不是有效的自動化腳本。

很多項目經理仍然把測試自動化等同於使用錄製回放工具。而事實上,錄製得到的腳本通常是不可重用的腳本,腳本中充滿了硬編碼的值,這些值應該被參數化,否則腳本僅僅適用於一個測試情況,腳本還應該加入條件判斷、循環等結構,以便增強測試腳本的靈活性。

4、自動化測試找不到bug

自動化測試不直接找bug,而是通過解放有經驗的測試工程師的生產力,讓其從重複的回歸測試中解放出來,從事新的測試方法和測試手段的研究。通過自動化測試解放出測試人員的時間和精力來間接地找到更多、更深層次的新bug,將產品質量再提高一個檔次。

5、自動化測試工具是「萬能」的

很多人一聽到自動化測試,就認為自動化測試工具可以完成一切測試工作,從測試計划到測試執行再到測試結果分析,都不需要任何人工干預。顯然,這是一種理想狀態,現實中還沒有哪個測試工具有這個能力,並且將來也不會有。在現實中有關的測試設計、測試案例,以及一些關鍵的測試任務還是需要人工參與的,即自動化測試是對手工測試的輔助和補充,它永遠也不可能完全取代手工測試。

6、自動化測試工具容易使用

對於這一點,很多測試工程師有同樣的錯誤觀點,認為測試工具可以簡單地通過捕獲(錄製)客戶端操作生成腳本,且腳本不加編輯就可用於回放使用。事實上,自動化測試不是那麼簡單的,捕獲的操作是否正確,以及腳本編輯是否合理都會影響測試結果。因此,自動化測試需要更多的技能,也需要更多的培訓。

7、自動化能提供百分百的測試覆蓋率

並非所有內容都可以被自動化地測試到。不可能覆蓋所有可能的輸入,所有可能的組合和路徑。

自動化測試可以增加測試的廣度和深度,但是仍然無法達到100%的測試覆蓋率,因為沒有足夠的時間或資源。

8、忘記了測試的最終目標:找到BUG

在自動化測試中,同樣要注意把邊界值分析、等價類分析、基於風險的測試方法、挑選最合適的測試用例等技術應用起來。

通常在自動化測試過程中,我們都忙著搭建自動化框架和編寫測試腳本,但是我們往往忘記了測試的本來目的:找bug。

項目經理可能僱傭了最好的自動化開發人員來搭建框架,使用了最新最好的自動化開發技術,創建了成千上萬的自動化測試腳本。但是如果BUG仍然被遺漏了,那些本該被自動化測試腳本捕捉到的BUG,結果沒有被捕捉到,那麼你的自動化測試仍然會被認為是失敗的。

9、所有測試用例都可以自動化

不是所有的測試用例和測試步驟都可以轉化為自動化測試。在自動化測試投入較多的行業,領先企業的自動化測試率有的能達到80%左右,但仍有20%左右的測試用例需要手工來進行。在國外,通常從開發第一版測試用例時,就同步進行自動化測試腳本的開發,所以自動化測試率普遍比中國企業高。

10、只有性能測試才需要自動化

自動化測試不光進行性能測試,更被大量應用於功能測試驗證,在國外超過半數的自動化測試腳本都是用於功能驗證測試的。

11、測試工具可適用於所有的測試

每種自動化測試工具都有它的應用範圍和可用對象,所以不能認為一種自動化測試工具能夠滿足所有測試的需求。針對不同的測試目的和測試對象,應該選擇合適的測試工具來對它進行測試。在很多情況下,需要利用多種測試工具或者開發自動化測試框架才能達到自動化測試的目的。商業和開源的測試工具能夠用來進行自動化測試,但是我們需要根據自身產品的特點,開發自動化測試框架,在框架中提供常用的測試用例,加快測試速度,達到測試用例復用,這是今後測試自動化發展的道路。

12、自動化測試能發現大量新缺陷

發現更多的新缺陷應該是手工測試的主要目的,不能期望自動化測試去發現更多新缺陷。事實上,自動化測試主要用於發現原來的缺陷。自動化測試用於回歸測試,而大量的新業務測試更多地還是依賴手工測試。

除了以上列舉的常見誤區外,還有其他不同的認識誤區。自動化測試認識誤區的產生,歸根到底最本質的原因是由於對自動化測試不現實的期望,也就是期望過高造成的。

如果沒有建立一個正確的軟體測試自動化的觀念,認為測試自動化可以完全代替手工測試,或者認為測試自動化可以發現大量新缺陷,或者不願在初期投入比較大的開支等,則自動化測試一定會讓我們大失所望。

相信通過這樣的解答,明白了什麼時候用手工測試,什麼時候用自動化測試,並且知道了自動化測試的局限性,這樣就不會對做自動化測試的意義產生質疑了。

最後呢,再給大家一些自動化測試的相關資料:

自動化測試相關資料,密碼:ofdg

介面測試相關資料,密碼:dgfa

軟體測試視頻教程資料大合集,密碼:hlcy

最後,再奉上一張Python自動化的學習路線圖,如果上傳圖看不清,記得找你貓哥來拿原圖哦!

送給你們一些學習的資料,只求最後能給我點個贊哈,不勝感激!

推薦閱讀:

軟體測試員比軟體開發員要求低些嗎??

www.zhihu.com圖標軟體測試有前景嗎??

www.zhihu.com圖標軟體測試,如何工資過萬??

www.zhihu.com圖標
推薦閱讀:

軟體測試 | 談軟體測試人員對產品質量的責任
推薦書單:測試工程師成長之路
軟體測試書籍推薦——成長從讀書開始
致想要轉行做IT的小青年們之軟體測試篇
核心實驗:將被測程序導出為Jar包並完成測試

TAG:自動化測試 | 軟體測試 | 軟體測試工程師 |