0%

【文章翻譯】Integration Testing with flutter_driver

【文章內容使用 Gemini 1.5 Pro 自動產生】

使用 flutter_driver 進行整合測試

單元測試確保應用程式的個別部分按預期運作,但整個應用程式呢?這就是整合測試發揮作用的地方。

Flutter driver

如果您從未在 Flutter(或任何地方)進行過整合測試,別擔心!在 Flutter 中為您的應用程式添加整合測試是一項簡單的任務。有一組非常有用的文章將引導您。

  1. 整合測試簡介:這個東西是什麼,我該如何設定?
  2. 處理捲動:我該如何處理捲動到某個東西的常見模式?

到達這一點可以確保您的應用程式可以正常運行、可以到達特定螢幕、特定操作會產生一些結果,等等。您創建的測試取決於您的需求。您可以使用一個測試打開應用程式的所有螢幕,或者使用測試完成特定使用者旅程。

但我們可以使用 flutter_driver 進一步進行效能測試。

效能分析

只需將您的測試用 flutterDriver.traceAction 包裹起來,就會在您的測試運行時記錄您的應用程式的效能。此輸出資料(以 JSON 格式)可以在持續整合 (CI) 測試中使用,以確保例如某些指標保持在特定臨界值之上或之下。該資料還可以用於除錯效能問題。有關如何進行效能分析的詳細資訊,請參閱整合測試文章,效能分析

作為參考,Flutter Gallery 有個 整合測試,會瀏覽所有演示並為其中的一部分捕獲效能指標。

螢幕截圖測試

螢幕截圖測試是一種渲染 UI、捕獲輸出螢幕截圖,然後將結果與預期圖片進行比較。為您的應用程式添加螢幕截圖測試的一個簡單方法是使用 flutterDriver.screenshot。若要了解更多資訊並查看實際的程式碼範例,請參閱 Medium 文章,使用 Flutter Driver 測試 Flutter UI,作者是社群成員 Darshan Kawar。

此方法可以輕鬆整合到您的持續整合測試設定中,以防止 UI 回歸。Flutter Gallery 有幾個 螢幕截圖測試 和一個 GitHub 工作流程設定,用於自動測試進來的 PR。

a11y 測試

a11y 或無障礙測試是一種可用性測試,用於確保應用程式可以被有障礙的人使用,例如視力障礙、聽力障礙、肢體障礙,等等。使用 flutterDriver.getSemanticsId 驗證語義標籤,例如,驗證所有圖片是否都有語義標籤。

在 Darshan Kawar 的另一篇很棒的文章中,了解更多關於無障礙測試的資訊,在 Flutter 中開發和測試無障礙應用程式

i18n 測試

i18n 或國際化測試是測試應用程式是否可以在不同的語言和地區使用而無需任何變更的過程。

根據您的本地化程式碼的設定方式,您可以使用本地化的委派來更改語言環境。

ExampleAppLocalizationsDelegate.load(Locale('fr'));

或者,在使用 MaterialApp 時,只需允許覆蓋應用程式的語言環境,以便在不同的語言環境中運行。

在啟動應用程式的驅動程式檔案中,設定語言環境。

額外提示

想知道頁面上是否存在某個元素嗎?

您可以選擇任何適合您的應用程式的超時時間。

結語

到目前為止,您應該對 flutter_driver 的功能有了很好的了解。您可以結合方法以滿足您的需求;例如,使用不同的語言環境執行螢幕截圖測試。如果我們遺漏了什麼,請在評論中告訴我們!若要了解更多資訊,請參閱 flutter_driver API 文件。

關於作者:Pierre-Louis 是滑鐵盧大學的應屆大學畢業生。他住在慕尼黑,是維護 Flutter Material 函式庫的團隊中的一員。他對 UI、UX 和應用程式開發非常感興趣。您可以在 LinkedIn GitHub 上與他聯繫。


使用 flutter_driver 進行整合測試 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。