스마트 식별 QTP/UFT 예와 함께

⚡ 스마트 요약

스마트 식별은 다음과 같은 상황에서의 대체 메커니즘입니다. UFT 학습된 설명이 테스트 대상 애플리케이션과 더 이상 일치하지 않을 때 객체를 찾는 데 사용되며, 기본 및 선택적 필터 속성을 사용하여 후보 목록을 하나의 일치 항목으로 좁힙니다.

  • 🔍 정의: 이 메커니즘은 학습된 설명이 고유한 객체 일치 항목을 찾지 못했을 때만 활성화됩니다.
  • 🧩 두 가지 속성 유형: 기본 필터 속성은 객체가 무엇인지 정의합니다. 선택적 필터 속성은 일치 범위를 더욱 좁힙니다.
  • ⚙️ 제거 과정: UFT 기본 속성으로부터 후보 목록을 다시 생성한 다음, 선택적 속성을 하나씩 사용하여 필터링합니다.
  • 🖥️ 구성 : 도구 > 객체 식별에서 객체 클래스별 필터를 활성화하고 구성하십시오.
  • ⚠️ 결과 표시 여부: 모든 실행 시 테스트 결과 트리에 경고 단계가 기록됩니다.
  • 🐢 성능상의 절충점: 추가 필터링으로 인해 대규모 테스트 스위트 전반에 걸쳐 실행 시간 오버헤드가 발생합니다.
  • 🔧 수동 수정: 이름과 같은 변동적인 속성을 HTML ID와 같은 안정적인 속성으로 교체하여 대체 현상이 발생하지 않도록 하세요.
  • 💻 스크립트 제어: Setting(“DisableReplayUsingAlgorithm”)은 전체 실행 세션에 대한 스마트 식별 기능을 켜거나 끕니다.

스마트 식별이란 무엇인가요? QTP/UFT?

