하루가 끝났고, 테스트 팀은 짐을 챙겨 집으로 향하고 있습니다. 전통적으로 마지막 사람이 불을 끄기 때문에, 완료해야 할 추가 작업이 하나 있습니다. 나가는 길에 팀원 중 한 명이 임무의 일환으로 야간 테스트 실행을 시작해야 합니다. 회귀 테스트 모바일 기기용입니다. 하지만 다음 날 아침, 팀은 충격과 당혹감에 휩싸였습니다. 애플리케이션 내 위치 정보 변경으로 인해 많은 테스트가 실패했기 때문입니다.
이러한 유형의 변경은 자주 발생하지만 여러 가지 이유로 눈에 띄지 않게 됩니다. 간단한 예로, 개발팀이 너무 사소한 변경을 해서 중요하지 않다고 여겨져 QA팀에 전달되지 않은 경우가 있습니다.
실패한 스크립트를 검토하고, 로케이터를 업데이트하고, 테스트를 다시 실행하는 데 필요한 시간과 노력은 스프린트를 빠르게 탈선시켜 결함이 프로덕션에 전달될 위험을 증가시킬 수 있습니다.
AI가 SDLC의 중심이 되는 세상에서이제 개발자는 상황에 맞는 제안, 코드 최적화, 심지어 단위 테스트 생성까지 지원을 받을 수 있습니다. 이를 통해 개발 속도는 빨라지지만, QA 팀은 생성되는 코드의 증가를 따라잡는 데 어려움을 겪으면서 다운스트림 작업에 어려움을 겪을 수 있습니다.
위와 같은 사소한 UI 변경은 자동화된 엔드투엔드 테스트에 영향을 미치는 경우가 많습니다. 그러나 AI 자가 복구 기능을 통합하면 스크립트가 즉시 적응하여 테스트 흐름을 방해하지 않고 실행 중에 손상된 로케이터를 복구할 수 있습니다. 이 기능은 QA 팀이 빠른 개발 주기에 맞춰 테스트 유지 관리 시간을 크게 단축하고 더 빠른 피드백을 제공하는 데 도움이 되며, 동시에 테스트 복원력도 향상됩니다.
이 블로그에서는 다음 방법을 살펴보겠습니다. AI 기반 자가 치유 인간의 개입 없이 런타임에 요소 불일치 문제를 자율적으로 해결합니다.
필수 조건: 이 기능은 Pro 및 Premium SaaS 고객에게만 제공됩니다.
AI 자체 복구와 플랫폼에서의 작동 방식을 더 잘 이해하도록 돕기 위해 다음을 살펴보겠습니다. Digital.aiAndroid용으로 구축된 's 뱅킹 애플리케이션과 로그인 페이지에서 변경 사항이 감지되는 간단한 테스트를 안내합니다.
동일한 애플리케이션에는 두 가지 버전이 있는데, 하나는 수정되지 않은 버전(작동할 것으로 예상되는 빌드)이고 다른 하나는 수정된 버전(로케이터 중 하나가 변경된 빌드)입니다.
수정되지 않은 버전의 애플리케이션에서는 ID "usernameTextField"가 사용자 이름 로케이터를 식별하는 것을 볼 수 있습니다.

이 로케이터는 아래와 같이 자동화 스크립트에서 참조됩니다. 다음 줄은 자동화된 Appium 테스트가 트리거된 후 사용자 이름 필드의 유효성을 검사하고 상호 작용합니다.
``` 예상 조건.요소를 클릭할 수 있을 때까지 기다립니다(By.id("com.experitest.ExperiBank:id/사용자 이름 텍스트 필드"))); 드라이버.findElement(By.id("com.experitest.ExperiBank:id/사용자 이름 텍스트 필드")).키 보내기("tester01"); ```
일반적인 상황에서 로케이터가 수정되지 않으면 스크립트는 문제 없이 통과할 것입니다.
하지만 사용자 이름 필드의 로케이터가 변경된 경우를 생각해 보겠습니다. 이 수정된 빌드에서는 "UsernameTextField" 대신 "UserTextField"로 식별됩니다.

