서수 식별자 QTP/UFT객체 식별 예시

⚡ 스마트 요약

서수 식별자 QTP/UFT 동점일 경우 승패를 가르는 기준이 됩니다. UFT 필수 속성과 보조 속성이 여전히 둘 이상의 객체와 일치하는 경우, 인덱스, 위치 또는 생성 시간 값을 사용하여 고유한 단일 객체를 선택합니다.

  • 🎯 최후의 조치: UFT 필수 속성과 보조 속성이 모두 설명을 고유하게 만드는 데 실패한 경우에만 서수 식별자를 추가합니다.
  • 🔢 색인: Numbers 소스 코드 순서대로 0부터 시작하여 같은 클래스의 객체를 찾습니다. 따라서 인덱스 3은 네 번째 일치 항목을 대상으로 합니다.
  • 📍 위치: Numbers 창, 프레임 또는 대화 상자 내부의 화면 위치에 따라 위에서 아래로, 왼쪽에서 오른쪽으로 개체를 정렬합니다.
  • 🕒 생성 시간: 브라우저 객체에만 적용되며 각 브라우저 인스턴스가 열린 순서를 기록합니다.
  • 🗂️ 개체 식별: 모든 테스트 객체 클래스의 기본 순서 유형은 도구 > 객체 식별에서 편집할 수 있습니다.
  • ⌨️ Descript라이브 프로그래밍: 객체 설명 문자열 내에서 인덱스, 위치 또는 생성 시간을 일반 속성으로 전달합니다.
  • ⚠️ 취약성: 페이지 레이아웃이 변경될 때마다 순서 값이 바뀌므로, 순서 값은 임시 해결책으로 간주해야 하며 디자인 선택 사항으로 여겨서는 안 됩니다.

서수 식별자 QTP/UFT 인덱스, 위치 및 생성 시간을 통해 설명됩니다.

서수 식별자란 무엇인가요? QTP/UFT?