스마트 식별 는 객체 인식의 대체 메커니즘입니다. OpenText UFT 첫째, 이전에는 HP QuickTest Professional로 알려졌던 도구(QTP일반적인 식별 과정에서 객체의 학습된 설명과 일치하는 고유한 객체를 찾을 수 없는 경우, UFT 해당 객체 클래스의 객체 식별 설정에서 해당 메커니즘이 활성화된 경우 스마트 식별이 실행됩니다.

학습된 설명과 달리 스마트 식별은 저장된 모든 속성에서 정확히 일치할 필요가 없습니다. 두 가지 범주의 속성을 평가하여 후보 객체 풀을 정확히 하나로 좁힙니다.

  • 기본 필터 속성. 테스트 객체 클래스의 가장 기본적인 속성, 즉 원래 객체의 본질을 바꾸지 않고는 값을 변경할 수 없는 속성들입니다.
  • 선택적 필터 속성. 객체를 식별하는 데 도움이 되지만 시간이 지남에 따라 변경될 가능성이 더 높은 보조 속성입니다.

스마트 식별 기능이 실행될 때, UFT 학습된 설명을 "잊어버리고" 모든 기본 필터 속성과 일치하는 모든 객체를 포함하는 새로운 후보 목록을 다시 만듭니다. 그런 다음 선택적 필터 속성을 하나씩 확인하여 목록을 더욱 좁혀 나가고, 최종적으로 하나의 객체만 남을 때까지 진행합니다.

실행 세션 중에 스마트 식별 기능이 호출되면 테스트 결과 트리에 해당 메커니즘이 사용되었음을 확인하는 경고 메시지가 기록되고, 학습된 설명과의 차이가 계속 표시되도록 스마트 식별 단계가 결과에 삽입됩니다.

스마트 식별은 3위를 차지하고 있습니다. UFT학습된 설명과 시각적 관계 식별자(Visual Relation Identifier) ​​다음, 그리고 최후의 수단으로 사용되는 순서 식별자(ordinal identifier) ​​이전에 객체 식별 계층 구조에 위치합니다. 이 기능이 어디에 위치하는지 이해하면 기본 속성을 수정하는 대신 이 기능을 완전히 비활성화하는 것이 자주 실행되는 스크립트의 경우 장기적으로 최선의 선택이 아닌 이유를 알 수 있습니다.

기본 필터 속성과 선택적 필터 속성 비교

두 필터는 함께 작동하지만, 위에서 설명한 제거 과정에서 각각 다른 역할을 수행합니다. 아래 비교를 통해 각 필터가 언제 사용되는지, 그리고 각각의 제거 능력이 어느 정도인지 명확히 알 수 있습니다.

아래 기본 필터 속성 선택적 필터 속성
직위별 초기 후보자 목록을 작성하세요 후보 목록을 하나의 객체로 좁히세요
안정 객체의 정체성을 바꾸지 않고는 거의 변화가 없다. 객체의 정체성을 변경하지 않고도 주기적으로 변경될 수 있습니다.
일치 규칙 모든 후보자는 모든 기본 속성을 충족해야 합니다. 한 번에 하나의 속성만 확인했으며, 모든 후보를 제외하게 되는 속성은 건너뛰었습니다.
전형적인 예 HTML 태그, 객체 클래스, 인덱스 이름, HTML ID, 대체 텍스트, 이미지 소스
구성된 경우 객체 식별 > 구성 > 기본 필터 속성 객체 식별 > 구성 > 선택적 필터 속성

같은 속성이 두 목록에 모두 포함될 수 없으므로 분할 계획을 신중하게 세워야 합니다. 객체의 본질을 정의하는 속성은 기본 목록에, 유사한 객체와 구별하는 데 도움이 되는 속성은 선택적 목록에 포함시켜야 합니다.

스마트 식별 작동 방식: 단계별 프로세스

스마트 식별 기능은 학습된 설명과 모든 시각적 관계 식별자가 단일 객체를 식별하지 못한 경우에만 활성화됩니다. 일단 활성화되면, UFT 예측 가능한 4단계 제거 과정을 통해 작동합니다.

  1. 후보자 명단을 다시 작성하세요. UFT 학습된 설명을 무시하고 해당 객체의 부모 객체를 스캔하여 기본 필터 속성과 일치하는 모든 객체를 찾습니다.
  2. 첫 번째 선택적 속성을 적용합니다. UFT 선택적 필터 속성 목록의 첫 번째 속성과 일치하지 않는 모든 후보를 제거합니다.
  3. 결과를 평가하십시오. 후보자가 한 명 이상 남을 경우, UFT 다음 선택적 속성을 사용하여 이전 단계를 반복합니다. 필터가 나머지 모든 후보를 제거하는 경우, UFT 해당 속성을 건너뛰고 다음 속성으로 이동합니다.
  4. 한 경기만 시청하세요. UFT 필터링 및 평가 주기를 정확히 하나의 객체가 남을 때까지 또는 확인할 선택적 속성이 모두 소진될 때까지 반복합니다.

제거 과정을 통해 여전히 단일 대상을 분리해낼 수 없다면, UFT 객체를 식별하지 못하면 학습된 설명에 인덱스, 위치 또는 생성 시간과 같은 순서 식별자를 추가합니다. 이러한 조합으로도 객체를 식별할 수 없는 경우 실행 세션이 일시 중지되고 런타임 오류가 표시됩니다.

스마트 식별 기능을 활성화 또는 비활성화하는 방법

스마트 식별은 테스트 객체 클래스별로 구성됩니다. 도구 > 객체 식별환경과 객체 클래스를 선택하고 활성화하세요. 스마트 식별 활성화다음을 클릭합니다 구성 해당 클래스에 대한 기본 및 선택적 필터 속성을 선택할 수 있습니다. 동일한 대화 상자에서 학습된 설명을 항상 사용해야 하는 클래스의 경우 이 옵션을 끌 수도 있습니다.

스마트 식별 활성화/비활성화

스마트 식별 기능 작동 방식 (영상 설명)

아래 영상은 실제 사례를 통해 기본 및 선택적 필터 제거 과정을 안내합니다.

여기에서 확인하세요 비디오에 접근할 수 없는 경우

스마트 식별 사용의 장점과 단점

스마트 식별 기능은 복원력을 높여주지만, 그만큼 런타임 비용이 발생합니다. 전체 객체 저장소에서 기본적으로 스마트 식별 기능을 활성화하기 전에 이 두 가지 측면을 모두 고려해야 합니다.

  • ✅ 사소한 UI 변경에도 잘 견뎌냅니다: 속성 이름이 변경되거나 페이지에서의 위치가 이동되더라도 해당 객체를 사용하는 모든 스크립트가 더 이상 오류를 일으키지 않습니다.
  • ✅ 객체 저장소 유지 관리 부담 감소: 테스터들은 소규모 프런트엔드 릴리스 이후 객체를 다시 기록하는 데 소요하는 시간이 줄어듭니다.
  • ✅ 검색 결과에 계속 표시됩니다: 모든 호출 시 경고가 기록되므로 팀은 대체 기능이 실제로 얼마나 자주 필요한지 감사할 수 있습니다.
  • ⚠️ 테스트 실행 속도 저하: 후보 목록을 작성하고 필터링하는 데는 직접적인 부동산 매칭보다 훨씬 더 많은 시간이 소요되며, 대규모 단지의 경우 비용이 크게 증가합니다.
  • ⚠️ 실제 결함을 가릴 수 있습니다: 스마트 식별 기능이 유사한 객체를 조용히 찾아내면, 실제 UI 오류가 눈에 띄지 않게 발생할 수 있습니다.
  • ⚠️ 정기적인 검토가 필요합니다: 기본 및 선택적 필터 속성은 애플리케이션이 발전함에 따라 주기적인 검토가 필요합니다.

대부분의 팀은 탐색적이고 사용 빈도가 낮은 스크립트에 대해서는 스마트 식별 기능을 활성화한 상태로 유지하고, 객체의 식별 속성이 안정화되면 성능에 중요한 객체에 대해서만 선택적으로 비활성화합니다.

스마트 식별을 피하기 위해 객체 속성 수정

스마트 식별의 유연성은 위에서 설명한 런타임 비용을 수반하므로, 많은 팀에서는 반복적으로 대체 기능을 사용하는 대신 객체 식별 속성을 직접 수정하는 것을 선호합니다. 속성 수정이 런타임 대체 기능보다 나은 해결책임을 나타내는 두 가지 신호는 다음과 같습니다. 거의 매번 실행할 때마다 나타나는 스마트 식별 경고와 대체 기능이 실행되기 시작한 이후 스크립트 속도가 눈에 띄게 느려진 경우입니다. 이 두 가지 모두 일회성 UI 오류가 아니라 기본 식별 속성이 더 이상 애플리케이션에 적합하지 않은 객체를 나타냅니다. 아래 비디오는 실제 로그인 양식에서 수정 방법을 보여줍니다.

여기에서 확인하세요 비디오에 접근할 수 없는 경우

영상 대본: 핵심 요약

  • 스마트 식별 기능은 스크립트 실행 속도를 저하시키는데, 이는 대규모 또는 자주 실행되는 테스트 스위트에는 바람직하지 않습니다.
  • 이를 완전히 방지하려면 대체 기능을 사용하는 대신 기본 객체 식별 속성을 변경하십시오.
  • In 개체 식별필수 속성에서 "name"을 제거하고 "HTML id"로 대체하여 이름 변경에 관계없이 테스트가 작동하도록 합니다.
  • 필수 속성 목록이 업데이트되면 동일한 단계를 다시 기록하십시오.
  • 나중에 이름이 "제출"에서 "로그인"으로 변경되면 스마트 식별 기능을 작동시키지 않고 스크립트가 실행됩니다.
  • 마찬가지로, 테스트 대상 객체의 필수 속성이나 보조 속성이 자주 변경되는 경우, 스크립트 실행 속도를 유지하기 위해 더 안정적인 속성으로 교체하십시오.
  • 속성 조정은 경험을 통해 습득되는 기술이며, 도구를 더 많이 사용할수록 향상됩니다.

VBScript를 사용하여 스마트 식별 기능을 비활성화합니다.

객체 저장소를 건드리지 않고도 전체 실행 세션 동안 스마트 식별 기능을 끌 수 있습니다. 알고리즘을 사용하여 재생을 비활성화합니다. 실행 시간 설정입니다. 이 설정은 스크립트가 속성 불일치가 발생할 경우 조용히 제거 프로세스로 되돌아가는 대신 즉시 실패해야 할 때 유용합니다.

' Disable Smart Identification for this run session
Setting("DisableReplayUsingAlgorithm") = 1

Browser("Mercury Tours").Page("Find Flights").WebEdit("userName").Set "mercury"

' Re-enable Smart Identification once the strict steps are done
Setting("DisableReplayUsingAlgorithm") = 0

비활성화된 창의 길이는 최대한 짧게 유지해야 합니다. 해당 창 안에서 실행되는 단계는 학습된 설명과 정확히 일치해야 하므로, 테스트 대상 애플리케이션에 정상적인 변동이 발생하면 정상적인 대체 동작이 아닌 즉각적인 오류가 발생합니다.

리소스

위 튜토리얼에서 사용된 웹페이지를 다운로드하여 직접 연습해 보세요.

자주 묻는 질문

아니요. 스마트 식별은 대부분의 분야에 적용됩니다. UFT 하나의 환경, 다음을 포함합니다. Windows, Java웹뿐만 아니라 .NET 객체에서도 사용 가능합니다. 사용 가능 여부는 환경 유형이 아닌 추가 기능 및 테스트 객체 클래스에 따라 달라집니다.

후보 목록을 만들고 속성별로 필터링하는 데는 단일 학습된 설명 일치보다 시간이 더 오래 걸립니다. 대규모 객체 저장소에서는 추가 처리 시간이 누적되므로 많은 팀에서 성능에 중요한 객체에 대해서는 이 기능을 비활성화합니다.

예. 객체 저장소에서 해당 객체를 열고, 객체 속성 > 추가 세부 정보로 이동하여 해당 객체에 대해서만 스마트 식별 사용을 비활성화(False)로 설정하고, 저장소의 나머지 부분은 그대로 두십시오.

그들은 비슷한 문제를 다른 방식으로 해결합니다. 현대의 자가 복구 위치 추적기 AI 테스트 도구 변경된 요소를 자동으로 다시 학습하는 반면, 스마트 식별은 고정된 속성 목록을 필터링합니다. 많은 팀에서 이 두 가지 기능을 함께 사용합니다.

아니요. 스마트 식별 필터는 저장된 텍스트 속성을 필터링하는 반면, UFT One사의 최신 AI 기반 및 Insight 식별 기술은 객체를 시각적으로 인식합니다. 이 두 기술은 서로 보완적인 별도의 대체 계층으로 작동합니다.

이 게시물을 요약하면 다음과 같습니다.