만약, 그렇지 않으면, 만약에 존재하면 끝 QTP/UFT 예와 함께
⚡ 스마트 요약
IF Else End If 문 UFT QTP 스크립트는 런타임 조건에 따라 분기하며, Exist 속성은 분기가 실행되기 전에 객체가 화면에 나타나는지 여부를 확인합니다. 여기에는 ElseIf, 중첩 If 및 Select Case도 포함됩니다.

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` 문과 함께 사용하기에 적합합니다. 아래 예제는 고전적인 로그인 기능 시나리오를 다시 살펴봅니다. 항공편 예약 에서 신청 지원 이 시리즈에서는 스크립트가 오류 대화 상자가 나타나면 부정적인 시나리오 경로로, 나타나지 않으면 긍정적인 시나리오 경로로 분기해야 합니다. 이는 정확히 동일한 상황을 반영합니다. 테스트 시나리오 위 영상에서 다루고 있습니다.
- 유효한 에이전트 이름과 암호 조합으로 로그인하는 스크립트 하나와 유효하지 않은 조합으로 로그인하는 스크립트 하나, 이렇게 두 개의 스크립트를 별도로 기록하십시오.
- 로그인 단계 바로 다음에 if-else 단계를 삽입하여 두 녹화가 하나의 통합 스크립트 내에서 실행되도록 하세요.
- 오류 정보 창이 존재하는지 확인하는 조건을 설정하려면 다음을 사용하십시오. 있다 클릭 단계 대신 속성을 사용합니다.
- 오류 창과 로그인 대화 상자를 닫는 것과 같은 부정적인 시나리오 단계를 If 블록 안으로 옮기세요.
- 항공편 예약 창을 닫는 것과 같은 긍정적인 시나리오 단계를 Else 블록 안으로 옮기세요.
- 결합된 스크립트를 저장하고 유효한 자격 증명 세트와 유효하지 않은 자격 증명 세트 각각에 대해 실행하여 각 경로가 올바르게 실행되는지 확인합니다.
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를 반환하기 전에 객체를 더 오래 기다리도록 설정할 수 있습니다. 이는 로딩 속도가 느린 대화 상자에 유용하지만 모든 단계에서 사용하면 전체 테스트 스위트의 속도를 저하시킬 수 있습니다. 실제로 로딩 속도가 느린 객체에만 긴 대기 시간을 적용하십시오. 짧고 적절하게 선택된 타임아웃 시간은 긍정 및 부정 시나리오를 결합한 스크립트를 연속 테스트 실행에서 안정적이고 빠르게 실행하는 데 도움이 됩니다.
