軟體測試筆記——11.自動化測試和手動測試的選擇

程式猿二黑發表於2020-12-02

前言


軟體測試是為了評估軟體應用程式的功能,以確定開發的軟體是否滿足指定的要求,並確定缺陷,以確保產品無缺陷,從而生產出高質量的產品。而軟體測試分為手工測試和自動化測試兩大類。手工測試和自動化測試都有各自的優點和缺點,而且我們知道專案都有很關鍵的要素:質量、成本和時間,任何專案的目標都是獲得高質量的產出,同時控制完成專案所需的成本和時間,所以瞭解手工測試和自動化測試以及何時使用手工測試和何時使用自動化測試之間的區別是非常必要的。

在這裡插入圖片描述

手動測試


對軟體進行手工測試以發現缺陷的過程。測試人員是站在使用者的視角,並確保所有功能都按照需求文件中那樣工作。在這個過程中,測試人員執行測試用例並在不使用任何自動化工具的情況下手動生成報告。

手動測試型別

  • 黑盒測試:黑盒測試是一種軟體測試方法,測試人員在測試中測試被測軟體的功能,而不檢視內部程式碼結構。這可以應用於軟體測試的各個層次,如單元、整合、系統和驗收測試。
  • 白盒測試:它是基於應用程式內部的程式碼結構的測試。在白盒測試中,系統的內部視角以及程式設計技巧被用來設計測試用例。這種測試通常在單元級別進行。
  • 單元測試:也稱模組測試或元件測試。這樣做是為了檢查原始碼的單個單元或模組是否正常工作。通常它是由開發人員在開發人員的環境中完成的。
  • 系統測試:測試完整的應用程式,以評估系統是否符合其客戶的需求,我們稱之為系統測試,也稱為端到端測試。目標是已完成的系統,以確保軟體是否按預期工作。
  • 整合測試:整合測試是測試兩個軟體單元之間介面的過程。整合測試有三種方式。大爆炸法,自上而下法,自下而上法。
  • 驗收測試:通常它由終端使用者和測試人員一起完成的,以驗證軟體的功能是否按照使用者需求來實現。進行測試後,客戶可以接受或拒絕所提供的軟體功能。驗收測試的型別有Alpha、Beta和Gamma測試。

當然還有許多的手動測試種類,請查考《軟體測試筆記(三)多種多樣的測試型別》。

何時適用手動測試


  • 探索性測試:由行業專家進行探索性測試。他們通過探索應用程式的功能來執行測試,而不瞭解詳細的需求。
  • 可用性測試:驗證軟體是否使用者友好,是否被終端使用者舒適地使用。主要重點是檢查終端使用者是否能夠輕鬆理解和操作軟體。一個好的軟體應該是自我探索的,具有引導性的,並且不需要太多的培訓來操作它。
  • 隨機測試:測試人員在不遵循任何文件和測試設計技術的情況下隨機測試軟體。如果試人員的知識非常豐富,則主要執行此類測試,測試人員在沒有任何測試用例或業務需求文件的情況下隨機測試應用程式。

何時使用手動測試,而非自動化測試


  1. 當專案處於初始開發階段時,測試框架搭建完成前。
  2. 當測試使用者介面。
  3. 當需要進行探索性或隨機性測試。
  4. 如果專案是短期的,與手動測試相比,編寫指令碼和搭建測試框架非常耗時的時候。
  5. 如果測試用例不能自動執行驗證碼示例。

手動測試的優劣


優:

  • 適用範圍廣,可以在各種軟體上進行手動測試。
  • 對於短生命週期產品更可取。
  • 新設計的測試用例應該手動執行,以確保用例的正確性。
  • 應用程式在自動化之前必須手動測試。
  • 在需求頻繁變化的專案和GUI不斷變化的產品。
  • 與自動化測試相比,它的初始投資更便宜。
  • 開始手動測試所需的時間和費用更少。
  • 它允許測試人員執行隨機測試。
  • 測試人員沒有必要了解自動化工具和框架。

劣:

  • 手工測試主要是在做迴歸測試時耗時,而且重複性很大。
  • 與自動化測試相比,手動測試不太可靠,因為有人的影響。所以總會有人為因素導致的一些錯誤。
  • 從長遠來看,相比於自動化測試代價更高。
  • 無法重用,因為無法記錄整個測試過程。

自動化測試

自動化測試是使用自動化工具來發現軟體缺陷的測試過程。在這個過程中,自動化工具會自動執行測試指令碼並生成結果。一些最流行的自動化測試工具是QTP、Selenium Webdriver,Jmeter, TC等。

常用的自動化工具:

  • HP QTP
  • Selenium
  • LoadRunner
  • SilkTest
  • List item
  • TestComplete
  • WinRunner
  • Jmeter

