용어집 · 테스트 분야의 AI
셀프 힐링 로케이터
영어: Self-healing locator
다른 이름: self-healing test, 셀프 힐링 테스트, 자가 치유 로케이터, Healenium
정의
원래 로케이터가 요소를 찾지 못하면 저장된 속성 정보로 가장 비슷한 요소를 찾아 대신 사용하는 UI 테스트 로케이터입니다.
셀프 힐링 로케이터(self-healing locator)는 복구 메커니즘을 갖춘 UI 테스트 로케이터입니다. 예를 들어 id가 바뀌어 기본 로케이터가 요소를 찾지 못하면, 도구는 원래 요소에 대해 알고 있던 정보(태그, 텍스트, 속성, 위치, 인접 요소)와 가장 잘 맞는 요소를 페이지에서 찾아 사용하고, 보통 이 “힐링”을 기록해 누군가 테스트를 수정할 수 있게 합니다. 목표는 무해한 마크업 변경으로 인한 실패를 줄이는 것입니다.
실제 동작 방식
대부분의 구현은 같은 패턴을 따릅니다.
- 테스트가 통과할 때 테스트가 다루는 각 요소의 핑거프린트(fingerprint)를 저장합니다.
- 로케이터가 실패하면 페이지의 후보 요소들을 그 핑거프린트와 비교해 점수를 매깁니다.
- 가장 좋은 후보가 임계값을 넘으면 그 요소를 사용하고 대체 사실을 로그로 남깁니다. 그렇지 않으면 평소처럼 실패합니다.
이런 속성 유사도 기반 힐링은 이미 자리 잡은 기술로, 상용 도구들이 제공하고 있으며 Selenium용 오픈소스로는 Healenium이 있습니다. 모델이 페이지나 접근성 트리를 읽고 새 로케이터나 수정된 테스트를 제안하는 LLM 기반 힐링은 더 최근의 방식입니다. Playwright 1.56에서 도입된 테스트 에이전트에는 실패한 테스트의 수정안을 제안하는 healer가 포함되어 있습니다. 이런 도구는 자동 조종 장치가 아니라, 리뷰할 변경을 제안하는 보조 도구로 다뤄야 합니다.
진짜 위험: 실제 버그를 “치유”해 버리는 것
힐링은 변경이 겉모습뿐이라고 가정합니다. 그렇지 않을 때도 있습니다.
- “Submit” 버튼이 실수로 삭제되었는데, healer가 대신 “Save draft”를 클릭합니다.
- 필드 레이블이 “Email”에서 “Username”으로 바뀌었는데, 이는 테스트가 알려 줬어야 할 실제 요구사항 변경입니다.
- 비슷한 행이 두 개 있고 healer가 잘못된 쪽을 골라, 테스트가 잘못된 데이터로 통과합니다.
어느 경우든 실패해야 할 테스트가 녹색이 됩니다. 힐링을 정직하게 유지하는 규칙은 다음과 같습니다.
- 모든 힐링을 보고하고, 릴리스 게이트에서는 실행을 실패 처리하거나 최소한 경고로 표시합니다.
- 힐링을 코드 변경으로 바꿉니다. 제안된 로케이터를 리뷰에서 승인하거나 거절하고, 도구가 조용히 계속 사용하게 두지 않습니다.
- 상호작용만이 아니라 결과를 어설션합니다. 그래야 잘못된 요소를 클릭했을 때 다음 어설션에서 실패합니다.
로케이터부터 고치기
셀프 힐링이 해결하려는 취약성의 상당 부분은 긴 XPath 체인, 자동 생성된 클래스 이름, 인덱스 기반 경로 같은 깨지기 쉬운 셀렉터에서 옵니다. Playwright의 getByRole('button', { name: 'Submit' }) 같은 사용자 관점 로케이터나 안정적인 data-testid 속성을 쓰면, 추측 없이도 그런 필요의 대부분이 사라집니다.