만약, 그렇지 않으면, 만약에 존재하면 끝 QTP/UFT 예와 함께

⚡ 스마트 요약

IF Else End If 문 UFT QTP 스크립트는 런타임 조건에 따라 분기하며, Exist 속성은 분기가 실행되기 전에 객체가 화면에 나타나는지 여부를 확인합니다. 여기에는 ElseIf, 중첩 If 및 Select Case도 포함됩니다.

  • 🔀 기본 구문: If…Then 구문은 선택적인 Else 블록과 쌍을 이루고 End If로 끝나며, 평가할 때마다 정확히 하나의 분기를 실행합니다.
  • 🧮 여러 질환: ElseIf는 조건을 위에서 아래로 확인하고 첫 번째 True 일치에서 멈추므로, 여러 개의 개별 If 블록으로 이루어진 긴 연결 고리를 대체합니다.
  • 🪆 중첩 논리: If 문을 Then 또는 Else 문 안에 넣으면 종속적인 검사를 처리할 수 있습니다. 가독성을 위해 중첩은 두세 단계까지만 유지하는 것이 좋습니다.
  • 🎯 케이스를 선택하세요: 하나의 변수를 여러 고정 값과 비교하며, 긴 ElseIf 체인보다 가독성이 뛰어납니다.
  • 🔍 기존 속성: 객체가 화면에 있는지 여부를 True 또는 False로 반환합니다. 이는 If Else 분기문의 표준 조건입니다.
  • 🧪 적용 사례: If Else 문과 Exist 문을 결합하여 스크립트를 항공편 예약 로그인 경로(긍정 또는 부정)로 자동 라우팅할 수 있습니다.
  • 🤖 AI 지원: AI 도구는 디버깅 중에 If Else 및 Select Case 블록을 작성하고 누락된 End If 문을 표시할 수 있습니다.

IF Else 문이란 무엇인가요? UFT/QTP?

IF Else 문은 VBScript라는 스크립트 언어에서 가장 흔하게 사용되는 조건부 제어 구조입니다. UFT/QTP 자동화 스크립트에서 조건문은 실행 중에 스크립트가 결정을 내릴 수 있도록 합니다. 조건이 참이면 특정 조건문 블록이 실행되고, 거짓이면 다른 블록이 실행됩니다. 테스터는 로그인 성공 여부 또는 화면에 객체가 나타날지 여부에 따라 스크립트를 분기하는 등 이 구문을 자주 사용합니다. VBScript에서 지원하는 조건문 및 비교 연산자의 전체 목록은 [참조]를 참조하세요. VBScript 조건문 안내서.

기본 형식은 If…Then과 선택적인 Else 블록을 쌍으로 사용하며 항상 End If로 끝납니다. UFT/QTP 이 구문은 조건을 한 번만 평가합니다. 조건이 참이면 Then과 Else 사이의 문장만 실행되고, 거짓이면 Else와 End If 사이의 문장만 실행되며, 항상 하나의 분기만 실행됩니다. 아래 구문은 숫자 값을 검사하고 각 결과에 따라 다른 메시지 상자를 표시합니다.

Dim iValue
iValue = 25
If iValue > 18 Then
    MsgBox "Eligible"
Else
    MsgBox "Not Eligible"
End If

In UFT/QTP대부분의 스크립트는 산술 연산을 수행하는 대신 테스트 대상 애플리케이션의 유효성을 검증하기 때문에, 조건문은 일반적인 숫자보다는 객체 속성, 체크포인트 결과 또는 Exist 속성의 반환 값과 비교하는 경우가 거의 항상 있습니다. 이 페이지 아래의 모든 예제는 위에서 보여준 것과 동일한 If…Then…Else…End If 패턴을 기반으로 하며, 조건만 다릅니다. 어떤 조건을 사용하든, 스크립트를 회귀 테스트 스위트로 옮기기 전에 항상 참(True)과 거짓(False) 경로를 최소 한 번 이상 테스트해야 합니다.

만약…그렇다면…그렇지 않으면…그렇지 않으면 문장 UFT/QTP

일반적인 if-else 문은 항상 두 가지 결과 중 하나만 선택합니다. 스크립트에서 세 개 이상의 상호 배타적인 조건을 테스트해야 할 경우, VBScript는 동일한 블록에 ElseIf를 추가합니다. UFT/QTP 위에서 아래로 각 조건을 확인하고 조건이 참인 첫 번째 블록을 실행합니다. 나머지 블록(뒤에 오는 Else 블록 포함)은 모두 건너뜁니다. 이렇게 하면 서로 관련 없는 여러 개의 If 블록을 중첩하는 것보다 스크립트를 훨씬 더 읽기 쉽게 만들 수 있습니다.

  • 조건은 위에서 아래로 순차적으로 평가되며, 참인 첫 번째 조건에서 평가가 중단됩니다.
  • 각 ElseIf 키워드에는 자체 Then과 자체 조건이 필요합니다.
  • 마지막 Else 문은 선택 사항이며, 위의 조건 중 어느 것도 충족하지 않을 때만 실행됩니다.
  • 블록 안에 ElseIf 분기가 몇 개 있든, End If 하나만으로 전체 블록이 닫힙니다.