An 서수 식별자 숫자 속성입니다 UFT (전에 QTP이 기능은 기록 세션 중에 캡처된 필수 속성과 보조 속성만으로는 객체를 고유하게 식별하기에 충분하지 않을 때 객체 설명에 추가 속성을 더합니다. 이 경우 도구는 실패하는 대신, "이 클래스의 세 번째 객체를 사용하세요"라고 말하는 것과 같은 카운터를 활용합니다.

기본적으로 모든 테스트 객체 클래스에는 순서 식별자 유형이 있습니다. WebEdit는 WinButton과 다른 번호로 지정되고, Browser는 또 다른 번호로 지정됩니다. 객체 식별 창에서 클래스의 기본 순서 식별자를 확인하거나 수정할 수 있습니다.

서수 식별자 설정 QTP/UFT 객체 식별 창

위 스크린샷에서 볼 수 있듯이, 서수 식별자 드롭다운 메뉴는 객체 식별 대화 상자의 맨 아래, 필수 및 보조 속성 목록 아래에 있습니다. 이러한 위치는 우연이 아닙니다. 이는 객체 식별 대화 상자의 순서를 반영한 ​​것입니다. UFT 실제로 세 그룹과 협의합니다.

서수 식별자에는 세 가지 유형이 있습니다. UFT:

  1. 인덱스 기반
  2. 위치 기반
  3. 생성 시간

UFT 서수 식별자는 최후의 수단으로만 사용합니다.

객체 식별 UFT 이 과정은 순차적으로 진행됩니다. 필수 속성이 먼저 학습되고, 일치하는 속성이 하나도 없으면 보조 속성이 하나씩 추가되어 설명이 고유해질 때까지 계속됩니다. 두 그룹의 속성이 모두 소진된 후에야 다음 단계가 진행됩니다. UFT 순서 식별자를 첨부하면 런타임 시 스마트 식별 메커니즘을 참조하여 순서 값을 신뢰합니다.

그 순위의 이유는 안정성 때문입니다. 필수 및 보조 속성은 다음과 같습니다. 객체는 이름, HTML 태그, 유형, 레이블로 구성됩니다. 서수 식별자는 객체에 대한 설명만 제공합니다. 어디에 그 물체는 녹화 당시 마침 그 자리에 있었습니다. 페이지가 바뀌면 번호도 바뀝니다.

  • 개발자가 자동화된 필드 위에 숨겨진 필드를 삽입합니다.
  • 홍보 배너는 헤더에 두 개의 추가 링크를 추가합니다.
  • 반응형 레이아웃은 폼을 두 열에서 한 열로 재배치합니다.
  • 팝업 브라우저가 녹화된 실행 당시보다 더 일찍 열립니다.

이러한 변경 사항들은 이름이나 ID를 기반으로 구축된 설명을 손상시키지는 않지만, 각각의 변경 사항은 페이지의 모든 인덱스와 위치 값을 조용히 변경합니다. 이것이 바로 숙련된 엔지니어들이 순서 식별자를 객체 설명에 수정이 필요하다는 신호로 간주하고, 완성된 해결책으로 여기지 않는 이유입니다. 동일한 원칙이 모든 경우에 적용됩니다. 자동화 테스트 일반적으로 프레임워크에는 위치 지정 전략이 포함됩니다. Selenium.

💡 팁: 서수 식별자를 사용하기 전에 Object Spy에서 해당 객체를 열고 안정적인 사용자 지정 속성이 있는지 확인하십시오. 해당 속성을 클래스의 보조 속성 목록에 추가하면 해당 유형의 모든 향후 객체에 서수를 지정할 필요가 없어지는 경우가 많습니다.

서수 식별자의 유형 UFT/QTP

인덱스 기반

  • 인덱스 기반 순서 식별자를 사용하는 경우, UFT 값을 할당합니다 색인 녹화 중 객체의 속성입니다.
  • 해당 값은 화면에 표시되는 순서가 아니라 소스 코드 내에서 객체가 나타나는 순서를 기준으로 합니다.
  • 첫 번째 발생 값은 0입니다.
  • 인덱스 속성 값은 객체별로 다르므로 각 테스트 객체 클래스는 별도로 계산됩니다.
  • 따라서 WebEdit 테스트 객체를 설명할 때 index:=3을 사용하면, UFT 페이지에서 네 번째 WebEdit 객체를 검색합니다.
  • 마찬가지로, WebButton 테스트 객체를 설명하기 위해 index:=1을 사용하는 경우에도 마찬가지입니다. UFT 페이지에서 두 번째 WebButton 객체를 찾습니다.

위치 기반

  • 위치 기반 서수 식별자가 사용되는 경우, UFT 값을 할당합니다 위치 객체를 고유하게 식별하는 객체의 속성.
  • 값은 동일한 속성을 가진 다른 개체와 관련하여 창, 프레임 또는 대화 상자 내에 개체가 나타나는 순서를 기반으로 합니다.
  • 객체의 첫 번째 발생은 0입니다.
  • 값은 위에서 아래로, 그리고 왼쪽에서 오른쪽으로 열별로 할당됩니다.
  • 위치는 대부분의 표준에서 기본 순서 식별자입니다. Windows 테스트 객체 클래스는 마크업 순서보다 시각적 레이아웃이 더 안정적입니다.

생성 시간

  • 생성 시간 순서 식별자가 사용되는 경우, UFT 값을 할당합니다 생성 시간 브라우저 객체의 속성입니다.
  • 이 식별자는 웹 환경에서만, 그리고 브라우저 테스트 객체에 대해서만 사용할 수 있습니다.
  • 이 값은 열려 있는 다른 브라우저들에 대한 상대적인 브라우저 열림 순서를 나타냅니다.
  • 실행 중에 처음 열리는 브라우저는 creationtime:=0을 받고, 그 뒤를 잇는 브라우저들은 1, 2, 3 등을 받습니다.
  • 브라우저가 닫히면 나머지 브라우저는 번호가 다시 매겨지지 않고 원래 값을 유지합니다.

인덱스, 위치, 생성 시간 비교표

세 가지 식별자는 각각 다른 세 가지 질문에 대한 답을 제공하며, 잘못된 식별자를 선택하는 것이 간헐적인 오류의 주요 원인입니다.

아래 색인 오시는 길 생성시간
속성 이름 색인 위치 생성 시간
주문 기준 소스 코드/객체 계층 구조의 순서 창, 프레임 또는 대화 상자 내의 화면 위치 브라우저 인스턴스가 열린 순서
계산 규칙 테스트 객체 클래스별로 순차적으로 진행됩니다. 세로 열은 위에서 아래로, 그 다음 왼쪽에서 오른쪽으로 나열됩니다. 브라우저 인스턴스별로 순차적으로 처리됩니다.
첫 번째 값 0 0 0
적용 대상 웹 및 Windows 수업 주로 표준 Windows 수업 브라우저 객체만 해당
고장 시 마크업 순서 변경 레이아웃의 위치가 변경되거나 크기가 조정되었습니다. Windows 다른 순서로 열기
최고의 용도 반복되는 그리드 또는 테이블 컨트롤 고정 레이아웃을 사용하는 기존 데스크톱 양식 결제 팝업과 같은 다중 창 웹 흐름

객체 저장소에서 서수 식별자를 설정하는 방법

순서 식별자는 테스트 객체 클래스별로 구성되며, 해당 클래스의 모든 객체에 자동으로 적용됩니다. UFT 나중에 학습합니다. 저장소에 이미 있는 기존 객체는 소급하여 업데이트되지 않습니다.

  1. 엽니다 UFT 선택 도구 > 객체 식별.
  2. 웹 또는 표준과 같은 환경을 선택하세요. Windows환경 드롭다운 메뉴에서 선택하세요.
  3. WebEdit 또는 WinButton과 같이 변경하려는 테스트 객체 클래스를 선택하십시오.
  4. . 서수 식별자 해당 섹션에서 인덱스, 위치, 생성 시간 또는 없음 중에서 선택하십시오.
  5. OK 그리고 새로운 순서값을 캡처할 수 있도록 객체를 다시 학습합니다.
  6. 객체 저장소를 열고 해당 객체를 선택한 다음, 순서 속성이 설명 목록에 나타나는지 확인합니다.

선택 없음 해당 클래스에 대한 대체 기능을 완전히 비활성화합니다. UFT 그러면 추측이 아닌 식별 오류를 발생시키게 되는데, 이는 조용한 오식별이 깔끔한 실패보다 더 큰 피해를 줄 수 있는 테스트 스위트에서 원하는 동작인 경우가 많습니다. 기대치를 잘 작성된 문서에 기록해 두세요. 테스트 사례 그러한 상충 관계를 팀 전체에 명확히 보여줍니다.

⚠️ 경고: 클래스의 순서 식별자를 변경하는 것은 테스트 레벨 설정이 아니라 시스템 레벨 설정입니다. 해당 설정이 내보내지고 공유되지 않으면, 사용자의 컴퓨터에서는 통과하는 스크립트가 동료의 컴퓨터나 빌드 에이전트에서는 실패할 수 있습니다.

서수 식별자를 사용하는 방법 Descript라이브 프로그래밍

기술 기반 프로그래밍에서는 객체 식별 대화 상자가 없습니다. 서수는 다른 속성 이름과 마찬가지로 설명 문자열에 직접 기록되며 항상 0부터 시작합니다.

' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page
Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank")

objPage.WebEdit("index:=3").Set "9999999999"
Print "Filled WebEdit occurrence #" & (3 + 1)

' Location is counted top to bottom, then left to right
objPage.WebButton("location:=1").Click
Print "Clicked WebButton occurrence #" & (1 + 1)

' CreationTime works only on Browser objects
Print "Switching to browser opened at position #" & (1 + 1)
Browser("creationtime:=1").Sync

출력:

Filled WebEdit occurrence #4
Clicked WebButton occurrence #2
Switching to browser opened at position #2

더 안전한 방법은 실물 자산과 결합하는 것입니다. ChildObjects 따라서 서수는 사용 전에 유효성 검사를 거칩니다. 아래 예시는 일치하는 WebEdit 객체가 5개 있고 인덱스가 9인 페이지를 가정합니다.

Dim oDesc, oChildren, intIndex

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebEdit"
oDesc("html tag").Value = "INPUT"

Set oChildren = objPage.ChildObjects(oDesc)
intIndex = 9

If intIndex < oChildren.Count Then
    oChildren(intIndex).Set "Guru99"
Else
    Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match"
End If

출력:

Index 9 is out of range; only 5 objects match

이 가드는 "객체를 식별할 수 없습니다"라는 도움이 되지 않는 런타임 오류를 읽기 쉬운 메시지로 변환해 줍니다. 이는 결함 보고 시 결과를 발표할 때 중요한 요소입니다. trac케르 또는 에게 HP ALM과 통합됨 UFT.

서수 식별자를 사용할 때 흔히 저지르는 실수

대부분의 서수 관련 결함 trac다시 몇 가지 반복되는 오류로 돌아가 보겠습니다.

  • 1부터 세어 봅시다. 모든 순서 식별자는 0부터 시작합니다. 첫 번째 필드에 index:=1을 쓰는 것은 가장 흔한 실수이며, 이로 인해 타이밍 문제처럼 보이는 오프셋 오류가 발생합니다.
  • 인덱스와 위치를 혼동하고 있습니다. 인덱스는 소스 코드 뒤에 오고, 위치는 화면 뒤에 옵니다. CSS로 요소의 순서가 바뀌는 페이지에서는 두 값이 서로 달라지고, 서로 바뀝니다.ping 그들은 조용히 잘못된 제어 장치를 목표로 삼습니다.
  • 웹 환경 외부에서 CreationTime을 사용하는 방법. 이 속성은 브라우저 객체에만 존재합니다. 페이지, 프레임 또는 창 객체에 적용하면 지원되지 않는 속성이라는 오류가 발생합니다.
  • 공유 함수에 서수를 하드코딩하는 것. 인덱스가 2라고 가정하는 재사용 가능한 함수는 레이아웃이 다른 두 번째 화면에서 호출되는 순간 더 이상 사용할 수 없게 됩니다.
  • 애플리케이션이 안정화된 후 저장소에 서수 값을 남겨둡니다. 개발자가 안정적인 ID를 추가하면 해당 객체를 다시 살펴보고 순서를 새 속성으로 바꿉니다.
  • 그리드에 대한 루프 내에서 서수에 의존합니다. 취하다 ChildObjects이는 실시간 컬렉션을 반환하므로, 카운트는 기록된 페이지가 아닌 현재 페이지를 반영합니다.

리소스

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

순서 식별자는 객체 식별 모델의 작은 부분일 뿐입니다. 순서 식별자가 더 넓은 워크플로에 어떻게 통합되는지 알아보려면 전체 내용을 계속 읽어보세요. QTP/UFT 훈련 시리즈기본 사항을 복습하세요 소프트웨어 테스팅결과가 어떻게 관리되는지 알아보세요. HP ALM 튜토리얼그리고 위치 추적 전략을 다음과 비교합니다. Selenium 지도 시간.

자주 묻는 질문

기본값은 클래스별로 다릅니다. WebEdit 및 WebButton과 같은 대부분의 웹 테스트 객체는 기본값이 Index이고, 브라우저 객체는 기본값이 CreationTime이며, 그 외의 객체는 Standard입니다. Windows 클래스의 기본값은 위치입니다. 각 기본값은 객체 식별 창에서 확인하고 편집할 수 있습니다.

스마트 식별 기능이 먼저 실행됩니다. UFT 학습된 설명을 먼저 시도하고, 해당 클래스에 스마트 식별 기능이 활성화되어 있으면 스마트 식별을 시도하며, 두 가지 방법 모두 일치하는 객체를 찾지 못할 경우에만 서수 식별자를 사용합니다.

예. 개체 식별 창에서 해당 클래스의 서수 식별자 드롭다운 메뉴를 '없음'으로 설정하십시오. UFT 그러면 추측하는 대신 식별 오류를 보고하므로, 잘못된 개체를 클릭했을 때 테스트 데이터가 손상될 수 있는 환경에서 더 안전합니다.

약간. UFT 요청된 위치를 계산하기 전에 해당 클래스의 모든 객체를 열거해야 하므로, 유사한 컨트롤이 수백 개 있는 페이지는 고유한 이름이나 ID를 기반으로 하는 설명보다 해결하는 데 시간이 더 오래 걸립니다.

예. 현재 AI 기반 식별이 사용되고 있습니다. UFT 이번 릴리스에서는 마크업 위치가 아닌 시각적 모양과 레이블 텍스트를 기준으로 컨트롤을 일치시키므로 주변 인덱스 값이 변경되더라도 필드의 모양을 통해 필드를 찾을 수 있습니다.

AI 어시스턴트는 저장소 내보내기 파일을 스캔하여 인덱스, 위치 또는 생성 시간을 포함하는 모든 설명을 표시하고 캡처된 HTML 속성을 기반으로 대체 값을 제안할 수 있습니다. 하지만 최종 적용 전에는 사람이 실제 애플리케이션에서 각 제안을 검증해야 합니다.

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

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