목표:
Eclipse TPTP(Test and Performance Tools Platform)를 사용하여
예제 테스트 응용프로그램에서 데이터풀을 작성하고 액세스합니다.
필요한 시간
1시간
이 학습을 시작하기
전에 다음을 수행해야 합니다.
-
Eclipse와 Eclipse TPTP(Test and
Performance Tools Platform)를 설치하십시오.
- JUnit 테스트에 대한 기본 정보를 습득하십시오. JUnit 테스트에 대한 자세한 정보는 www.junit.org를 참조하십시오.
- 현재 TPTP 버전에 맞는 Agent Controller를 구성하고 실행하십시오. 자세한 정보는
Agent Controller 시작하기를 참조하십시오.
설명
이 학습에서는 MyShoppingCart 응용프로그램을 작성하고
테스트합니다. Eclipse TPTP(Test and Performance Tools Platform)를 사용하면 JUnit 테스트를 개발하고, 테스트 환경에 데이터를 제공하는 데이터풀을 작성할 수 있습니다.
이 학습에서는 다음 프로시저를 안내합니다.
- 샘플 사용자 응용프로그램 작성
- TPTP
테스트 스위트 설정
- 데이터풀
작성 및 테스트 데이터 초기화
- 데이터풀을
참조할 테스트 케이스 수정
이 프로시저에서는 MyShoppingCart 클래스를 개발하고 다음 프로시저에서는 Eclipse TPTP(Test and Performance Tools Platform)를 사용하여 해당 테스트 환경을 개발합니다.
- 새 Eclipse Java 프로젝트를 작성하십시오.
- 파일 메뉴에서 파일 > 새로 작성 > 프로젝트...를
선택하십시오. 새 프로젝트 대화 상자가 나타납니다.
- 마법사 목록에서 Java 프로젝트를 선택하고 다음을
클릭하십시오. Java 프로젝트 작성 페이지가 나타납니다.
- 프로젝트 이름에 datapoolExample을 입력하고 완료를
클릭하십시오. 네비게이터 보기에 datapoolExample 프로젝트가 나타납니다.
- MyShoppingCart 클래스를 작성하십시오.
- 네비게이터 보기에서 datapoolExample 프로젝트를 마우스 오른쪽
단추로 클릭하고 새로 작성 > 클래스를 선택하십시오. 새
Java 클래스 대화 상자가 나타납니다.
- 이름 필드에 MyShoppingCart를 입력하십시오.
- Main 메소드 public static void
main(String[] args)를 작성하는 옵션을 지우십시오.
- 완료를 클릭하십시오. Java 편집기에
MyShoppingCart.java 파일이 나타납니다.
- MyShoppingCart 소스에 다음을 입력하십시오.
import java.util.*;
public class MyShoppingCart {
public Hashtable myFlowers;
public MyShoppingCart() {
myFlowers = new Hashtable();
myFlowers.put("Orchid", new Double(5.99));
myFlowers.put("Tulip", new Double(1.99));
myFlowers.put("White Poinsee", new Double(6.99));
myFlowers.put("White Rose", new Double(9.99));
myFlowers.put("Geraniums", new Double(4.99));
}
public double itemCost(String itemName, int itemQuantity)
{
Double price = (Double)myFlowers.get(itemName);
if (price != null) {
return price.doubleValue()*itemQuantity;
}
return -1;
}
}
- MyShoppingCart.java를 저장하십시오. 파일 메뉴에서 파일 >
저장을 선택하십시오.
이 프로시저에서는 MyShoppingCart 클래스의 테스트 스위트를 개발합니다. Eclipse TPTP(Test
and Performance Tools Platform)를 사용하여 itemCost 메소드의 JUnit 테스트를 개발합니다.
- 테스트 Perspective를 여십시오.
- 파일 메뉴에서 창 > Perspective 열기 >
기타를 선택하십시오.
- 테스트를 선택하고 확인을 클릭하십시오. 테스트
네비게이터가 나타납니다.
- 새 TPTP JUnit 테스트를 작성하십시오.
- 테스트 네비게이터에서 datapoolExample 프로젝트를 마우스 오른쪽 단추로 클릭하고 새로 작성
> 요소 테스트...를 선택하십시오.
- 요소 테스트 대화 상자에서 TPTP JUnit 테스트를 선택하고 다음을 클릭하십시오. 새 테스트 케이스 대화 상자가 나타나며 JUnit 라이브러리를 추가하도록 프롬프트합니다. JUnit 라이브러리를 추가하려면 예를 클릭하십시오.
- 새 JUnit 테스트 소스 코드 페이지의 이름 필드에 shoppingCartTest_src를 입력하십시오. 테스트 동작 편집 방법 선택 섹션에서 테스트
편집기에서 편집 옵션(기본값)을 선택하십시오.
- 완료를 클릭하십시오. TPTP JUnit 테스트 편집기가 나타나며
shoppingCartTest_src 테스트 스위트가 표시됩니다. 개요 탭에는 테스트 설명, 소스 정보 및 테스트 메소드 목록이 포함됩니다. 현재 정의된 테스트 메소드가 없습니다. 이
학습의 경우, TPTP JUnit 테스트 편집기는 메소드 스텁을 생성하므로 소스 정보 섹션의 테스트 동작을 코드로 구현 옵션은 지워져야 합니다. 자세한 정보는
JUnit 테스트 스위트 편집기를 참조하십시오.
- testItemCost 및 testShoppingCartConstructor 메소드를 추가하십시오.
- 테스트 메소드 탭에서 추가를 클릭하십시오. 테스트의 기본 이름이 나타납니다.
- testItemCost 메소드를 추가하십시오. 이름 필드에 새 테스트 이름의 testItemCost를 입력하십시오. 설명 필드에 Test
for the MyShoppingCart.itemCost(String, int) method를 입력하십시오.
- testShoppingCartConstructor 메소드를 추가하십시오. 테스트 메소드 탭에서 추가를 클릭하십시오. 이름 필드에 새 테스트 이름의 testShoppingCartConstructor를 입력하십시오. 설명
필드에 Test for the MyShoppingCart constructor를 입력하십시오.
- 테스트 실행 동작을 구성하십시오.
- 테스트 실행 루프를 추가하십시오. 동작 탭에서 추가..
> 루프를 클릭하십시오. 이름 필드에 Loop_MyShoppingCart를 입력하십시오. 반복
횟수 필드에 1(기본값)을 입력하십시오.
- testShoppingCartConstructor 호출을 추가하십시오.
Loop_MyShoppingCart를 선택하고 추가... > 호출을 클릭하십시오. 테스트
호출 대화 상자가 나타납니다. testShoppingCartConstructor를
선택하고 확인을 클릭하십시오.
- testItemCost 호출을 추가하십시오.
Loop_MyShoppingCart를 선택하고 추가... > 호출을 클릭하십시오. 테스트
호출 대화 상자가 나타납니다. testItemCost를 선택하고 확인을 클릭하십시오.
- 테스트 스위트를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.
참고: 저장 명령을 실행하면 TPTP JUnit 테스트 편집기가
shoppingCartTest_src.java에 테스트 메소드 스텁을 작성합니다.
-
생성된 JUnit 테스트 메소드 testShoppingCartConstructor 및 testItemCost의 코드를 입력하십시오.
- Java Perspective를 여십시오. 파일 메뉴에서 창
> Perspective 열기 > 기타... > Java를 선택하십시오.
- shoppingCartTest_src.java를 여십시오. 네비게이터에서
datapoolExample 프로젝트 폴더를 열고 shoppingCartTest_src.java를
두 번 클릭하십시오. 테스트 스위트를 설정하고 실행하는 코드와 testShoppingCartConstructor 및 testItemCost의 스텁 메소드와 함께 shoppingCartTest_src.java 컨텐츠가 Java 편집기에 나타납니다.
- testShoppingCartConstructor 메소드에 대한 다음 코드를 입력하십시오.
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
Double priceOrchid = (Double)cart.myFlowers.get("Orchid");
Double priceTulip = (Double)cart.myFlowers.get("Tulip");
assertTrue(priceOrchid.doubleValue() == 5.99);
assertTrue(priceTulip.doubleValue() == 1.99);
}
- testItemCost 메소드에 대한 다음 코드를 입력하십시오.
public void testItemCost()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
double priceForTwo = cart.itemCost("Orchid", 2);
assertTrue(priceForTwo == 11.98);
}
- shoppingCartTest_src.java를 저장하십시오. 파일 메뉴에서 파일
> 저장을 선택하십시오.
- 테스트 Perspective를 열고 테스트 배치를 작성하십시오. 예를 들어, 테스트
배치 작성을 참조하십시오.
-
사용자 정의 배치를 사용하여 테스트를 실행하십시오.
- 테스트 네비게이터에서 shoppingCartTest_src 테스트 스위트를 마우스 오른쪽 단추로 클릭하고 실행
도구 > 실행...을 선택하십시오. 실행 구성 대화 상자가 나타납니다.
- 구성 분할창에서 테스트를 선택한 후 새로 작성을 클릭하십시오.
- 실행 구성의 왼쪽 분할창에서(실행할 테스트 선택) datapoolExample을 펼치고 shoppingCartTest_src 테스트 스위트를 선택하십시오.
- 실행 구성의 오른쪽 분할창에서 섹션을 작성한 배치를 선택하십시오.
- 테스트 로그 탭에서 기본값 사용 옵션을 지우고
위치에 대한 datapoolExample 프로젝트 폴더를 선택하십시오.
- 실행을 클릭하여 테스트를 실행하십시오.
- 테스트 네비게이터에 나타나는 shoppingCartTest_src 테스트 로그를 두 번 클릭하십시오. shoppingCartTest_src 테스트 로그가 나타납니다. 테스트 세부사항을 보려면 이벤트 탭을 선택하십시오. 테스트 스위트 시작, Loop_MyShoppingCart 시작, 테스트 시작, 테스트 판정, 테스트 중지, 두 번째 테스트 시작, 두 번째 테스트 판정, 두 번째 테스트 중지, 루프 중지, 테스트 스위트 판정 및 테스트 스위트 중지와 같은 이벤트가 표시되어야 합니다.

