利用人工智慧驅動的自癒功能,讓 Appium 腳本維護變得輕鬆無憂

一天的工作結束了,測試團隊正在收拾東西回家。按照慣例,最後一個離開的人會負責關燈,但還有額外的任務需要完成。在離開的路上,其中一名團隊成員需要觸發夜間測試運行,這是他們日常工作的一部分。 回歸測試 適用於行動裝置。然而,第二天早上,令團隊震驚和沮喪的是,他們發現由於應用程式內部的定位器更改,許多測試都失敗了。

這類變更經常發生,但由於各種原因往往被忽略。舉個簡單的例子,開發團隊可能做了一個非常小的改動,以至於被認為無關緊要,因此沒有通知品質保證團隊。

審查失敗的腳本、更新定位器和重新運行測試所需的時間和精力會迅速使衝刺脫軌,增加將缺陷產品發佈到生產環境的風險。

在人工智慧日益成為軟體開發生命週期核心的世界裡如今,開發人員可以獲得上下文建議、程式碼優化甚至單元測試生成等方面的協助。雖然這加快了開發速度,但也會為品質保證團隊帶來後續挑戰,因為他們難以跟上程式碼量激增的步伐。

像上面這樣的小UI改動通常會影響自動化端對端測試。然而,透過整合AI自癒功能,腳本可以即時調整,在執行過程中修復損壞的定位器,而不會中斷測試流程。這項功能將有助於QA團隊跟上快速的開發週期,顯著減少測試維護時間,並提供更快的回饋——所有這些都將提高測試的彈性。

本部落格將探討如何 人工智慧驅動的自愈 在運行時自動解決元素不匹配問題,無需人工幹預。

前提條件:此功能僅適用於專業版和高級版 SaaS 客戶。

為了幫助您更了解人工智慧自癒及其在我們平台上的運作方式,我們將探討以下內容: Digital.ai為 Android 建立的銀行應用程序,並逐步完成登入頁面的簡單測試,以偵測變更。

我們將有兩個版本的同一個應用程序,一個未修改的版本(預計可以正常工作),另一個修改過的版本(其中一個定位器已更改)。

在未修改的應用程式版本中,我們可以看到 ID「usernameTextField」標識使用者名稱定位器:

如下所示,自動化腳本中將引用此定位器。以下程式碼行在觸發自動化 Appium 測試後驗證使用者名字段並與之互動:

