Android 自動化測試工具怎麼選:Appium、UI Automator 與 Espresso

BeePOS LLC  |   |  10 分鐘閱讀

根據您需要控制的邊界選擇一個Android自動化測試工具:應用程式擁有的使用者介面、系統和跨應用程式行為、跨平臺WebDriver測試或可觀察的真實手機工作流程。

Android 自動化測試工具怎麼選:Appium、UI Automator 與 Espresso
Android 自動化測試工具怎麼選:Appium、UI Automator 與 Espresso

簡短的答案:根據測試邊界來選擇,而不是根據人氣來選擇

沒有單一最佳的Android自動化測試工具。當您的團隊擁有應用程式並需要斷言靠近其UI程式時,請選擇Compose測試或Espresso。當測試必須跨越應用程式邊界或與Android系統UI互動時,請選擇UI Automator。當WebDriver風格的客戶端、多種編程語言或共享的Android和iOS自動化層級很重要時,請選擇Appium。當審查員必須監視真實手機、識別可見狀態、收集螢幕截圖或在應用程式測試程式之外建模操作工作流程時,請新增可觀察的視覺流程。

這些工具解決了相同品質問題的不同層次。Android的官方UI測試指南將UI測試定義為啟動應用程式、模擬互動並檢查其是否正確響應。因此,一個有用的工具選擇始於測試必須產生的證據、必須跨越的軟體邊界以及誰將維護它。這是一項基於研究的當前官方文件比較,而不是一個聲稱一種框架普遍更快或更可靠的基準。

  • 應用程式擁有的檢視 UI:從 Espresso 開始。
  • 應用程式擁有的Jetpack Compose UI:從Compose測試API開始。
  • 系統使用者介面、許可權、多視窗或跨應用程式行為:從UI Automator開始。
  • 跨平臺WebDriver自動化和語言客戶端靈活性:評估Appium。
  • 可見的黑匣子工作流程、OCR、影象狀態和審查員友好的證據:新增一個視覺流程層。

安卓自動化測試工具的比較

工具或方法最合適的執行邊界主要選擇器或證據主要權衡
編寫測試使用Jetpack Compose構建的應用程式正在測試的應用程式或元件語義、屬性、操作、斷言需要具備測試意識的Compose程式和Android測試設定
濃咖啡基於檢視的應用程式行為測試正在測試的應用程式檢視匹配器、操作、斷言不是設計成廣泛跨應用程式旅程的主要工具
UI自動化器系統使用者介面、跨應用程式、多視窗、端到端安卓路徑裝置使用者介面和安裝的應用程式無障礙節點、預測詞、螢幕截圖、應用程式狀態Android特定的,通常在Android測試工具鏈中維護
使用UiAutomator2的Appium跨平臺的WebDriver風格移動自動化客戶端到Appium伺服器和Android驅動程式WebDriver定位器、功能、驅動程式命令更多可移動部件:伺服器、驅動程式、SDK、JDK和裝置配置
視覺流程可觀察的真實手機檢查和操作工作流程從應用程式程式外部可見的裝置狀態使用者介面樹、OCR、模板、影象、螢幕截圖、分支不取代單元、元件或儀器斷言

該表是邊界地圖,而不是獲勝者板。成熟的團隊通常將幾行合併在一起。構建螢幕可以進行快速的元件行為測試、用於許可權和系統過渡的UI自動化路徑、與iOS共享的Appium套件以及在部署後捕獲證據的小型監督式真實手機流程。只有當兩個套件以相同的裝置成本證明相同的要求時,重複才會成為一個問題。

使用Compose測試或Espresso來測試應用程式擁有的行為

當團隊控制應用程式程式並要求在該應用程式內的語義行為時,構建測試和Espresso是最強大的起點。構建測試API透過語義查詢元素,驗證屬性,執行操作,並與使用者介面同步。Espresso使用檢視匹配器、操作和斷言用於基於檢視的介面,同時阻止從錯誤的執行緒直接訪問活動和檢視,以防止不安全。

與應用程式如此接近是有用的。測試可以注入確定性資料,孤立一個元件,斷言已啟用或選擇的狀態,並以特定的語義原因失敗。這也意味著套件與應用程式的體系結構和測試構建耦合在一起。當要求屬於應用程式時,這種耦合是合適的:會出現驗證訊息,導航選擇正確的目的地,或按鈕保持禁用狀態,直到存在有效的輸入。

