1. 程式人生 > >自動化測試的成本高效果差,那麽自動化測試的意義在哪呢

自動化測試的成本高效果差,那麽自動化測試的意義在哪呢

最好 留言 最新 重要 邊界值 一份 web框架 可能 項目

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

首先說一些什麽時候會需要自動化測試,明白了這一點,題主的疑惑就能解開一半了

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

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

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

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

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

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

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

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、自動化測試能發現大量新缺陷

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

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

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

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

另外,這裏附贈一份python自動化測試的一張學習思路圖

好煩,本來想給大家一張思路圖的,可是最大只能2M,我的圖片還比較大,需要的小夥伴可以在評論中留言,我發給你

自動化測試的成本高效果差,那麽自動化測試的意義在哪呢