지난 번 Selenium 관련 글에서 두개의 웹 어플리케이션에서 진행되는 flow를 하나의 테스트 케이스로 만드는 방법을 살펴 봤습니다.
아래와 같이 Selenium WebDriver의 Suite xml 파일에 <test> 라는 태그를 사용해서 진행할 수 있는 방법을 정리해 뒀었습니다.
<suite name="suite 이름">
<listeners>
<listener class-name=".........." />
</listeners>
<!-- GLOBAL PARAMETERS -->
<parameter name="waitTime" value="40" />
<parameter name="thinkTime" value="2" />
<parameter name="app_url" value="웹 어플리케이션 URL" />
<parameter name="username" value="아이디" />
<parameter name="password" value="비밀번호" />
<test verbose="10" name="이름 1" annotations="JDK" preserve-order="true">
<classes>
<class name="실행할 클래스 1" />
<class name="실행할 클래스 2" />
<class name="실행할 클래스 3" />
</classes>
</test>
<test verbose="10" name="이름 2" annotations="JDK" preserve-order="true">
<parameter name="browser" value="ie" />
<parameter name="app_url1" value="웹 앱 URL 2" />
<parameter name="username" value="아이디"" />
<parameter name="password" value="비밀번호" />
<classes>
<class name="실행할 클래스 1" />
<class name="실행할 클래스 2" />
<class name="실행할 클래스 3" />
</classes>
</test>
</suite>
첫번째 <test> 에서 사용하는 것은 일반 유저가 사용하는 웹 어플리케이션 이고 두번째 <test> 에서 사용하는 웹 어플리케이션은 관리자가 사용하는 것일 수 있는데요.
이 때 유저가 입력한 정보가 관리자 모드에서 제대로 표현 되는 지 여부를 테스트 해야 될 때가 있습니다.
예를 들어 첫번째 <test> 의 '실행할 클래스 3' 에서 유저가 물건을 주문했고 그 주문 번호가 1111111 일 경우.
두번째 <test> 에서는 이 주문번호가 제대로 입력이 됐는지. 그리고 그 주문번호에 따른 정보들이 제대로 들어가 있는지를 테스트 해야 될 수 있습니다.
이럴 경우 유저가 입력한 정보를 관리자모드에서 확인하도록 하는 방법은 여러 방법이 있겠습니다.
DB를 사용해서 정보를 가져와서 웹 페이지의 정보를 비교할 수 있겠고. 아니면 유저가 정보를 입력할 때 text나 다른 physical 한 파일 형태로 저장하고 관리자 모드에서 그 파일 안의 정보를 가져와서 테스트를 할 수 도 있구요.
그런데 단지 주문 번호 하나만 테스트를 해야 되는데 이렇게 DB 연결이나 물리적인 파일형태로 데이터를 저장하고 가져오는 것은 너무 복잡한 해결방법이 될 겁니다.
이 경우에는 User 모드에서 변수를 public static으로 저장하고 관리자 모드에서 그 정보를 가져와서 사용할 수 있습니다. (이것은 Selenium Webdriver에 대한 정보라기 보다는 자바 기초 정보입니다.)
예를 들어 위 코드내의 첫번째 <text>에 있는 '실행할 클래스 3' 에 아래와 같이 선언된 변수가 있습니다.
public static String orderNumber = null;
public static String userName = null;
그리고 유저가 이 정보를 입력하는 테스트 케이스에서 아래와 같이 이 변수에 그 정보를 담습니다.
@Test(alwaysRun = true)
public void inputOrderNumber() {
orderNumber = InputForm.getOrderNumber();
userName = InputForm.getUsername();
}
이 정보를 두번째 <test> 의 '실행할 클래스 3'에서 가져와서 해당 관리자모드 웹 페이지에 표시된 정보와 비교롤 합니다.
public static String orderNumber = null;
public static String userName = null;
@Test(alwaysRun = true)
public void checkOrderNumber() {
orderNumber = inputForm.orderNumber; (inputForm 은 첫번째 <test>의 '실행할 클래스3' 의 클래스 명)
}
오늘은 자바 기초 문법을 하나 정리 했네요.
'TDD Project > Selenium Web Driver' 카테고리의 다른 글
Page Object Design Pattern (1) | 2014.08.01 |
---|---|
[Java] String split() Method 관련해서. - Selenium WebDriver - (0) | 2014.03.12 |
[Selenium] switchTo.window() 예제 살펴보기 (0) | 2014.02.14 |
[Selenium] Double Click and Execute JavaScript -Tip - (0) | 2014.02.13 |
[Selenium] 두개의 시나리오나 여러 브라우저 작업을 한개의 suite 로 처리하기 (1) | 2014.02.02 |
[Selenium] IE 브라우저 사용할 때 지켜야 할 점들 (2) | 2014.01.27 |
[Selenium] Select Option 관련 로직 정리 (0) | 2014.01.27 |
Selenium WebDriver 작업시 유용한 로직 - Pagination 등 (1) | 2013.12.16 |
Selenium WebDriver - Alert Control, Escape key (0) | 2013.12.06 |
Selenium Webdriver - iframe 사용하기 (2) | 2013.12.05 |