天天看點

再談持續測試

作者:FunTester

測試是軟體開發生命周期 (SDLC) 的重要組成部分。SDLC 的每個階段都應包含測試,以獲得更快的回報并提高産品品質。

我們來聊聊持續測相關話題,如何從持續測試中獲得更大的收益。

何謂持續測試

持續測試有助于在軟體開發生命周期 (SDLC) 的所有階段提供更快的品質回報。在軟體開發聲明周期中大多數情況下,如果在核心功能邏輯越少做單元測試和自動化測試,那麼測試金字塔頂層執行手動探索性測試的壓力會非常大,嘗嘗容易出現品質問題導緻項目延期。

這實際上會影響品質,因為在開發完成後發現錯誤是非常昂貴的。下面是Google修複一個錯誤的成本,你可以看到當在系統測試階段發現一個錯誤時,它的成本高達 5000 美元。

BUG發現階段 花費(美刀) 系統測試 5000 內建測試 500 編譯建構 50 單測/自測 5

持續測試通過在代碼送出到存儲庫後立即提供早期回報,來幫助我們評估這種對軟體的目前進展的品質。持續測試的主要目标是通過自動化在 SDLC 的所有階段盡早進行測試,盡可能頻繁地進行測試,并更快地獲得有關建構的回報。

使用持續測試,我們可以在所有故障發生後立即介入修複,然後再進入下一階段,最終有助于節省整體的時間和金錢。

為什麼要持續測試

在我之前的一個項目中,我們正在開發一款為 iOS 和 Android 平台開發的移動應用程式。客戶希望一切從一開始就實作自動化。任何洩漏到生産中的錯誤都意味着它将直接影響業務并造成數客戶的損失。

我們被要求提出一個自動化計劃,在該計劃中,将在開發的每個階段進行測試,以最大限度地降低錯誤洩漏的風險。是以,我們決定實施測試金字塔并建立一個 CI/CD 管道,在每個階段連續進行測試。

為了提高産品品質,我們想出了一個計劃,在管道的每個階段都進行測試,一旦出現任何錯誤信号,就應該在我們進入另一個階段之前解決它。是以,隻要開發人員将代碼送出到遠端存儲庫,就會運作以下掃描

  1. 靜态代碼分析:這将確定遵循最佳編碼實踐,并在出現任何錯誤時通過代碼壞氣味提醒我們。
  2. SecOps 掃描:這将掃描代碼和代碼中使用的所有庫以查找任何安全漏洞,并在出現應注意的漏洞時發出報警。

一旦上述掃描通過,管道将繼續前進并在開發環境中運作以下測試:

  1. 單元測試
  2. 內建測試
  3. 系統測試
  4. 端到端測試

上述所有測試将確定代碼按預期完美運作。

如果上述任何測試失敗,管道将中斷并發出預警。送出代碼的開發人員有責任修複那些相應的失敗測試。這不是玩指責遊戲,而是找到破壞建構的送出并修複它。該團隊将向開發人員提供幫助以解決問題。

上述所有測試成功通過後,建構将部署到 QA 環境,在 QA 環境中,作為回歸測試的一部分,端到端自動化測試将再次在測試建構上運作。一旦端到端自動化測試通過測試建構,需要将選擇建構并執行手動探索性測試以發現更多的缺陷。它最終将被部署到驗收環境,測試人員團隊将在那裡進行進一步的測試,最後,建構将部署到生産環境中。

靜态代碼分析和 SecOps 掃描幫助我們實施最佳編碼實踐,并通過更新到最新版本或丢棄和使用不太容易出現漏洞的庫并經常更新它們來修複易受攻擊的庫,進而使代碼不太容易出現安全問題風險。

雖然我們也在手動完成的探索性測試中發現了問題,但這些問題并不那麼嚴重,大多數問題在初始階段本身就得到了解決,這為我們提供了更快的回報。

