AI 기반 자가 복구 기능으로 Appium 스크립트 유지 관리를 간편하게 만드세요

하루가 끝났고, 테스트 팀은 짐을 챙겨 집으로 향하고 있습니다. 전통적으로 마지막 사람이 불을 끄기 때문에, 완료해야 할 추가 작업이 하나 있습니다. 나가는 길에 팀원 중 한 명이 임무의 일환으로 야간 테스트 실행을 시작해야 합니다. 회귀 테스트 모바일 기기용입니다. 하지만 다음 날 아침, 팀은 충격과 당혹감에 휩싸였습니다. 애플리케이션 내 위치 정보 변경으로 인해 많은 테스트가 실패했기 때문입니다.

이러한 유형의 변경은 자주 발생하지만 여러 가지 이유로 눈에 띄지 않게 됩니다. 간단한 예로, 개발팀이 너무 사소한 변경을 해서 중요하지 않다고 여겨져 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"과 함께 즉시 실패합니다.

이 문제를 어떻게 해결할 수 있을까?

원하는 기능 내에서 테스트 설정에 한 줄만 추가하면 됩니다. 애플리케이션을 설치하고 실행하기 위한 간단한 테스트 스크립트 설정을 살펴보겠습니다. Digital.ai의 Continuous Testing 플랫폼:

```
원하는 기능 캡 =   원하는 기능();

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");

```

자가치유 기능을 사용자 정의할 수 있나요?

AI 기반 자가 복구 기능은 테스트 중인 애플리케이션의 요구 사항에 맞게 구성할 수 있으며, 특히 다양한 수준의 복잡성을 처리할 때 유용합니다.

  1. 회복 시도: 알고리즘이 일치하는 로케이터를 찾기 위해 시도하는 총 횟수를 정의합니다.
    기본적으로 Self-Healing은 요소당 한 번씩 로케이터 변경 사항을 식별하려고 시도합니다. 예를 들어, 알고리즘이 사용자 이름 필드에 대한 대체 로케이터를 찾지 못하면 다음 단계로 넘어가기 전에 한 번만 시도합니다.
  2. 점수 상한: 성공적인 매칭 확률에 따라 매칭 점수 임계값을 설정합니다. 기본 점수는 0.1~1.0 척도에서 0.6으로 설정됩니다.
    0.6점은 일치 확률이 60% 이상일 때만 새로 식별된 로케이터에 대해 자체 복구가 작동함을 나타냅니다.

The Digital.ai 지원팀은 요청에 따라 두 속성을 모두 수정할 수 있습니다.

AI 자가 복구 기능은 모든 유형의 모바일 애플리케이션에서 작동합니까?

현재 AI 자가 복구 기능은 Android 모바일 네이티브 및 웹 테스트와 iOS 웹 테스트에서 지원됩니다. iOS 모바일 네이티브 애플리케이션은 아직 지원되지 않지만, 향후 업데이트를 기대해 주세요.

단일 테스트 스크립트 실행 중에 여러 로케이터가 변경되면 어떻게 되나요?

단일 로케이터 변경이든 여러 변경이든, AI 자가 복구가 활성화되면 자가 복구 메커니즘이 활성화되어 단일 테스트 실행 중에 영향을 받는 모든 로케이터를 자동으로 업데이트합니다. 수동 개입은 필요 없습니다.

테스트가 복구되었습니다. 테스트를 그대로 계속 실행해야 할까요, 아니면 스크립트를 수정해야 할까요?

자동화된 테스트를 계속 실행할 수 있으며 예상대로 작동합니다. Digital.ai platform 변경 사항을 계속 감지하고 스크립트가 예상대로 실행되도록 합니다. 하지만 이렇게 해도 문제가 완전히 해결되는 것은 아닙니다. 테스트는 런타임 중에 복구되지만, IntelliJ와 같은 IDE에서 트리거하든 Azure와 같은 CI/CD 파이프라인에서 트리거하든 실제 스크립트는 수정되지 않습니다. DevOps원래 자동화 스크립트를 수정하고 필요한 변경 사항을 적용해야 합니다.

어차피 변화가 필요하다면 왜 치료를 받아야 하나요?

자가 복구 기능을 사용하면 로케이터 변경으로 인해 테스트 실행이 중단되지 않는다는 이점이 있습니다. 실행 후, 원하는 시간에 보고서를 검토하여 복구된 로케이터를 파악하고 스크립트를 업데이트할 수 있습니다. 실제 테스트 실패와 자동화 문제를 구분하면 최종 사용자에게 훨씬 더 큰 영향을 미칠 수 있는 우선순위가 높은 작업에 집중할 수 있습니다. 결과적으로 불안정한 테스트로 인해 진행이 지연될까 봐 끊임없이 걱정할 필요 없이 새로운 업데이트를 출시할 수 있습니다.

무언가가 치유되었는지 어떻게 알 수 있나요?

간단하죠! 예를 들어 보겠습니다. 브라우저에서 리포터 페이지로 이동할 수 있습니다(Chrome에서 가장 잘 작동합니다).

``` https:// /리포터/리포터/테스트 ```

또는 메인 플랫폼에서 오른쪽 상단 모서리에 있는 이니셜을 클릭하고 "리포터로 이동"

 

그리고 "로 가세요테스트" 탭: 

 

이 보기에서는 프로젝트에 대해 실행된 모든 테스트가 표시되며, 여기에는 복구된 테스트의 비율도 포함됩니다.

 

클릭 치유 파이 차트의 상태를 필터링하여 치료된 테스트만 표시합니다.

 

각 보고서를 클릭하면 무엇이 치료되었는지에 대한 자세한 정보를 볼 수 있습니다.

최종 생각

AI 기반 자가 치유는 테스트 자동화의 도약을 의미합니다.Appium 스크립트 유지 관리의 효율성을 높이고 빠른 개발 주기에 맞춰 필요한 수동 작업을 줄여줍니다. 자가 복구 기능이 스크립트 업데이트의 필요성을 완전히 대체할 수는 없지만, 테스트 중단을 방지하고 스크립트 유지 관리에 대한 귀중한 통찰력을 제공하여 원활한 경험을 제공합니다. 이를 통해 자가 복구 기능은 강력한 도구로 기능하며 테스트 안정성을 향상시킵니다. AI 자가 복구가 테스트 자동화 전략을 어떻게 혁신할 수 있는지 알아보고 AI 혁신에 대해 자세히 알아보고 싶으시다면 지금 바로 문의해 주세요!

당신은 또한 좋아할 거라