自動化測試系列(一)|自動化測試體系概述

當今激烈的商業競爭中,企業中的服務和產品需要更快速的版本迭代和高質量的軟件交付,同時減少完成項目所需的成本和時間,不少企業引入了DevOps概念來提升軟件研發交付效率。DevOps是開發和運營的結合,代表着一種文化和實踐,強調了軟件開發人員(Dev)和信息技術(IT)運營與維護(O&M)專業人員(Ops)的協作和交流,同時促進了軟件交付和基礎架構變更。它旨在建立一種文化和環境,使軟件構建,測試和發佈可以更加方便,頻繁和可靠地進行。DevOps中的測試是自動化的,不同於傳統的手工測試,自動化測試通過測試工具或者框架,錄製編寫測試腳本,對軟件功能進行測試,能夠快速檢測錯誤並查找可能對用戶體驗產生負面影響的問題,從而更快的發佈高質量產品。

本文通過介紹自動化測試體系概念,帶你瞭解自動化測試在實現高質量產品方面的重要作用。具體內容如下:

  • 什麼是自動化測試
  • 爲什麼要進行自動化測試
  • 手工測試和自動化測試之間的區別
  • 自動化測試如何與DevOps相適應
  • Choerodon豬齒魚如何進行自動化測試

什麼是自動化測試?

自動化測試是使用工具、腳本和軟件對重複、預定義的操作來執行測試用例的過程。由於自動化測試是通過自動化工具完成的,因此在增加總體測試覆蓋率的同時,它在探索性測試中花費的時間更少,在維護測試腳本時花費的時間更多。

自動化測試的基本概念是測試金字塔。它演示瞭如何解決項目的自動化測試:構成金字塔基礎的哪些部分首先要進行測試,以及在金字塔最後階段剩下什麼?

按照測試金字塔的模式,首先是單元測試層,即開發人員在編寫代碼時經常執行的代碼測試。然後是API測試所屬的服務器層。稍後,當前端完成時,將進行UI測試。

圖:三層測試自動化金字塔

自動化測試的類型

  • 冒煙測試: 針對每個版本或每次需求變更後,在正式測試前,對產品或系統的一次簡單的驗證性測試;
  • 單元測試: 對軟件中的最小可測試單元在與程序其他部分相隔離的情況下進行檢查和驗證的工作;
  • 集成測試: 是組裝軟件的系統測試技術,按設計要求把通過單元測試的各個模塊組裝在一起之後,進行綜合測試以便發現與接口有關的各種錯誤;
  • 功能測試: 是黑盒測試的一方面,它檢查實際軟件的功能是否符合用戶的需求,比如說邏輯功能測試,界面測試,易用性測試,安裝/卸載測試,兼容性測試等;
  • 性能測試: 通過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試
  • 迴歸測試: 指修改了舊代碼後,重新測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤;
  • 數據驅動測試: 一種在軟件測試過程中使用的方法,用於描述直接測試的輸入、可驗證輸出的條件表,以及測試環境的設置還有控制編碼的過程;
  • 黑盒測試: 又稱爲功能測試、數據驅動測試或基於規格說明書的測試,是一種從用戶觀點出發的測試主要測到的錯誤類型有:不正確或遺漏的功能;接口、界面錯誤;性能錯誤;數據結構或外部數據訪問錯誤;初始化或終止條件錯誤等等。

爲什麼要進行自動化測試?

自動化測試是軟件開發生命週期的重要組成部分,主動修復錯誤需要對基礎代碼進行的每個小更改都進行測試和重新測試。隨着時間的流逝,迴歸測試的數量將會增加,測試人員將承受很大的壓力,而創新和增長的時間會越來越少。此外,至少有四個因素導致測試成本上升:

  • 跨設備、系統和平臺進行測試的需求不斷增加。 將測試範圍從例如一個Web瀏覽器擴展到兩個或擴展到包含移動設備會影響工作量。
  • 測試用例的數量不斷增加。 隨着每次產品更新,涵蓋更多功能所需的測試用例數量都會增加。新功能會影響需要重新測試的現有功能;常見的迴歸測試問題。

  • 發佈管道的成熟。團隊不希望僅進行一次迴歸測試,而是希望在發佈管道的多個階段運行測試。這有助於爲開發人員提供最快的反饋,但同時也需要大量測試。
  • 管理層希望增加發布數量。爲了保持其最新產品的市場地位,企業希望確保軟件質量並更快速的迭代產品。 面對測試成本的增加,爲了改變測試不可持續的局面,團隊可以引入自動化測試以減輕測試人員的重複、不可預測、繁瑣的任務。

通過自動化測試可以帶來以下好處:

  • 提高生產率:可以高精度執行更多測試,產品功能測試的範圍更廣;
  • 快速反饋:在軟件開發生命週期(SDLC)中更快,更早地執行測試時,反饋也可以更快地提供給開發人員;
  • 加快產品版本迭代:更快的測試執行和連續的反饋循環可以縮短總體SDLC,並提高發布頻率;
  • 成本效率:優化資源後,可以降低成本;
  • 更高的敏捷性和市場響應能力:較短的發佈週期使企業可以更好地響應變化並確定資源的優先級;
  • 降低人爲錯誤的風險:自動化測試可滿足迴歸測試需求,將人爲錯誤的風險降到最低;
  • 提高交付質量:高效測試可最大程度地擴大測試範圍,提高產品質量;
  • 更高的工作滿意度:由於消除了高度重複的任務,測試人員可以體驗到更高的工作滿意度。