選擇「編輯」測試時

  • 介面主要是Jetpack Compose,並暴露了有用的語義。
  • 您想要具有受控狀態的元件級測試以及活動級測試。
  • 空閒同步和特定於Compose的時間控制有助於使斷言成為確定性的。

選擇濃縮咖啡時

  • 該應用程式是基於檢視的,或者具有需要行為測試的檢視螢幕。
  • 該測試可以使用資源ID或聚焦匹配器識別一個檢視。
  • 要求是在應用程式內部的互動和斷言,而不是整個裝置的旅程。

使用Android系統的UI Automator和跨應用程式路徑

當Android裝置本身是測試邊界的組成部分時,UI Automator獲勝。現代UI自動化API可以啟動應用程式,查詢帶有預測符的元素,處理許可權對話方塊,等待應用程式可見性或穩定的可訪問性樹,檢查多個視窗,並捕獲螢幕截圖。這些功能適用於許可權提示、設定螢幕、通知、畫中畫、分屏、啟動器行為和在安裝的應用程式之間切換的旅程。

重要的區別不是UI Automator只是比Espresso「更強大」。它從不同的位置觀察UI。這種外部位置可以看到系統和跨應用程式介面,但它對應用程式內部和測試副本的直接訪問較少。將其用於真正需要裝置邊界的端到端薄路徑;將大多數應用程式邏輯保留在更快、更專注的測試中。

這個當前UI Automator文件還包括內建的條件元素超時、明確的穩定性等待、螢幕截圖和結果報告。這些功能減少了依賴固定睡眠的誘惑。文件說明指出,可訪問性樹的穩定性並不能證明每個後臺任務都是空閒的,因此,只要有可用名稱應用程式條件,最好的等待仍然是名稱應用程式條件。

當WebDriver風格的移動層很重要時,請使用Appium

當組織想要從JavaScript、Java、Python、Ruby或.NET獲得移動自動化,已經使用WebDriver概念,或希望在一個自動化伺服器模型背後實現相關的Android和iOS套件時,Appium是一個強有力的候選人。在Android上,官方UiAutomator2快速入門安裝驅動程式,使用UiAutomator2自動化名稱選擇它,並透過Android工具鏈連線到模擬器或USB除錯裝置。

這種靈活性確實有運營成本。 這記錄的設定包括Appium伺服器、平臺驅動程式、Android SDK和平臺工具、相容的JDK、裝置準備、功能和客戶端依賴項。我們的編輯建議是明確擁有這些版本,並使用驅動程式醫生命令驗證設定,而不是維護一個未記錄的膝上型電腦配方。

Appium並非僅僅因為未來可能存在iOS套件而自動成為最佳選擇。如果目前的要求是一個小型僅限安卓的程式庫,並且可以深入訪問應用程式狀態,則原生安卓測試可能仍然更簡單。如果QA平臺已經標準化了裝置會話、語言客戶端、報告和跨平臺頁面物件,那麼Appium的共享模型可以證明額外的層次是合理的。

為可觀察的黑匣子工作流程新增視覺流程

當需求存在於人們可以在真實手機上觀察到的內容中,並且工作流程必須在應用程式儲存庫之外易於理解時,視覺流程很有用。例如,部署後的煙霧檢查、支援複製、跨第三方應用程式的操作路徑、本地化可見文字檢查或在狀態未知時必須在截圖中停止的監督設備任務。

萊彩 Flow可以結合使用者介面解析、元素查詢、點選、文字輸入、等待、分支、受限重複、螢幕截圖、OCR、模板匹配、物件檢測、子流程和明確的返回或停止行為。這使得決策路徑變得可見:觀察一個名稱狀態,允許一個操作,驗證後條件,並保留失敗時的證據。萊彩 Flow Inside可以執行相容的配置檔案萊彩 Android Agent部署後,但相容性取決於該配置檔案使用的每個節點和資產。

此層應該補充——而不是取代——應用程式原生斷言。當可見文字是證據時,OCR是合適的,但使用者介面樹不能可靠地顯示它。模板匹配適用於經過驗證的視覺目標。螢幕截圖對於構圖或失敗審查很有用。當源程式可用時,它們都不能取代對業務邏輯的單元測試或準確的構建斷言。 這Android視覺測試指南解釋如何在這些證據型別之間做出選擇。

