天天看點

軟體測試自動化的最新趨勢

  過去幾年,QA 行業的一個持續趨勢是測試自動化和持續測試。這一趨勢也将在 2019 年繼續下去。雖然 CI/CD、DevOps 和測試架構在未來一年仍将是突出的主題,但一些新技術正在影響我們測試的内容和測試方法。

  人們期待在 JavaScript 領域看到更多的開源測試架構,在使用的工具中嵌入更多的人工智能功能,以及來自商業工具供應商的更多創新。另一個持續的趨勢是功能測試和性能測試的結合(你可以将其看做 Selenium 與 JMeter 測試相結合)。此外,人們還期望看到更多行為驅動開發(Behavior Driven Development,BDD 測試)的發展,以及在靈活組織中如何采用它。自動測試場景生成是我們與幾個客戶合作的另一個領域。

  以下是目前軟體測試自動化水準的完整概述。

  •   物聯網測試

  物聯網(Internet of Things,IoT)正對測試領域産生顯著的影響。像 Selenium 這樣的傳統自動化方法在嵌入式環境中變得毫無用處。我們已經看到越來越多的基于 Python 和 C/C++ 的測試架構執行單元測試、內建測試和系統測試。大多數測試架構都是測試由這些嵌入式庫導出的 API,其中相當多的架構調用嵌入式代碼來執行單元測試。這需要具有重要軟體開發經驗的專業測試工程師,但我們看到更多的軟體開發人員将被部署到自動化測試的角色。Python 可能是物聯網測試架構開發的首選語言,因為它能夠直接使用 ctypes 包來調用 C 代碼。

  另一個新趨勢就是物聯網的 DevOps 環境開始标準化。到目前為止,我們看到的大多是 CI 環境的 Ad-hoc 實作。我們已經預先建構了解決方案,用于建構管理、測試管理、鏡像加載、物聯網鏡像在不同裝置上的部署、不同建構物聯網裝置的 A/B 測試等。

  •   持續測試

  持續測試是從去年至今仍在繼續的另一個趨勢。我們在過去已經看到了 DevOps 和 CI/CD 架構的爆炸式增長,而今年這種趨勢,将随着新的架構(如 Nevercode 和 Codefresh)的出現而繼續。

  持續測試的另一個趨勢是對每個版本進行基于人工智能的風險評估。以前,這種操作是手工執行的,以确定能為應用程式部署哪些版本。我們已經實作了幾個 CI/CD 平台,它們執行應用程式基于人工智能的自動 A/B 部署。

  •   基于人工智能的測試

  基于人工智能的測試方法已不僅僅是時髦語,現在已經進入了主流測試實踐。人工智能和自動化是測試的兩個并行方面:自動化用于功能測試,而人工智能則用于視覺測試。基于人工智能的視覺測試,包括視覺測試和感覺測試,并快速浏覽每個建構版本的視覺變更,是一個非常有用的釋出驗證方法。我們已經在 Denver 的不同客戶中實施了基于 Applitools 的視覺測試解決方案。

  雖然嚴格來說,視覺測試目前并不是基于人工智能的。圖像比較算法是基于傳統的梯度分類。

  我們所使用的其他幾個獨特的工具很少能夠智能地自動化許多任務。

  測試套件優化:我們開發了一些工具來分析日志模式,并确定哪些測試用例是重複的。

  使用日志分析進行缺陷識别:根據日志分析突出顯示軟體缺陷。

  自動測試場景生成類似于 Swagger。

  •   開源測試架構

  在過去的幾年裡,我們看到的不斷增長趨勢之一是,從傳統的企業測試解決方案(如 HP QC、ALM、UFT、IBM 等)遷移出來。我們看到各種規模的組織越來越多地采用開源測試平台。我們親自将客戶的幾個測試架構從 HP QC/UFT 遷移到其他開源解決方案。盡管這些開源解決方案涉及到編碼,但從長遠來看,它們具有高度可定制性和可維護性。我們預計,随着 2019 年的到來,這些開源解決方案将繼續獲得更大的吸引力。

  •   靈活開發和 DevOps 的合并

  DevOps 的關鍵原則是開發團隊、測試團隊和營運團隊協作,無縫釋出軟體。這意味着集中或隔離的 QA 部門現在必須與開發和營運團隊合并,以便為各種版本提供按需測試服務。測試變得更加漸進、疊代,并與應用程式開發和部署過程內建。

  譯注:行為驅動開發(英語:Behavior-driven development,縮寫 BDD)是一種靈活軟體開發的技術,它鼓勵軟體項目中的開發者、QA 和非技術人員或商業參與者之間的協作。BDD 最初是由 Dan North 在 2003 年命名,它包括驗收測試和客戶測試驅動等的極限程式設計的實踐,作為對測試驅動開發的回應。在過去數年裡,它得到了很大的發展。

  2009 年,在倫敦發表的“靈活規格,BDD 和極限測試交流”中,Dan North 對 BDD 給出了如下定義:

  BDD 是第二代的、由外及内的、基于拉 (pull) 的、多方利益相關者的 (stakeholder)、多種可擴充的、高自動化的靈活方法。它描述了一個互動循環,可以具有帶有良好定義的輸出(即工作中傳遞的結果):已測試過的軟體。

  我們現在已看到基于 BDD 的測試機制的采用,它允許在 sprint 周期中開發的新功能進行疊代測試。BDD 代表行為驅動開發(Behavior Driven Development),它本身源自驗收測試驅動開發(Acceptance Test Driven Development,ATDD)。BDD 迫使團隊在收集需求的同時提出測試場景。測試場景被立即記錄下來并簽入 CI 系統,以強制 CI 系統顯示這些場景的故障。在 Sprint 期間,開發和 QA 團隊的目标現在變成了這些場景。這種測試架構開發機制在方法上是新穎的,非常适合靈活環境。我們看到很多客戶在靈活實踐中轉向基于 BDD 的測試開發。

  •   性能工程的性能測試

  測試的關鍵趨勢之一是将性能測試角色不斷轉變為成熟的性能工程角色。性能工程現在不僅包括測試方面,還包括監控系統性能。資源的自動伸縮、A/B 測試、ELB、資料庫優化、瓶頸識别和監控。現在已有集中基于雲端的工具可以準确地監控不同雲資源上的各種性能參數,并且通過警報對所有資源進行儀表闆監控是我們在各種用戶端上工作的主要部分之一。

  •   微服務測試

  随着越來越多的應用程式轉向微服務模型,測試架構也朝着微服務測試模型發展。以前,産品的 QA 遵循黑盒測試模型,但現在,通過微服務測試,我們正朝着灰盒測試模型邁進。

  微服務測試包括 API 測試、資料庫測試、身份驗證服務 / 搜尋服務測試等。我們可以将這個測試模型稱為更多的元件測試模型,而不是測試內建産品。

  微服務測試允許我們在所有變更進行大爆炸式的內建之前發現問題。 它仍然高于單元測試,因為元件必須完全定義,并且測試基于這些元件的外部 API。

  •   測試即服務(TaaS)

  測試即服務(TaaS)或 QA 管理服務是一種外包模式,其中組織的測試活動由外部團隊而非員工來執行。在許多情況下,外部團隊是一個離岸團隊。但我們也有一些執行個體,我們為自動化開發和項目移交的初始階段開發了離岸團隊,然後是離岸團隊進行 QA 維護。

  測試即服務(TaaS)的優勢包括:

每天一點點,感受自己存在的意義。

繼續閱讀