何時適用自動化測試

  • 迴歸測試:對一個已經測試過的缺陷,在修改後進行的重複測試,目的是用於發現由於軟體或其他相關或不相關的軟體元件的變化而引入的任何缺陷。迴歸測試非常適合做自動化測試,因為軟體經常更改程式碼,而且需要進行及時的測試。
  • 效能測試:測試軟體的速度、可伸縮性和穩定性。效能是指實現滿足專案或產品效能目標的響應時間、吞吐量和資源利用率級別。它非常適合自動化測試。

可以同時進行手動和自動化測試的測試型別:

  • 系統測試:測試軟體是否符合其指定的要求實現,也稱端到端測試。目標是驗證已完成的系統,以確保應用程式是否按預期工作。
  • 單元測試:單元測試也稱為模組測試或元件測試。為了檢查程式碼的單元或模組是否正常工作。通常由開發人員在開發人員的環境中完成的。
  • 驗收測試:通常它由終端使用者和測試人員一起完成的,以驗證軟體的功能是否按照使用者需求來實現。進行測試後,客戶可以接受或拒絕所提供的軟體功能。驗收測試的型別有Alpha、Beta和Gamma測試。

哪些場景不適合自動化測試

  • 探索性測試
  • 使用者介面測試
  • 隨機測試

何時使用自動化測試,而非手動測試

  • 處理重複和耗時的任務
  • 併發測試
  • 非功能性測試,如負載、效能、壓力測試
  • 避免人為錯誤

自動化測試的優劣

優:

  1. 自動化測試的執行速度更快。
  2. 從長遠來看,它比手工測試便宜。
  3. 自動化測試更可靠。
  4. 自動化測試可擴充套件性好和更通用。
  5. 用於迴歸測試。
  6. 可重用,因為自動化過程可以被記錄。
  7. 它不需要人為干預。測試指令碼可以在無人蔘與的情況下執行。
  8. 它有助於提高測試覆蓋率。

劣:

  • 僅推薦用於大型,穩定的產品。
  • 自動化測試最初費用很昂貴。
  • 大多數自動化工具都很昂貴,當然除開源軟體外。
  • 它會有有一些限制,例如處理驗證碼,獲取ui的視覺方面的資訊。
  • 需求反覆變化時。
  • 不是所有的工具都支援各種測試如windows、web、移動性、效能/負載測試。

總結


自動化測試手動測試
自動化測試更可靠。每次執行相同的操作。它消除了人為犯錯誤的風險。手動測試相對不太可靠由於可能會出現人為失誤,人工檢測也有可能不準確。
自動化測試初期投資較高。測試工具需要投資從長遠來看,它比手動的便宜。與手工測試相比,從長遠來看,價效比更高。手工測試的初始投資小於自動化。人力資源需要投資。從長遠來看,與自動化測試相比,價效比更低。
-當我們進行迴歸測試時,自動化測試則是非常有意義的。-– 如果測試只需要執行一次或兩次,那麼手動測試是實用的選擇,在這種情況下,測試用例不會重複執行。
執行是通過軟體工具完成的,因此它比手動測試更快,並且與手動測試相比需要更少的人力資源。 測試用例的執行非常耗時,需要更多的人力資源不可能進行探索性測試 可以進行探索性測試
-效能測試如負載測試、壓力測試等是自動化測試的選擇。-手動化的效能測試不是一個好的選擇–
自動化測試可以並行完成,減少測試執行時間在手動測試中並行執行測試用例不是一件容易的事情。我們需要更多的人力資源來做到這一點,並且變得更加昂貴。
它可以並行完成,減少測試執行時間。在手動測試中並行執行測試用例不是一件容易的事情。我們需要更多的人力資源來做到這一點,並且變得更加昂貴
-需要一些指令碼方面的知識-通常不需要指令碼知識–
整合到CI/CD(持續部署/釋出)很方便無法整合到CI/CD(持續部署/釋出)
人工干預不多,所以做使用者介面測試效果不好它涉及到人工干預,所以進行使用者介面測試是非常有效的

不管黑貓白貓,抓到老鼠的就是好貓。在測試中也是同樣,不管自動化測試和手動測試,能發現缺陷,最合適的就是好的測試方法。希望上面手動測試和自動化測試的區別和適用範圍可以幫助大家找到合適的測試方法。如果大家有感興趣的話題和相關感受,也請回復到評論中和大家一起分享。如果有想學習如軟體測試的朋友們,可以加入我們扣扣群(785128166)裡面有各種軟體測試資源(視訊教程,PDF文件,面試題)和技術討論。


更多好文推薦:

python教程——目錄!

軟體測試筆記——目錄!

相關文章