이 경우 스크립트는 "NoSuchElementException"과 함께 즉시 실패합니다.
이 문제를 어떻게 해결할 수 있을까?
``` 원하는 기능 캡 = 원하는 기능(); caps.setCapability("테스트이름", "로그인_시나리오_테스트”); caps.setCapability("액세스키", 액세스 키); caps.setCapability("장치쿼리", "@os='안드로이드'"); // https://docs.digital.ai/bundle/TE/page/device_queries.html caps.setCapability("앱", "클라우드: com.experitest.ExperiBank/.LoginActivity"); caps.setCapability("앱 패키지", "com.experitest.ExperiBank"); caps.setCapability("앱 활동", ".로그인활동"); 원하는 기능.set(대문자); 운전사.세트( 안드로이드 드라이버( URL("https:// /wd/허브"), 모자)); ```
이제, 기능 내에 다음 줄을 추가하기만 하면 스크립트가 자체 복구 모드에서 실행되도록 할 수 있습니다.
``` caps.setCapability("자기치유", 참된); ```
이제 평소처럼 자동화된 스크립트를 실행할 수 있습니다. IDE(예: Eclipse/IntelliJ)나 CICD 파이프라인(예: Azure)에서 추가 변경이 필요하지 않습니다. DevOps).
AI 자가 복구 기능을 활성화하면 정기적인 테스트 실행 시간에 영향을 미칠까요?
``` 운전사.executeScript("seetest:client.stopHealing"); ```
다시 시작하고 싶을 때는 간단히 한 줄짜리 코드를 더 호출하면 됩니다.
``` 운전사.executeScript("seetest:client.startHealing"); ```
자가치유 기능을 사용자 정의할 수 있나요?
- 회복 시도: 알고리즘이 일치하는 로케이터를 찾기 위해 시도하는 총 횟수를 정의합니다.
기본적으로 Self-Healing은 요소당 한 번씩 로케이터 변경 사항을 식별하려고 시도합니다. 예를 들어, 알고리즘이 사용자 이름 필드에 대한 대체 로케이터를 찾지 못하면 다음 단계로 넘어가기 전에 한 번만 시도합니다. - 점수 상한: 성공적인 매칭 확률에 따라 매칭 점수 임계값을 설정합니다. 기본 점수는 0.1~1.0 척도에서 0.6으로 설정됩니다.
0.6점은 일치 확률이 60% 이상일 때만 새로 식별된 로케이터에 대해 자체 복구가 작동함을 나타냅니다.
The Digital.ai 지원팀은 요청에 따라 두 속성을 모두 수정할 수 있습니다.
AI 자가 복구 기능은 모든 유형의 모바일 애플리케이션에서 작동합니까?
단일 테스트 스크립트 실행 중에 여러 로케이터가 변경되면 어떻게 되나요?
테스트가 복구되었습니다. 테스트를 그대로 계속 실행해야 할까요, 아니면 스크립트를 수정해야 할까요?
어차피 변화가 필요하다면 왜 치료를 받아야 하나요?
무언가가 치유되었는지 어떻게 알 수 있나요?
``` https:// /리포터/리포터/테스트 ```
또는 메인 플랫폼에서 오른쪽 상단 모서리에 있는 이니셜을 클릭하고 "리포터로 이동"

그리고 "로 가세요테스트" 탭:
이 보기에서는 프로젝트에 대해 실행된 모든 테스트가 표시되며, 여기에는 복구된 테스트의 비율도 포함됩니다.
클릭 치유 파이 차트의 상태를 필터링하여 치료된 테스트만 표시합니다.
각 보고서를 클릭하면 무엇이 치료되었는지에 대한 자세한 정보를 볼 수 있습니다.