``` wait.until(ExpectedConditions.elementToBeClickable(By.id("com.experitest.ExperiBank:id/usernameTextField"))); driver.findElement(By.id("com.experitest.ExperiBank:id/Keyusername.Fdester");

正常情況下,如果定位器沒有被修改,腳本就不會有問題。

但是,我們考慮這樣一種情況:使用者名字段的定位符號發生了變化。在這個修改後的版本中,它不再被識別為“UserTextField”,而是被識別為“UserTextField”:

在這種情況下,腳本會立即失敗並拋出“NoSuchElementException”異常。

我們該如何解決這個問題?

只需在所需功能下的測試設定中新增一行程式碼即可。我們來看一個簡單的測試腳本設置,用於安裝和啟動應用程式。 Digital.ai“ Continuous Testing 平台:

``''
所需能力上限 =  所需能力();

caps.setCapability("testName", "login_scenario_test");
caps.setCapability(“存取密鑰”,ACCESS_KEY);
caps.setCapability("deviceQuery", "@os='android'"); //
https://docs.digital.ai/bundle/TE/page/device_queries.html
caps.setCapability("應用程式", "cloud: com.experitest.ExperiBank/.LoginActivity");
caps.setCapability(“appPackage”, "com.experitest.ExperiBank");
caps.setCapability(“appActivity”, ".LoginActivity");

所需能力.set(caps);
司機。放( AndroidDriver( 網址(https:// /wd/hub"), 大寫字母));

``''

現在,只需在腳本的功能配置中添加以下一行,即可告訴腳本以自癒模式執行:

``'' 
caps.setCapability(“自癒”, );

``''

現在您可以像往常一樣運行自動化腳本。無論是在您的整合開發環境(例如 Eclipse / IntelliJ)還是持續整合/持續交付 (CI/CD) 管道(例如 Azure)中,都不需要進行任何其他變更。 DevOps).

啟用 AI 自癒功能是否會影響常規測試的執行時間?

啟用自癒功能可能會增加測試執行時間,因為自癒模組會在測試運行期間持續掃描頁面以偵測變更。為了提供靈活性,我們提供了在腳本中暫停和恢復自癒功能的選項。例如,如果登入頁面穩定且不太可能導致故障,則停用此部分的自癒功能有助於縮短測試執行時間。只需在測試腳本中新增一行程式碼,即可暫停自癒模式:

``''

司機.executeScript("seetest:client.stopHealing");

``''

當你想繼續執行時,只需呼叫另一行簡短的命令:

``''

司機.executeScript(“seetest:client.startHealing”);

``''

自癒能力可以自訂嗎?

AI 驅動的自癒功能可根據被測應用程式的需求進行配置,尤其是在處理不同複雜程度的問題時。

  1. 恢復嘗試次數: 定義演算法為發現匹配定位器而進行的總嘗試次數。
    預設情況下,自癒功能會嘗試對每個元素的定位器變更進行一次識別。例如,如果演算法未能找到使用者名字段的替換定位器,則只會嘗試一次,然後繼續處理下一個元素。
  2. 得分上限: 根據匹配成功的機率設定匹配分數閾值。預設分數設定為 0.6(範圍為 0.1 到 1.0)。
    得分 0.6 表示只有當匹配機率大於 60% 時,才會對新識別的定位器觸發自我修復。

这 Digital.ai 支援團隊可根據要求修改這兩個屬性。

AI自癒功能適用於所有類型的行動應用程式嗎?

目前,AI 自癒功能支援 Android 平台上的原生應用程式和網頁測試,以及 iOS 平台上的網頁測試。 iOS 原生應用程式的支援尚未推出,敬請期待後續更新。

如果在一次測試腳本執行過程中發生多次定位器變更會發生什麼?

無論是單一定位器變更還是多個更改,啟用 AI 自癒功能後,自癒機制將在單次測試執行期間啟動並自動更新所有受影響的定位器,而無需任何人工幹預。

我的測試已修復:我應該繼續按原樣運行測試,還是需要修改腳本?

您可以繼續執行自動化測試,它們將按預期工作。 Digital.ai platform 將繼續偵測變更並確保腳本按預期運行。但是,這並不能完全解決問題。雖然測試在執行時間會進行修復,但無論您是從 IntelliJ 等 IDE 還是 Azure 等 CI/CD 管道觸發測試,它都不會修改實際腳本。 DevOps您需要修改原有的自動化腳本並進行必要的變更。

既然無論如何我都需要做出改變,為什麼還要療癒呢?

使用自癒功能的好處在於,定位器變更不會中斷測試執行。運行結束後,您可以隨時查看報告,確定哪些定位器已修復,然後相應地更新腳本。區分真正的測試失敗和自動化問題有助於將精力集中在優先順序更高的任務上,這些任務可能對最終用戶產生更大的影響。因此,您可以發布新版本,而無需擔心不穩定的測試會拖慢進度。

如何判斷傷口是否癒合?

很簡單!我們來看一個例子。您可以透過瀏覽器造訪您的記者頁面(Chrome 瀏覽器效果最佳):

``` https:// /reporter/reporter/tests

或者,在主平台上,點擊右上角的姓名首字母,然後選擇“前往記者

 

然後前往“測試”標籤: 

 

此視圖將顯示專案中所有已執行的測試,包括已修復測試的百分比:

 

點擊 痊癒了 餅圖中的狀態將篩選結果,僅顯示已治癒的測試結果:

 

您也可以點擊每份報告查看有關治癒情況的詳細資訊:

最後的思考

AI驅動的自癒功能代表了測試自動化領域的飛躍。它能更有效率地維護 Appium 腳本,並減少應對快速開發週期所需的人工工作量。雖然自癒功能可能無法完全取代腳本更新,但它透過防止測試中斷並為腳本維護提供寶貴的洞察,從而帶來無縫體驗。這使其成為一款強大的工具,並能提高測試的可靠性。如果您準備好探索 AI 自癒如何變革您的測試自動化策略,並了解更多關於我們 AI 創新成果的信息,請與我們聯絡!

你可能還喜歡