自動化測試部署之決勝於開始

2021-09-04 15:05:52 字數 4481 閱讀 9746

自動化測試

優與劣

為何要開展自動化測試?手工測試與自動化測試相比孰優孰劣呢?本節針對該問題展開論述與講解。

測試工作中,往往需要面對很多問題。經常可以聽到測試工程師的抱怨,其抱怨內容大體如下:

v 重複、頻繁的工作太多;

v 測試工作任務重,測試周期短,工作壓力大;

v 創新性的工作太少,無法體現自己的能力與自己的人生價值;

v 測試結果有時需要精確到秒,手工測試來做太難了。

那如何將測試工程師從繁雜的測試工作中解脫出來?如何體現測試工程師的價值,發揮測試工程師的特長?又如何將測試結果精確到秒呢?

上述問題均可以通過自動化測試來解決,一方面提高了測試的工作效率,另一方面可以通過自動化測試體現測試工程師的能力,改變眾人對測試工作的觀點。

1.1自動化測試定義

既然自動化測試可以彌補手工測試的一些不足,並能體現測試工程師的價值,那何為自動化測試?它又具備哪些特性?

自動化測試即借助於測試工具、依照測試規範,從區域性或全部代替人工進行測試以及提高測試效率的過程。其具備如下主要特徵:

v 自動測試過程是通過模擬人工操作,完成對被測試系統的輸入,並且對輸出進行檢驗的過程。

v 自動測試是由軟體代替人工操作,對被測試系統的gui發出指令,模擬操作,完成自動測試過程。

相對於手工測試,自動化測試可概括為如下幾點:

v 優化成本:降低勞動量,降低測試成本;

v 可靠:提高測試的全面性,提高測試精確度;

v 快速:加快測試速度;

v 規範化:提供規範化的測試流程;

v 可重用:提高測試的重用性;。

1.2自動化測試與手動測試

的關係

自動化測試既然有如此大的優勢,那手工測試是否可以退出測試舞台呢?首先,,讓我們思考幾個問題。通過對如下問題的討論,來解答讀者的疑問。

1. 手工測試與自動化測試相比誰發現的缺陷多?

測試的主要目的是通過發現缺陷、解決缺陷來提高軟體質量。通常,測試的執行需要依賴測試用例。而測試工作中執行測試用例的通用方法往往是手工執行測試用例。假想一下,如果某個測試用例被自動化,則首先應對自動化後指令碼的正確性進行測試。

據統計資料顯示:手動測試可以發現80%以上的缺陷,而自動測試只能發現20%左右的缺陷。這恰恰反映出自動化測試源於手工測試,且只是替代人工的重複性勞動。

2. 測試質量孰高孰低?

自動化測試(工具)只能判斷實際結果與期望結果之間的差異。因此,在自動化測試過程中,測試任務就演變為驗證實際結果與期望結果的一致性。而測試的目的是提高測試的質量。因此通過手動測試,測試質量更高一些。

3. 自動化測試與軟體開發的關係?

自動化測試比手動測試更「脆弱」。軟體開發過程中,部分功能的改變,也有可能使自動化測試崩潰。而由於自動化測試比手工測試開銷大,並且需要不斷的維護,這也限制了自動化測試的開展。

4. 自動化測試工具是否存在侷限性?

自動化測試工具畢竟是軟體,工具只可按預訂指令執行。而自動化測試工具和測試者都可以按指令執行一組測試,但人擁有思想,可以按不同的方式、不同的思維完成相同的任務。

例如:測試工程師執行測試用例(或測試場景),執行測試執行過程中,經常需檢查實際輸出是否正確。此時,即使軟體實際輸出與期望輸出一致,軟體也有可能存在缺陷,測試者可以判斷,而測試工具則不可。測試者可以發揮其想象力和創造力改進測試用例(或測試場景),而測試工具只有呆板的執行。

通過以上四個問題的討論,可以得出結論:手動測試不會退出歷史舞台,其有存在的價值。同時,手動測試比測試工具的優越性還有很多,手動測試可以靈活的處理意外事件。例如,網路連線中斷時,手動測試就可以盡可能快地解決問題,然而這樣的意外事件卻可以讓自動測試的執行終止。

以上,1.2和1.3小節分別闡述了自動化測試與手動測試存在的必要性,那麼在測試工作中,何時引入自動化測試呢?自動化測試又有哪些優勢呢?下面通過以下幾節,逐一揭示。

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 人力成本:自動化測試用例和測試指令碼的編寫的人力成本。

只有合理的規劃自動化成本,站在全域性角度考慮自動化的成本與收益,方可增加自動化方案成功實施的可能性。

自動化測試之六 自動化測試模型

from selenium import webdriver chrome driver path r c users administrator envs selenuimautotest lib site packages selenium webdriver chrome chromedriv...

《自動化測試》之

不知道之前的selenium api 用法1,有沒有去練習,個人認為線性 還是要靠敲的,後面的模組化除了多敲還需要一定的程式設計思想去理解,今天下午不是很忙就給來這兒補充點selenium api 的例子,之所以選擇例項是因為直觀,容易理解,而不是理論去解釋具體的關鍵字用法。題外話,最近越發覺得ui...

自動化測試 web自動化測試

自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...