SDLC 生命周期中的持續測試

  • 需求變更頻繁:随着需求的頻繁變更,也需要更改代碼,并且我們所做的每一次更改都涉及風險。這裡涉及兩個風險,更改後的代碼是否會按預期工作,另一個是此更改是否會影響現有代碼。通過持續測試,我們可以通過設定一個自動化管道來解決這兩種風險,該管道将運作單元、內建和最終的自動化回歸測試。
  • 持續內建:随着靈活開發的實施,持續內建得到了廣泛的歡迎,開發人員盡可能多地将他們的代碼合并到主分支,以使其做好生産準備。在合并發生之前,代碼通過在管道中對建構運作自動化測試。如果出現故障,則代碼不會合并且會發出預警。
  • 準備好生産:通過持續測試,我們可以做好生産準備,因為一旦開發人員送出代碼,我們所有的檢查和測試就會在自動化管道上運作。
  • 減少人為錯誤:在回歸測試的情況下,如果編寫了自動化測試,它可以作為該功能的文檔證明,并有助于減少測試中的人為錯誤。

持續測試的優勢

  • 快速回報:在傳統的軟體開發過程中,團隊必須等待測試人員的回報,在開發人員完成功能編寫後,測試人員将手動測試建構。在測試人員的回報之後,他們不得不返工以修複耗時且成本更高的問題。通過持續測試,我們可以更快地獲得對新送出代碼的回報,進而節省時間和金錢。
  • 品質融入産品:通過在自動化管道中運作所有測試,從單元、內建、功能、安全、性能和端到端使用者,我們可以確定品質融入産品本身并且需要不用擔心将其釋出到生産環境。
  • 減少錯誤洩漏:持續測試通過為我們提供有關軟體故障的及時更新,有助于消除建構中出現錯誤的機會。
  • 最小化風險:它還有助于發現風險、解決風險并提高産品品質。

随着對高品質軟體的需求不斷增長,以及以數字化為核心的經濟蓬勃發展,持續測試被認為是一個重要方面。 軟體公司需要對 SDLC 中每天發生的頻繁變化做出響應,而持續測試就是答案。

持續測試的重要類型

  • 單元測試:這涉及單獨測試一段實作某個功能的代碼。基本上測試為該功能編寫用例覆寫每個方法。此測試的主要目的是檢查代碼是否按預期工作,這意味着代碼的所有功能、輸入、輸出和性能都符合預期。
  • 內建測試:這涉及一起測試兩個子產品。此測試的目的是檢查兩個元件之間的內建是否正常工作。
  • 回歸測試:這是使用最廣泛的測試,用于檢查應用程式的現有功能在最近添加或修改代碼存儲庫後是否按預期工作,
  • 端到端測試:添加這些測試是為了檢查軟體的端到端工作。這些測試的目的是檢查最終使用者是否能夠端到端地使用應用程式。

雲服務平台的作用

在當今快節奏的世界中,軟體可以在多個平台上運作,從浏覽器到手機和平闆電腦。當我們将應用程式釋出到生産環境時,我們需要確定它按預期在所有需要的平台上運作,并修複我們發現不工作的地方。

然而要做到這一點,我們需要在相應的裝置/浏覽器上對其進行測試,以確定它可以無憂無慮地工作。這是可能的,但會花費金錢和時間,因為我們必須購買硬體并提供所需的資源以使其工作。從雇用工程師到建立基礎設施。

當我們不斷測試時,在不同的浏覽器及其各自的版本或具有不同作業系統版本的不同移動裝置上執行并行運作,這些服務通過為我們提供所需的裝置、浏覽器/作業系統及其各種版本來幫助我們持續測試,是以我們及早發現錯誤并使用早期回報修複所需的問題并阻止錯誤洩漏。

結論

品質是軟體的重要組成部分,需要在軟體中展現。持續測試通過在軟體開發生命周期的每個階段實施測試來幫助我們建構正确的産品。

我們需要為我們建構的每個功能做好生産準備,有必要通過快速失敗政策獲得快速回報。有多種可用的測試類型可以幫助我們使用自動化管道實施持續測試。

繼續閱讀