Dim iMarks
iMarks = 75
If iMarks >= 90 Then
    MsgBox "Grade A"
ElseIf iMarks >= 75 Then
    MsgBox "Grade B"
ElseIf iMarks >= 50 Then
    MsgBox "Grade C"
Else
    MsgBox "Fail"
End If

위 스크립트는 각 점수 범위별로 다른 등급을 출력하고, 한 분기가 참(True)으로 평가되는 순간 추가 조건 확인을 중지합니다. 이는 대규모 의사결정 트리가 장시간 자동화 실행 중에도 효율적으로 유지되도록 합니다.

이와 동일한 패턴이 UI 검사에도 직접 적용됩니다. 스크립트는 상태 필드의 값을 읽고 ElseIf를 사용하여 해당 텍스트에 따라 통과, 경고 또는 실패 처리로 라우팅할 수 있습니다. 이는 필드를 각각 독립적으로 재평가하는 세 개의 개별 If 블록을 사용하는 것보다 효율적입니다.

중첩 if 문 UFT/QTP

중첩된 If 블록은 하나의 완전한 If…End If 블록을 다른 If 블록의 Then 또는 Else 섹션 안에 배치합니다. UFT/QTP 먼저 바깥쪽 조건을 해결하고, 바깥쪽 분기가 실행될 때만 안쪽 조건문을 평가합니다. 이 패턴은 사용자가 투표할 수 있는 나이인지 확인한 후 성별에 따라 다시 분기하는 등 서로 의존적인 검사에 적합합니다. 모든 조건을 And와 Or를 사용하여 하나의 긴 표현식으로 결합하는 것보다 훨씬 효율적입니다. 중첩은 일반적으로 2~3단계를 넘지 않도록 깊게 유지하는 것이 좋습니다. 계층이 추가될수록 스크립트의 가독성이 떨어지기 때문입니다. trace와 디버그. UFT/QTP 일반적으로 중첩된 if 문은 먼저 운영 체제를 확인한 다음 브라우저 또는 애플리케이션 상태에 따라 다시 분기하므로 내부 블록은 외부 컨텍스트가 확인된 후에만 실행됩니다.

💡 팁: 중첩된 블록마다 한 단계씩 들여쓰기를 하고, 각 End If 문은 별도의 줄에 작성하세요. 일관된 들여쓰기는 스크립트 실행 중에 오류가 발생하기 전에 누락된 End If 문을 가장 빠르게 찾아낼 수 있는 방법입니다.

Dim iAge, sGender
iAge = 20
sGender = "Male"
If iAge >= 18 Then
    If sGender = "Male" Then
        MsgBox "Eligible male voter"
    Else
        MsgBox "Eligible female voter"
    End If
Else
    MsgBox "Not eligible to vote"
End If

케이스 문을 선택하세요 UFT/QTP

Select Case는 모든 분기에서 동일한 단일 변수를 서로 다른 고정 값과 비교하는 경우 긴 ElseIf 체인을 대체할 수 있는 방법입니다. UFT/QTP Select Case 줄의 표현식을 한 번 평가한 다음, 각 Case 값과 순서대로 비교하여 일치하는 첫 번째 블록을 실행합니다. 선택 사항인 Case Else는 나열된 Case 중 어느 것에도 해당하지 않는 값을 처리하며, If 블록의 마지막 Else와 유사합니다. 비교 변수는 한 번만 기록되므로, 긴 Select Case 블록은 모든 분기에서 동일한 변수 이름을 반복하는 ElseIf 문의 연속보다 나중에 업데이트하기가 더 쉽습니다.

대소문자를 구분하는 동일성 비교를 사용하므로, "Chrome"과 "chrome"은 서로 다른 일치 항목으로 간주됩니다. 단, LCase 함수 등을 사용하여 값을 먼저 정규화한 경우는 예외입니다. 자세한 내용은 다음을 참조하십시오. VBScript 변수 선언 Dim과 데이터 형식이 이러한 비교에 어떤 영향을 미치는지에 대한 안내입니다.

Dim sBrowserName
sBrowserName = "Chrome"
Select Case sBrowserName
    Case "Chrome"
        MsgBox "Launching Chrome"
    Case "Firefox"
        MsgBox "Launching Firefox"
    Case "Edge"
        MsgBox "Launching Edge"
    Case Else
        MsgBox "Browser not supported"
End Select
성명서 최고의 조건의 수 대규모 가독성
만약…그렇다면 두 가지 결과 1가지 조건 높음
만약…그렇다면 만약…그렇다면 서로 관련 없는 여러 질환 3개 이상의 조건 가지가 자라면서 물방울이 떨어집니다.
케이스 선택 하나의 변수에 대한 여러 고정값 임의의 숫자 높은 상태를 유지합니다

Case는 Is 키워드를 사용하여 범위를 일치시킬 수도 있습니다. 예를 들어 Select Case 블록 내에서 Case Is > 90과 같이 사용하면 각 값을 개별적으로 나열하는 대신 임계값보다 큰 모든 값을 하나의 Case로 처리할 수 있습니다.

