測試網頁應用程式的後端是開發程序和任何持續監控的重要一環。另請參閱前端的測試。
測試驅動開發
在測試開發 (TDD) 中,應用程式需求會在應用程式完全實作之前轉譯為測試案例。在開發期間,這些測試會先編寫,等到建構應用程式時,再逐步實作。明確的需求 (即測試案例) 可確保最終程式碼結構良好、符合所有要求且正確無誤,這在早期開發階段尤其重要。
持續整合與自動化測試
持續整合 (CI) 測試會自動對任何程式碼變更執行測試,例如審查程式碼期間,或程式碼已合併至程式碼存放區時。自動化測試可降低開發期間發生故障或迴歸的風險,藉此提高已提交程式碼的整體品質和可信度。建議您為環境設定自動化測試系統,確保應用程式的健康狀態良好。使用由您的架構、平台和語言支援的系統,並與您的開發管道完美整合;例如使用 CI 工作流程的 GitHub Actions 或雲端內建的自訂 CI 管道 (針對設定自訂)。
進一步瞭解自動化測試背後的原則,以及如何改善測試。進一步瞭解持續整合測試,以及實作、設定及評估成效的最佳做法。
接下來,請考慮使用自動持續推送軟體更新 (CD) 管道,自動將變更和更新部署至應用程式。
單元測試
單元測試是指單獨測試程式碼的小型獨立部分。請使用我們建議您為後端語言或架構推薦且常用的單元測試架構。舉例來說,如果是以 Java 為基礎的單體式應用程式,請使用 JUnit;如果是以 JavaScript 為基礎的無伺服器應用程式 (包括 Dart 或 TypeScript),請使用專為 JavaScript 測試打造的架構,例如 Jest。
大多數現代化後端架構都有專屬測試資源。請考慮將這些功能整合至 CI 管道,以自動執行測試。請確保單元測試提供良好的應用程式程式碼涵蓋率。大多數測試架構都提供了功能,可用來分析測試涵蓋範圍並產生報表,並允許整合至建構管道。
整合測試
整合測試是指同時測試大型模組或應用程式的某些部分。與單元測試 (著重於程式碼的個別部分) 相比,整合測試著重於架構中個別部分的整合。這可能也包括涵蓋應用程式中多個步驟和模組的端對端資料流。
整合測試可能涵蓋應用程式的不同模組,而這些模組可能需要與外部服務互動,例如資料儲存、檔案系統或付款。請考慮透過依附元件插入或後端架構提供的類似功能,建構應用程式以支援這些服務的抽象化機制。
行為和功能測試
將後端 (或個別模組或元件) 視為不透明方塊,功能測試則著重於系統的輸入和輸出內容。雖然前端的行為測試可能較常見,但在確認後端系統的端對端完整性也扮演重要的角色。這些類型的測試可確認系統對不同輸入內容做出反應及行為符合預期。
迴歸測試
迴歸測試是指確認應用程式仍會正常運作的測試。先前順利完成的測試會針對任何新變更重新執行,確保變更未再次導入任何先前的問題。隨著應用程式的錯誤修正,您應新增單元或整合測試,以確保錯誤不會再次發生。迴歸測試應整合到一般測試和建構管道中。
煙霧檢測
煙霧測試 (又稱為建構驗證測試) 著重於驗證後端應用程式最重要的功能。煙霧測試將延伸到整合測試以外的功能,其中可提取部分功能和外部依附元件。煙霧測試涵蓋應用程式的重要用途。您可以在應用程式升級為測試環境前,進行煙霧測試做為額外的驗證作業,確保應用程式的運作方式準確無誤。煙霧測試可能包含自動化單元測試,或由品質確保團隊執行的手動功能測試。
正式環境和測試環境
測試環境是實際工作環境的複本,採用沙箱機制可協助進行測試。專屬的部署作業可降低實際工作環境發生問題的風險,同時更輕鬆地進行品質查驗。測試環境可讓您測試接近實際實際工作環境的系統。
您可能會因為成本或後端架構複雜度等因素,而提供 1 對 1 的正式環境副本。請考慮後端的哪些部分最重要,並針對測試環境進行最佳化。
對實際工作環境中使用的資料進行測試非常實用,有助於測試應用程式在實際資料下的行為。針對這類測試環境,請務必考量到隱私權影響和資料儲存需求,並謹慎設計後端系統使用的資料。您應嚴格控管這類環境的存取行為,特別是在使用實際工作環境資料時。
考量系統的規模,以及站立環境是否適用於您的應用程式。能夠透過持續推送軟體更新系統自動部署的滾動測試環境也能提供額外的機會,讓您進行每日或每週建構測試,並在發布前給予額外審查。
另一個做法是更依賴持續整合測試和自動化系統,而非完全部署的暫存環境。請考慮團隊的工作流程、系統健康狀態、程式碼涵蓋範圍和技術需求。