構建分層的安卓測試策略

  1. 將要求寫成可觀察到的結果,而不是按鍵序列。
  2. 將業務邏輯放在裝置使用者介面不需要的地方的本地或元件測試中。
  3. 使用Compose測試或Espresso來測試應用程式擁有的行為和語義斷言。
  4. 僅在系統、多視窗、許可權或跨應用程式邊界上新增UI Automator。
  5. 當其伺服器、客戶端、報告或跨平臺模型提供具體的組織價值時,請使用Appium。
  6. 新增一個視覺化的真實手機流,以證明程式級套件無法清晰地產生。
  7. 保持每個端到端的路徑狹窄,定義一個開始狀態,約束每個等待和重試,並在恢復更改它之前捕獲失敗狀態。

一個要求應該有一個主要所有者。例如,表格驗證應屬於應用程式級別的測試;許可權移交應屬於使用者介面自動化器路徑;共享的Android和iOS結賬合同可能應屬於Appium;以及釋出後的真實手機證據執行可能應屬於視覺流程。這些層可以參考相同的使用者旅程,而不必將每個斷言複製到每個框架中。

這個真實手機QA煙霧測試指南展示如何保持部署的檢查小巧且可重複。 這自動停止條件指南涵蓋超時、受限重試、後續條件以及當當前螢幕不再證明下一步操作的合理性時的人類審查。

一個實用的選擇清單

問題如果是的話,從以下開始
您是否擁有Compose UI,並且需要語義元件或螢幕斷言?編寫測試
您是否擁有基於檢視的使用者介面,並需要專注於應用程式內的行為測試?濃咖啡
路徑必須穿過「設定」、「許可權」、「啟動器」、「視窗」或其他應用程式嗎?UI自動化器
團隊是否需要WebDriver客戶端或共享的Android和iOS自動化架構?Appium
非開發人員必須在真實手機上審查可見狀態、OCR、影象或螢幕截圖嗎?視覺流程
要求主要是商業邏輯,沒有裝置使用者介面依賴性嗎?兩者都不適用:使用本地單元或整合測試

在採用新框架之前,先建立一個代表性的原型路徑,並記錄完整的維護表面:測試程式、應用程式鉤子、伺服器或驅動程式版本、裝置重置、測試資料、許可權、螢幕截圖、日誌和CI所有權。最好的工具是能夠在團隊實際支付的維護成本下產生可信證據的工具。

Android自動化測試工具常見問題解答

UI Automator和Appium UiAutomator2是一樣的嗎?

沒有。UI Automator是一個Android測試庫和API.Appium的UiAutomator2驅動程式是Appium平臺驅動程式在面向Appium/WebDriver的層面後面。儘管名稱相關,但他們的設定、客戶端模型和維護邊界是不同的。

Appium可以取代Espresso或Compose測試嗎?

它可以自動化許多相同的可見旅程,但我們的建議是不要取代每個應用程式級別的測試。編寫測試濃咖啡更接近應用程式狀態和語義使用者介面行為。當應用程式外部客戶端、驅動程式架構或跨平臺一致性是要求的一部分時,Appium是最有價值的。

哪個工具最適合測試第三方應用程式?

當您不擁有目標應用程式程式時,UI Automator、Appium或經過審查的黑盒視覺流程比應用程式內部框架更合適。請確認自動化已獲得授權,使用穩定的可觀察選擇器,避免敏感或破壞性操作,並預計第三方UI更改需要維護。

視覺流在持續整合中有效嗎?

如果裝置會話、資產、輸入、故障工件和結果介面受到控制,它們可以參與自動化管道。然而,受監督的真實電話工作流程和CI斷言框架服務於不同的運營模式。首先決定執行是否必須阻止構建、生成審查證據或協助人員。

選擇證明要求的最小的工具邊界

始終始終始終始終始終始終始終始終始終始終始終始終始終始終始終始終始終始終始終始終

因此,最強大的安卓自動化策略不是單一工具標準。它是一種有記錄的責任分工:每個要求有一個主要斷言所有者,在昂貴的邊界處進行精簡端到端覆蓋,明確的停止條件,以及告訴下一個人發生了什麼的故障證據。 探索AI Android自動化與萊彩 Flow當可觀察的工作流程層與您的用例匹配時。

編輯注:BeePOS有限責任公司,背後的公司萊彩投屏,從以下相關聲明旁邊連結的官方Android和Appium文件中研究了此比較。產品部分是單獨標記的,以便讀者可以區分文件中規定的框架功能與我們自己的工作流程建議。如有任何問題或更正,請傳送至support@laicaiapp.com。

下載免費版

歷史版本 4.2.0: macOSWindows EXE

備註:僅支援安卓手機投屏。