手動和自動化測試之間的區別

在快速且連續的產品開發中,手動測試是驗證終端用戶工作流程的最有效方法。但實際情況是,手工測試並不能完全做到重測每個功能,持續測試工作中需要編寫快速且頻繁運行的自動化測試,找出生產版本中的缺陷。

通過以下對比,讓我們來了解測試工作中手工測試與自動化測試之間的區別:

特徵 手動測試 自動化測試
準確性和可靠性 精度低,手動測試更容易出現人爲錯誤 使用工具和腳本的準確性很高
所需時間 手動測試比自動化慢,手動運行測試耗時多 自動化運行測試用例的速度明顯快於人力資源
投資成本 成本低 初始成本比手動測試高
用法 適用於探索性,可用性和臨時測試 適用於迴歸測試,性能測試,負載測試
體驗 首次使用手動測試執行測試用例很順利,但面對頻繁變化的需求,捕獲迴歸缺陷能力有限 能快速適應代碼頻繁更改的測試

自動化測試如何與DevOps相適應

DevOps中持續測試是軟件產品交付管道中執行自動化測試的過程,其目的是獲取有關最新構建或預發佈的版本中業務風險的快速連續反饋。然後,可以使用此信息來確定軟件產品是否已準備好在任何給定時間通過交付管道進行升級。由於測試提早開始並連續執行,因此減少了發現和修復缺陷所需的時間和精力,可以提高交付高質量軟件(滿足對可接受風險水平的期望的軟件)的速度和頻率,並減少技術負擔。

持續測試包括對功能需求非功能需求的驗證,均與自動化測試有關。對於功能測試,持續測試通常涉及單元測試,API測試,集成測試和系統測試非功能性測試涉及諸如靜態代碼分析,安全性測試,性能測試等實踐。

Choerodon豬齒魚如何進行自動化測試

Choerodon豬齒魚目前支持的自動化測試有:API測試、性能測試、流量回歸測試、UI測試,允許測試人員通過關鍵測試信息來完成測試操作,無需編程。

ChoerodonAPI測試模塊通過集成Jmeter,實現了API用例的添加、歸集、管理與執行的功能。其中支持基於接口URL或Swagger文檔快速編排接口測試用例,而導入或添加API測試用例的整個過程免代碼編寫,技術門檻低,適合敏捷團隊中各個角色使用。

Choerodon性能測試也是通過集成Jmeter測試工具,支持用戶在已有的測試任務基礎上調整執行參數(線程數、預熱時長、循環數)來對系統的各項性能指標進行測試,從而發現性能瓶頸與性能缺陷,以便更好地優化系統或產品的整體性能。

Choerodon流量回歸測試適用於:批量錄製產品界面操作並將得到的用例進行集中管理,以便後續進行批量的迴歸測試。此功能通過使用Goreplay錄製產品界面中的操作生成流量文件,然後將其導入Choerodon平臺生成用例進行管理與執行。

ChoerodonUI測試適用於:測試人員通過插件錄製web應用的界面操作,生成對應的測試用例與步驟;而後便能直接執行對應的測試文件來對界面UI操作進行測試。

結論

自動化測試能夠提高測試人員的工作效率並且優化測試速度,提高軟件產品的準確性和穩定性,代替人工完成各種業務場景,使資源最大化利用,增加軟件的信任度。希望以上關於自動化測試的概念對你有所幫助。

關於豬齒魚

Choerodon豬齒魚作爲開源多雲應用敏捷全互連技術平臺,是基於開源技術的Kubernetes,Istio,knative,Gitlab,Spring Cloud來實現本地和雲端環境的集成,實現企業多雲/混合雲應用環境的一致性。平臺通過提供精益敏捷,持續交付,容器環境,微服務,DevOps等能力來幫助組織團隊來完成軟件的生命週期管理,從而轉變,更替代地交付更穩定的軟件。

更多內容

大家可以通過以下社區途徑瞭解Choerodon豬齒魚文檔,最新動態,產品特性:

【Choerodon官網】

https://choerodon.io/zh/

【漢得開放平臺】

https://open.hand-china.com/

【漢得開放論壇】

https://openforum.hand-china.com/

也可以加入Choerodon豬齒魚官方社區用戶交流羣,交流豬齒魚使用心得,Docker,微服務,K8S,敏捷管理等相關理論實踐心得,羣同步更新版本更新等信息,大家可以加羣討論交流。

①-Choerodon豬齒魚官方交流(已滿);

②-Choerodon豬齒魚官方交流(可加);【微信號發至客服郵箱[email protected],運營小夥伴拉您入官方交流羣】

歡迎加入Choerodon豬齒魚社區,共同爲企業數字化服務打造一個開放的生態平臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章