이 프로시저에서는 테스트 데이터를 저장할 단순 데이터풀을 작성합니다. 데이터풀
편집기를 사용하여 변수(열), 레코드(행) 및 등가 클래스(관련
레코드 그룹)와 같은 데이터풀의 구조 요소를 정의합니다.
- 테스트 데이터를 포함하여 CSV(쉼표로 분리) 파일을 작성하십시오. 일반적으로 스프레드시트 응용프로그램 또는 데이터베이스의 데이터를 CSV 형식으로 내보낼 수 있습니다. 그러나 이 학습에서는 텍스트 편집기에 데이터를 입력합니다.
- 텍스트 편집기에서 다음을 입력하십시오.
,ModelNumber::String,Description::String,Price::Double
flowers,F0001,Orchid,5.99
flowers,F0002,Tulip,1.99
flowers,F0003,White Poinsee,6.99
flowers,F0004,White Rose,9.99
flowers,F0005,Geraniums,4.99
- 임시 외부 위치에 파일을 flowerData.csv로 저장하십시오.
- Eclipse에서 테스트 Perspective를 여십시오.
- 파일 메뉴에서 창 > Perspective 열기 >
기타를 선택하십시오.
- 테스트를 선택하고 확인을 클릭하십시오. 테스트
네비게이터가 나타납니다.
- 테스트 네비게이터에서 프로젝트를 마우스 오른쪽
단추로 클릭하고 새로 작성 > 테스트 요소...를
선택하십시오. 새 테스트 요소 대화 상자가 나타납니다.
- 마법사 목록 상자에서 테스트 자산
폴더를 펼치고 데이터풀을 선택하십시오.
- 다음을 클릭하십시오. 새 데이터풀
대화 상자가 나타납니다.
- 데이터풀 프로젝트 폴더 및 데이터풀 이름을 선택하십시오. 기존 프로젝트 목록에서 datapoolExample
프로젝트를 선택하십시오. 이름
필드에 shoppingCartDatapool을 입력하십시오. 계속하려면 다음을
클릭하고 CSV(쉼표로 분리) 파일 가져오기 페이지를 열려면 다음을 다시 클릭하십시오.
- CSV 파일
flowerData.csv를 가져오십시오.
- CSV 파일 필드에서 찾아보기를
클릭하여 flowerData.csv를 탐색하십시오.
- 첫 번째 행에 변수 이름 및 제안 유형
포함 옵션을 선택하십시오. flowerData.csv의 첫 번째 행에는 열 표제와 유형이 포함됩니다.
- 첫 번째 열에 등가 클래스 이름
포함 옵션을 선택하십시오. 등가 클래스는 관련 데이터의 그룹입니다. flowerData.csv의 첫 번째 열은 flowers라는 단일 등가 클래스를 지정합니다.
- 완료를 클릭하십시오. 초기 데이터풀 크기를 지정한 경우, 대화 상자가 나타납니다. 이 크기는 CSV 파일 크기와 충돌할 수 있습니다. CSV 파일의 크기를 사용하려면 예를 클릭하십시오. 지정된 초기 크기를 사용하려면(CSV 파일 데이터를 자를 수 있음) 아니오를 클릭하십시오.
flowers 등가 클래스에 포함된 데이터를 표시하는 데이터풀 편집기가 나타납니다.
데이터풀 작성에 대한 자세한 정보는 데이터풀 작성을 참조하십시오.
이 프로시저에서는 데이터풀
API를 사용하여 하드코딩된 테스트
값을 데이터풀 열에 대한 참조로 바꿉니다.
데이터풀 API에서 필요한 라이브러리 추가
데이터풀 API에는 다양한 TPTP 및 EMF(Eclipse Modeling Framework) 라이브러리가 필요합니다. 이 프로시저에서는 이러한 라이브러리를 Java 빌드 경로에 추가합니다.
- Java Perspective를 여십시오. 파일 메뉴에서
창 > Perspective 열기 > Java를 선택하십시오.
- datapoolExample 프로젝트 특성을 여십시오. 네비게이터 또는 패키지 탐색기 창에서 datapoolExample 프로젝트 폴더를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. datapoolExample 특성 대화 상자가 나타납니다.
- tptp-models.jar을 Java 빌드 경로에 추가하십시오.
-
왼쪽 분할창에서 Java 빌드 경로를 선택하십시오.
- 오른쪽 분할창에서 라이브러리 탭을 선택하고 변수
추가...를 클릭하십시오. 새 변수 클래스 경로 입력 대화 상자가 나타납니다.
- ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오. 변수 확장 대화 상자가 나타납니다. plugins
> org.eclipse.tptp.platform.models_Version 폴더를 열고
tptp-models.jar을 선택하십시오. 여기서, Version은 TPTP 버전 번호입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- org.eclipse.emf.common_Version.jar을 Java 빌드 경로에 추가하십시오. 여기서, Version은 EMF 버전입니다.
-
새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오.
- 플러그인 폴더를 열고
org.eclipse.emf.common_Version.jar을 선택하십시오. 여기서, Version은 EMF 버전입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- org.eclipse.emf.ecore_Version.jar을 Java 빌드 경로에 추가하십시오. 여기서, Version은 EMF 버전입니다.
- 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME
변수를 선택하고 확장...을 클릭하십시오.
- 플러그인 폴더를 열고 org.eclipse.emf.ecore_Version.jar을 선택하십시오. 여기서, Version은 EMF 버전입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- org.eclipse.core.runtime_Version.jar을 Java 빌드 경로에 추가하십시오. 여기서, Version은 Eclipse 플랫폼 버전입니다.
- 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME
변수를 선택하고 확장...을 클릭하십시오.
- 플러그인 폴더를 열고 org.eclipse.core.runtime_Version.jar을
선택하십시오. 여기서, Version은 Eclipse 플랫폼 버전입니다.
- 확인을 클릭하여 라이브러리를 추가하십시오.
- 확인을 클릭하여 특성 대화 상자를 닫으십시오.
데이터풀 API 사용
이 프로시저에서는
shoppingCartDatapool을
활용하도록 shoppingCartTest_src 클래스 및 testShoppingCartConstructor 메소드를 수정합니다.
- 필요한 경우 Java Perspective를 여십시오. 파일 메뉴에서
창 > Perspective 열기 > Java를 선택하십시오.
- shoppingCartTest_src.java를 여십시오. 네비게이터에서
datapoolExample 프로젝트 폴더를 열고 shoppingCartTest_src.java를
두 번 클릭하십시오. shoppingCartTest_src.java
컨텐츠가 Java 편집기에 나타납니다.
- shoppingCartTest_src 클래스에 다음 import 문을 추가하십시오.
import org.eclipse.hyades.models.common.datapool.impl.*;
import org.eclipse.hyades.execution.runtime.datapool.*;
- IDatapoolIterator 클래스 인스턴스를 선언하십시오. 이 클래스 인스턴스는 설정 코드에서 초기화되어 테스트 메소드에서 사용됩니다.
public class shoppingCartTest_src extends HyadesTestCase {
IDatapoolIterator dpIterator;
//...
- setUp 메소드를 수정하여 데이터풀을 초기화하십시오. TPTP JUnit 테스트 환경의 경우 setUp 메소드는 공통 고정 기능을 제공합니다. setUp 메소드를 사용하면 공통 테스트 변수를 초기화할 수 있습니다. 참고: java.io.File 생성자의 <workspace>에 완전한 작업공간 경로를 지정하십시오.
protected void setUp() throws Exception {
// Initialize the datapool factory
IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
// Load the shoppingCartDatapool datapool
IDatapool datapool = dpFactory.load(
new java.io.File("<workspace>\\datapoolExample\\shoppingCartDatapool.datapool"),
false);
// Create an iterator to traverse the datapool
dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate");
// Initialize the datapool to traverse the first equivalence class.
dpIterator.dpInitialize(datapool,0);
}
참고:
- IDatapoolFactory 로드 메소드의 두 번째 매개변수는 데이터풀 인스턴스를 공유하는지 여부를 나타냅니다. true인 경우 데이터풀 캐시에서 데이터풀의 기존 사본을 확인합니다. false인 경우 데이터풀은 개인용 인스턴스입니다. 공유 데이터풀 인스턴스를 수정하면 다른 사용자에게 영향을 줄 수 있으므로 제한된 환경에만 권장됩니다.
- 데이터풀을 프로그램적으로 편집하려면 org.eclipse.hyades.edit.datapool을 가져오십시오.
- IDatapoolFactory open 메소드의 두 번째 매개변수는 반복기 유형을 나타냅니다. 공유 데이터풀에는 DatapoolIteratorSequentialPrivate를 사용하십시오.
- testShoppingCartConstructor 메소드를 수정하여
shoppingCartDatapool을 활용하십시오.
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
// Traverse through datapool...
// Test if constructor initializes each flower record appropriately
while(!dpIterator.dpDone())
{
String Description = dpIterator.dpCurrent().getCell("Description").getStringValue();
double datapoolPrice = dpIterator.dpCurrent().getCell("Price").getDoubleValue();
// Test if the flower is accounted for in the application
Double applicationPrice;
assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description));
// Test that the application price equals the price in the datapool
assertTrue(applicationPrice.doubleValue() == datapoolPrice);
dpIterator.dpNext();
}
}
- shoppingCartTest_src.java를 저장하십시오. 파일 메뉴에서 파일
> 저장을 선택하십시오.
- testArtifact에 데이터풀을 추가하십시오.
- 테스트 Perspective를 여십시오. 테스트 네비게이터에서 testDeployment를 두 번 클릭하여 편집기에서 여십시오.
- 쌍 탭에서 testAsset을 선택하고 열기...를 클릭하십시오.
- 테스트 자산 탭에서 추가...를 클릭하십시오. 데이터풀을 선택하고 확인을 클릭하십시오. 자산을 저장하십시오.
- 사용자 정의 배치를 사용하여 테스트를 실행하십시오.
- 테스트 Perspective를 여십시오. 테스트 네비게이터에서 shoppingCartTest_src 테스트 스위트를 마우스 오른쪽 단추로 클릭하고 실행
도구 > 실행...을 선택하십시오. 실행 구성 대화 상자가 나타납니다.
- 실행 구성의 왼쪽 분할창에서 shoppingCartTest_src 테스트 스위트를 선택하십시오.
- 실행 구성의 오른쪽 분할창에서, 시작하기 전에 섹션에서 작성한 배치를 선택하십시오.
- 테스트 로그 탭에서 기본값 사용 옵션을 지우고
위치에 대한 datapoolExample 프로젝트 폴더를 선택하십시오.
- 실행을 클릭하여 테스트를 실행하십시오.
- 테스트 네비게이터에 나타나는 새 shoppingCartTest_src 테스트 로그를 두 번 클릭하십시오. shoppingCartTest_src 테스트 로그가 나타납니다. 테스트 결과 세부사항을 보려면 이벤트 탭을 선택하십시오.