스크립트에서 하나의 변수를 여러 가능한 값과 비교하는 경우에는 '대소문자 선택'을 선택하십시오. 서로 다른 변수를 비교하거나 범위 및 논리 연산자를 사용하는 조건에는 'If…ElseIf'를 사용하십시오.

IF Else 문을 Exist 속성과 함께 사용하는 방법 UFT

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

`Exist` 속성은 테스트 대상 애플리케이션에 객체가 현재 존재하는지 여부에 따라 True 또는 False를 반환하므로, `If Else` 문과 함께 사용하기에 적합합니다. 아래 예제는 고전적인 로그인 기능 시나리오를 다시 살펴봅니다. 항공편 예약 에서 신청 지원 이 시리즈에서는 스크립트가 오류 대화 상자가 나타나면 부정적인 시나리오 경로로, 나타나지 않으면 긍정적인 시나리오 경로로 분기해야 합니다. 이는 정확히 동일한 상황을 반영합니다. 테스트 시나리오 위 영상에서 다루고 있습니다.

  1. 유효한 에이전트 이름과 암호 조합으로 로그인하는 스크립트 하나와 유효하지 않은 조합으로 로그인하는 스크립트 하나, 이렇게 두 개의 스크립트를 별도로 기록하십시오.
  2. 로그인 단계 바로 다음에 if-else 단계를 삽입하여 두 녹화가 하나의 통합 스크립트 내에서 실행되도록 하세요.
  3. 오류 정보 창이 존재하는지 확인하는 조건을 설정하려면 다음을 사용하십시오. 있다 클릭 단계 대신 속성을 사용합니다.
  4. 오류 창과 로그인 대화 상자를 닫는 것과 같은 부정적인 시나리오 단계를 If 블록 안으로 옮기세요.
  5. 항공편 예약 창을 닫는 것과 같은 긍정적인 시나리오 단계를 Else 블록 안으로 옮기세요.
  6. 결합된 스크립트를 저장하고 유효한 자격 증명 세트와 유효하지 않은 자격 증명 세트 각각에 대해 실행하여 각 경로가 올바르게 실행되는지 확인합니다.
Dim bLoginFailed
bLoginFailed = Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Exist(5)

If bLoginFailed Then
    'Negative scenario - invalid login
    Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Close
    Dialog("Login").Close
Else
    'Positive scenario - valid login
    Window("Flight Reservation").Close
End If

VBScript는 if와 else 외에도 While…Wend를 지원합니다. 다음 루프를 위해… 반복을 위해, 그리고 위에서 설명한 ElseIf 및 Select Case 문을 사용하여 추가 분기를 만들 수 있습니다. 이러한 구문들을 Exist 속성과 결합하면 단일 객체로 여러 개의 객체를 생성할 수 있습니다. UFT/QTP 이 스크립트는 수동 개입 없이 긍정 및 부정 테스트 시나리오 모두를 처리합니다.

⚠ 참고: Exist(10)과 같이 Exist에 더 긴 값을 전달하면 다음과 같습니다. UFT False를 반환하기 전에 객체를 더 오래 기다리도록 설정할 수 있습니다. 이는 로딩 속도가 느린 대화 상자에 유용하지만 모든 단계에서 사용하면 전체 테스트 스위트의 속도를 저하시킬 수 있습니다. 실제로 로딩 속도가 느린 객체에만 긴 대기 시간을 적용하십시오. 짧고 적절하게 선택된 타임아웃 시간은 긍정 및 부정 시나리오를 결합한 스크립트를 연속 테스트 실행에서 안정적이고 빠르게 실행하는 데 도움이 됩니다.

자주 묻는 질문

ElseIf는 조건을 순차적으로 평가하고 첫 번째 일치 항목에서 멈추므로 여러 개의 독립적인 If 문보다 빠르고 명확합니다. 조건들이 서로 관련이 없고 모든 조건을 확인해야 하는 경우에만 별도의 If 문을 사용하십시오.

존재는 다음을 사용합니다. UFT 기본 동기화 시간 초과는 일반적으로 몇 초이지만, 느리게 로드되는 객체에 대해 더 오래 기다리도록 괄호 안에 Exist(10)과 같은 사용자 지정 값을 전달하면 예외가 발생합니다.

예. AI 비서는 테스트 로직에 대한 일반적인 설명으로부터 If, ElseIf 및 Select Case 블록을 작성할 수 있지만, 테스터는 스크립트를 실행하기 전에 객체 이름, 속성 및 타임아웃 값을 여전히 확인해야 합니다.

AI 도구는 스크립트를 스캔하여 일치하지 않는 End If 문과 도달할 수 없는 Else 블록을 표시하고 수정 사항을 제안할 수 있으므로 긴 스크립트를 수동으로 한 줄씩 검토하는 것보다 디버깅 속도를 높일 수 있습니다.

네. Case 문 안에 Is 키워드를 사용하면(예: Case Is > 90) 각 값을 개별적으로 나열하는 대신 임계값보다 큰 모든 값과 일치시킬 수 있습니다.

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