一天的工作結束了,測試團隊正在收拾東西回家。按照慣例,最後一個離開的人會負責關燈,但還有額外的任務需要完成。在離開的路上,其中一名團隊成員需要觸發夜間測試運行,這是他們日常工作的一部分。 回歸測試 適用於行動裝置。然而,第二天早上,令團隊震驚和沮喪的是,他們發現由於應用程式內部的定位器更改,許多測試都失敗了。
這類變更經常發生,但由於各種原因往往被忽略。舉個簡單的例子,開發團隊可能做了一個非常小的改動,以至於被認為無關緊要,因此沒有通知品質保證團隊。
審查失敗的腳本、更新定位器和重新運行測試所需的時間和精力會迅速使衝刺脫軌,增加將缺陷產品發佈到生產環境的風險。
在人工智慧日益成為軟體開發生命週期核心的世界裡如今,開發人員可以獲得上下文建議、程式碼優化甚至單元測試生成等方面的協助。雖然這加快了開發速度,但也會為品質保證團隊帶來後續挑戰,因為他們難以跟上程式碼量激增的步伐。
像上面這樣的小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”異常。
我們該如何解決這個問題?
``'' 所需能力上限 = 新 所需能力(); 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”); ``''
自癒能力可以自訂嗎?
- 恢復嘗試次數: 定義演算法為發現匹配定位器而進行的總嘗試次數。
預設情況下,自癒功能會嘗試對每個元素的定位器變更進行一次識別。例如,如果演算法未能找到使用者名字段的替換定位器,則只會嘗試一次,然後繼續處理下一個元素。 - 得分上限: 根據匹配成功的機率設定匹配分數閾值。預設分數設定為 0.6(範圍為 0.1 到 1.0)。
得分 0.6 表示只有當匹配機率大於 60% 時,才會對新識別的定位器觸發自我修復。
这 Digital.ai 支援團隊可根據要求修改這兩個屬性。
AI自癒功能適用於所有類型的行動應用程式嗎?
如果在一次測試腳本執行過程中發生多次定位器變更會發生什麼?
我的測試已修復:我應該繼續按原樣運行測試,還是需要修改腳本?
既然無論如何我都需要做出改變,為什麼還要療癒呢?
如何判斷傷口是否癒合?
``` https:// /reporter/reporter/tests
或者,在主平台上,點擊右上角的姓名首字母,然後選擇“前往記者“

然後前往“測試”標籤:
此視圖將顯示專案中所有已執行的測試,包括已修復測試的百分比:
點擊 痊癒了 餅圖中的狀態將篩選結果,僅顯示已治癒的測試結果:
您也可以點擊每份報告查看有關治癒情況的詳細資訊:



