天天看點

軟體測試筆記 / 自動化測試和手動測試的選擇(python篇)

軟體測試筆記 / 自動化測試和手動測試的選擇(python篇)

前言

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

軟體測試筆記 / 自動化測試和手動測試的選擇(python篇)

手動測試

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

手動測試類型

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

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

何時适用手動測試

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

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

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

手動測試的優劣

優:

  1. 适用範圍廣,可以在各種軟體上進行手動測試。
  2. 對于短生命周期産品更可取。
  3. 新設計的測試用例應該手動執行,以確定用例的正确性。
  4. 應用程式在自動化之前必須手動測試。
  5. 在需求頻繁變化的項目和GUI不斷變化的産品。
  6. 與自動化測試相比,它的初始投資更便宜。
  7. 開始手動測試所需的時間和費用更少。
  8. 它允許測試人員執行随機測試。
  9. 測試人員沒有必要了解自動化工具和架構。

劣:

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

自動化測試

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

常用的自動化工具:

  1. HP QTP
  2. Selenium
  3. LoadRunner
  4. SilkTest
  5. TestComplete
  6. WinRunner
  7. Jmeter

何時适用自動化測試

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

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

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

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

  1. 探索性測試
  2. 使用者界面測試
  3. 随機測試

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

  1. 處理重複和耗時的任務
  2. 并發測試
  3. 非功能性測試,如負載、性能、壓力測試
  4. 避免人為錯誤

自動化測試的優劣

優:

  1. 自動化測試的執行速度更快。
  2. 從長遠來看,它比手工測試便宜。
  3. 自動化測試更可靠。
  4. 自動化測試可擴充性好和更通用。
  5. 用于回歸測試。
  6. 可重用,因為自動化過程可以被記錄。
  7. 它不需要人為幹預。測試腳本可以在無人參與的情況下運作。
  8. 它有助于提高測試覆寫率。

劣:

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

總結

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

不管黑貓白貓,抓到老鼠的就是好貓。在測試中也是同樣,不管自動化測試和手動測試,能發現缺陷,最合适的就是好的測試方法。希望上面手動測試和自動化測試的差別和适用範圍可以幫助大家找到合适的測試方法。如果大家有感興趣的話題和相關感受,也請回複到評論中和大家一起分享。

最後:福利

技術行業,一定要提升技術功底,豐富自動化項目實戰經驗,這對于你未來幾年職業規劃,以及測試技術掌握的深度非常有幫助。

金九銀十面試季,跳槽季,整理面試題已經成了我多年的習慣!下面有我近幾年的收集和整理,整體是圍繞着【軟體測試】來進行整理的,主體内容包含:python自動化測試專屬視訊、Python自動化詳細資料、全套面試題等知識内容。

軟體測試筆記 / 自動化測試和手動測試的選擇(python篇)

對于軟體測試的的朋友來說應該是最全面最完整的面試備戰倉庫,為了更好地整理每個子產品,我也參考了很多網上的優質博文和項目,力求不漏掉每一個知識點,很多朋友靠着這些内容進行複習,拿到了BATJ等大廠的offer,這個倉庫也已經幫助了很多的軟體測試的學習者,希望也能幫助到你!

願你我相遇,皆有所獲! 歡迎關注微信公衆号:【傷心的辣條】 免費領取一份216頁軟體測試工程師面試寶典文檔資料。以及相對應的視訊學習教程免費分享!

軟體測試筆記 / 自動化測試和手動測試的選擇(python篇)