이 문서는 IBM Rational Application Developer와 IBM Rational Service Tester 8.x 또는 IBM Rational Performance Tester with SOA Extension을 사용하여 IBM WebSphere Application Server 7.0을 위해 설계된 웹 서비스를 테스트하는 방법을 설명하는 데 그 목적이 있다.
이 문서에서는 다음과 같은 내용을 설명한다.
- Rational Application Developer를 사용하여 웹 서비스(호출자)를 작성하는 방법
- 첫 번째 단계에서 호출되는 Rational Application Developer를 사용하여 웹 서비스의 스텁을 작성하는 방법
- Rational Service Tester나 Rational Performance Tester SOA Extension을 사용하여 스텁된 웹 서비스를 호출하는 웹 서비스를 테스트하는 방법
이 기사에 있는 지시사항을 수행하기 전에 다음과 같은 제품을 설치해야 한다.
- Rational Application Developer 7.5.2(최소 설치 버전)
- WebSphere Application Server 7.0
- Rational Service Tester 8.1.0.3(최소 설치 버전) 또는 Rational Performance Tester 8.1.0.3 with the SOA Extension
Rational Application Developer를 사용하여 두 가지 웹 서비스 작성하기
이러한 예제를 설명하기 위해 다음과 같이 두 가지 웹 서비스를 작성한다.
- 시세 서비스: 이 서비스는 스텁으로 교체될 웹 서비스이다. 이 서비스는 각 마켓의 시세를 제공한다.
- 중간 호출자 서비스: 이 서비스는 테스트 중인 웹 서비스로 시세 서비스를 사용하여 여러 개의 마켓에서 최적의 시세를 선택한다.
또한, 호출자 서비스를 호출할 수 있는 클라이언트가 필요하다.
- 다음과 같이 Rational Application Developer를 연다.
Start > All Programs > IBM Software Delivery Platform > IBM Rational Application Developer 7.5 > IBM Rational Application Developer - J2EE Perspective 페이지를 연다.
Windows > Open Perspective > Other > Java EE를 차례로 클릭한다.
프롬프트가 표시되면 작업 공간의 위치를 지정한다. - 다음과 같이 동적 웹 프로젝트를 새로 작성한 후, WSDL 파일을 새로 작성한다.
File > New > Dynamic Web Project
그림 1. 새로 작성된 동적 웹 프로젝트
- WebSphere Application Server 7을 선택한다.
그림 2. 런타임 애플리케이션의 선택
- Finish를 클릭한다.
- 다음 그림과 같이 프로젝트 이름과 대상 런타임을 입력한다.
그림 3. 프로젝트 이름 설정
- Finish를 클릭한다.
- WSDL 파일을 새로 작성한다.
File > New > Web Services > WSDL
그림 4. WSDL 파일 새로 작성
- Next를 클릭한다.
- 파일 이름을 지정한다. 예: Quotation1.wsdl
그림 5. WSDL 파일 이름을 채운다.
- Next를 클릭한다.
그림 6. 새로 작성한 WSDL의 속성 선택
- Finish를 클릭한다.
- WSDL 편집기를 사용하여 다음과 같은 WSDL을 작성한다.
오퍼레이션 NewOperation의 이름을 ProvideQuotation1으로 바꾸고 View > Advanced로 전환한다.
그림 7. 오퍼레이션 이름 업데이트
- 화살표를 클릭하여 입력 데이터를 지정하고 다음과 같은 입력 요소를 정의한다.
그림 8. 입력 매개변수 ProvideQuotation1의 데이터
- 출력 값 화살표를 클릭하여 출력 데이터를 지정한다.
그림 9. 출력 매개변수 ProvideQuotation1Response의 데이터
스텁하고자 하는 웹 서비스를 정의했으므로 다음 섹션에서는 웹 서비스 호출자를 정의한다.
기존의 시세 서비스를 사용하여 이 서비스를 호출하는 데 사용할 새로운 웹 서비스를 작성할 수 있다.
- 새로운 동적 웹 서비스(QuotationInvoker)를 작성한다.
그림 10. 호출자용 새 동적 웹 서비스 작성
- New를 클릭하여 EAR 프로젝트를 새로 작성한다.
프로젝트 이름을 지정한다. 예: QuotationInvokerWebServiceEAR
그림 11. 호출자용 프로젝트 이름의 지정
- Finish를 클릭한다.
다음과 같은 창을 확인한다.
그림 12. 새로 작성한 동적 웹 프로젝트의 요약 내용
- Finish를 클릭한다.
- QuotationInvoker 프로젝트에서 다음과 같은 이름의 WSDL 파일을 새로 작성한다.
QuotationInvoker.wsdl File > New > Web Services > WSDL
그림 13. 새로운 WSDL 파일의 작성
- Next를 클릭한다.
- 대상 네임스페이스를 다음과 같은 값으로 변경한다.
그림 14. 대상 네임스페이스의 지정
- Finish를 클릭한다.
- 다음 다이어그램에서와 같이 오퍼레이션 이름을 GetBestQuotation으로 하여 웹 서비스 WSDL을 지정한다.
그림 15. 오퍼레이션 이름을 GetBestQuotation으로 업데이트
- 입력 매개변수, 즉 엔드포인트 문자열을 정의한다. 이 엔드포인트 값은 웹 서비스에서 사용할 엔드포인트를 제공하는 데 사용된다.
그림 16. 입력 매개변수 정의
- 다음과 같은 두 개의 값을 리턴하는 출력 값을 정의한다.
place_market
quotation
그림 17. 출력 매개변수 정의
- 해당 WSDL을 선택하고 다음과 같이 스켈레톤 Java 코드를 생성한다. 마우스 오른쪽 단추를 클릭하고 > Web services > Generate Java Bean Skeleton을 차례로 선택한다.
사용된 웹 서비스 런타임이 IBM WebSphere JAX-RPC인지 확인하고 Publish the Web Service를 선택한다.
그림 18. 호출자용 Java 스켈레톤 생성
- Next를 두 번 클릭한다.
그림 19. 최종 발행 단계
- Finish를 클릭한다.
다음과 같은 코드가 생성된다.
그림 20. 생성된 스켈레톤 코드
호출할 QuotationWebService1 웹 서비스용 클라이언트 작성
- QuotationWebService1 웹 서비스를 사용하여 웹 서비스용 전용 클라이언트를 생성할 수 있다.
이렇게 하려면 Quotation1.wsdl 파일에 따라 클라이언트를 생성해야 한다.
스켈레톤 코드를 생성하려면 다음과 같이 한다. WSDL 파일을 마우스 오른쪽 단추로 클릭하고 Web Service > Generate Client를 선택한다.
이 코드를 복사하여 웹 서비스 호출자에 붙여 넣는다.
그림 21. Quotation1용 클라이언트의 작성
- 웹 서비스 런타임이 IBM WebSphere JAX-RPC로 설정되었는지 확인한다.
그림 22. 웹 서비스 런타임 확인
- Finish를 클릭한다.
- 그러면 다음과 같은 Java 소스 코드가 생성된다.
그림 23. 생성된 Java 코드
- QuotationWebService1에서
org.example.www패키지 소스 코드를 복사하여 QuotationInvoker 프로젝트의 src 폴더에 붙여 넣으면 호출자에서 다음과 같은 결과를 얻을 수 있다.
그림 24. 코드를 복사하여 호출자로 붙여넣기
- QuotationInvokerSOAPImpl에서 구현 코드를 다음과 같은 코드로 바꾼다.
Listing 1. QuotationInvoker 구현
import java.rmi.RemoteException;
import org.example.www.Quotation1_PortTypeProxy;
public class QuotationInvokerSOAPImpl implements
org.QuotationInvoker.www.QuotationInvoker_PortType{
public void getBestQuotation(java.lang.String endP,
javax.xml.rpc.holders.StringHolder place_market,
javax.xml.rpc.holders.DoubleHolder quotation)
throws java.rmi.RemoteException {
// Display on the console
System.err.println("endpoint : " + endP);
Quotation1_PortTypeProxy proxy = new Quotation1_PortTypeProxy();
proxy.setEndpoint(endP);
double quoteNY = 0.0 ;
double quoteParis = 0.0 ;
try {
System.err.println(">>>");
quoteNY = proxy.provideQuotation1("New York", "gold") ;
System.err.println("quote New York= " + quoteNY);
quoteParis = proxy.provideQuotation1("Paris", "gold") ;
System.err.println("quote Paris= " + quoteParis);
} catch (RemoteException e) {
// NOP
e.printStackTrace();
}
// Computation of best quote
if (quoteNY > quoteParis)
{
place_market.value = "New York";
quotation.value = quoteNY;
}
else
{
place_market.value = "Paris";
quotation.value = quoteParis;
}
}
}
|
테스트용 QuotationInvoker.wsdl 파일 가져오기
- Rational Application Developer 작업 공간에서 QuotationInvoker.wsdl 파일을 복사하여 임시 디렉토리(C:\wsdl)에 저장한다.
그림 25. QuotationInvoker.wsdl 파일 복사
- 스텁하기를 원하는 웹 서비스의 WSDL 파일을 같은 임시 디렉토리(C:\wsdl)로 복사한다.
그림 26. Quotation1.wsdl 파일 복사
IBM Rational Service Tester나 IBM Rational Performance Tester SOA Extension을 사용하여 스텁 준비하기
관련된 Java 코드를 아직 구현하지 않았으므로 이 섹션에서는 Rational Service Tester에서 proxy.provideQuotation1 웹 서비스 호출을 스텁하는 방법을 설명한다.
- Rational Service Tester나 Rational Performance Tester with the SOA Extension을 시작한다.
- Start > All Programs > IBM Software Delivery Platform > IBM Rational Service Tester > IBM Rational Service Tester – Full Eclipse
그림 27. Rational Service Tester 시작하기
- 서비스 테스트 프로젝트를 작성한다.
File > New > Service Test Project
그림 28. 새 서비스 테스트 프로젝트 작성
- Finish를 클릭한다.
- 현재는 Create New Test From Recording 화면에서 Cancel을 클릭한다.
그림 29. 새 레코드 작성 취소하기
이제는 ServiceQuotation1 웹 서비스의 스텁을 작성하여 ProvideQuotation1 오퍼레이션의 작동을 시뮬레이션해야 한다.
- Create a Service Stub 아이콘을 클릭한다.
그림 30. Service Stub 아이콘
- 그런 다음, Import From File 단추를 클릭한다.
그림 31. 스텁에 사용할 파일 가져오기
- 임시 디렉토리에서 WSDL 파일을 선택한다. 예: c:\wsdl\Quotation1.wsdl
그림 32. 스텁에 사용할 WSDL 파일의 선택
- OK를 클릭한다.
그림 33. Next 단추를 클릭한다.
- Next 단추를 클릭한다.
그림 34. 스텁 작성 완료하기
- Finish를 클릭한다.
- 이제 스텁의 작동을 다음과 같이 지정한다. quote to -1.0의 기본 스텁 응답을 지정한다.
그림 35. 기본 스텁 응답 설정
- 다음과 같이 새 stub Equals Case를 정의한다.
- DefaultCase를 마우스 오른쪽 단추로 클릭하고 Insert > Stub Equals Case를 선택한다.
그림 36. Stub Equals Case의 삽입
요청의 본문에서 스텁 케이스 이름을 Equals case로 선택하여 다음 값을 설정한다.
market_place = New York
metal_name = gold
그림 37. 스텁의 입력 매개변수 설정
응답에서 Equals case의 ProvideQuotation1 매개변수를 선택하여 100.0으로 설정한다.
그림 38. 스텁 출력 매개변수 설정
- 다음 값을 사용하여 다른 Equals case를 작성한다.
market_place=Paris
metal_name=gold
이 입력에 대해서는 응답을 105.0으로 설정한다.
스텁 작동이 다음과 같이 설정되어야 한다.
그림 39. 기타 Equals case 설정
- 스텁을 저장한다.
- 스텁 편집기에서 Deploy 단추를 클릭한다.
그림 40. 스텁의 전개
- 이번에는 로컬 시스템에 스텁 서버를 작성한다. 녹색 화살표 단추를 클릭하여 로컬 시스템에서 스텁을 시작한다.
그림 41. Stub Monitor 뷰의 단추 실행
- Stub Monitor 뷰에서 Quotation1_Stub1 웹 서비스의 WSDL URL을 복사한다. 스텁을 테스트하기 위해 이 WSDL을 Generic Service Client로 가져올 수 있다.
그림 42. 스텁을 테스트하기 위해 발행된 WSDL URL 가져오기
Generic Service Client로 로컬에서 전개된 스텁 테스트하기
- Generic Service Client(GSC) 아이콘을 클릭한다.
그림 43. Generic Service Client 아이콘
- Add WSDL file을 클릭한다.
Import from URL을 선택한다.
그림 44. 스텁 URL을 사용하여 WSDL 가져오기
- Stub Monitor 뷰에서 복사한 WSDL 파일의 URL을 붙여 넣는다.
그림 45. 스텁의 발행 URL 붙여넣기
- OK를 클릭한다.
- 기본 케이스를 테스트한다.
market_place와 metal_name은 기본값으로 유지하고 Invoke 단추를 클릭한다.
그림 46. 스텁에서 호출하기
- 응답이 –1.0인지 확인한다.
그림 47. 시세 응답 확인
-
New York gold 값을 테스트한다.
Edit Data 단추를 클릭한다.
market_place를 New York으로 설정한다.
metal_name을 gold로 설정한다.
Invoke를 클릭한다.
응답이 100.0인지 확인한다. -
Paris, gold 값을 확인한다.
Edit Data 단추를 클릭한다.
market_place를 Paris로 설정한다.
metal_name을 gold로 설정한다.
Invoke를 클릭한다.
응답이 105.0인지 확인한다.
전개된 QuotationInvoker 웹 서비스 WSDL 파일을 WebSphere Application Server 7.0 서버에서 가져오기
WebSphere Application Server에 전개된 웹 서비스 호출자를 테스트하기 전에 연관되었거나 발행된 QuotationInvokerWebServiceEAR WSDL 파일을 가져와야 한다.
- WebSphere Application Server의 관리 콘솔을 다음과 같이 연다. Start > All Programs > IBM WebSphere > Application Server 7.0 > Profiles > AppServ01 > Administrative console
Applications와 Application Types 노드를 확장한다.
WebSphere enterprise applications를 선택한다.
QuotationInvokerWebServiceEAR을 클릭한다.
그림 48. 발행된 애플리케이션 QuotationInvoker 선택
- WSDL 파일을 발행하고 이 파일을 임시 폴더(예: c:\wsdl)로 복사한다.
그림 49. WSDL 파일 발행
- Rational Service Tester나 Rational Performance Tester에서 New test from recording 단추를 클릭한다.
그림 50. 새 레코딩 작성
- Web Service recording using Generic Service Client를 선택한다.
그림 51. GSC를 이용한 레코딩 선택하기
- Next를 클릭한다.
- TestQuotation을 선택하데 테스트 파일 이름은 기본값으로 지정한다.
그림 52. 프로젝트 선택
- Next를 클릭한다.
- Accept를 선택한 후, Finish를 클릭한다.
그림 53. 개인정보 보호정책에 동의
- Generic Service Client에서 Add WSDL 단추를 클릭한다.
- Import from file을 선택한 후, WebSphere에서 내보낸 WSDL 파일(
c:\wsdl\QuotationInvoker.wsdl)을 선택한다.
그림 54. WSDL QuotationInvoker 선택
- OK를 클릭한다.
- 전개한 스텁의 엔드포인트를 지정한다. Stub Monitor 뷰에서 엔드포인트를 복사한다.
그림 55. 스텁의 발행 URL을 복사한다.
- Generic Service Client에 있는 endPparameter에 붙여넣는다.
그림 56. 스텁 URL로 엔드포인트 설정
- Invoke를 클릭한다.
- 응답으로 최적가가 표시된다.
그림 57. QuotationInvoker의 응답
최적가는 Paris에 형성되어 있다.
- Paris에 대한 리턴 값을 105.0에서 95.0으로 업데이트하여 스텁의 작동을 변경할 수 있다.
이렇게 하려면 스텁 작동을 열어서 Paris에 대한 리턴 값을 95.0으로 변경하고 스텁에 저장하면 된다. 그러면 스텁이 자동으로 새 작동을 사용하여 전개된다.
Generic Service Client에서 다시 Invoke를 클릭한다.
이제는 최적가가 New York 마켓플레이스에서 형성된다.
그림 58. QuotationInvoker의 새 응답
- 이제 Call History 목록에서 Paris 최적가 응답에 해당하는 첫 번째 호출을 삭제한다.
그림 59. 첫 번째 호출 삭제
- Stop recording 단추를 클릭한다.
그림 60. 테스트 스위트 레코딩 중지
- Yes를 선택하여 생성된 테스트 스위트를 연다.
- GetBestQuotation 응답을 선택하고 동등한 검증 포인트를 추가한다.
그림 61. 테스트 스위트에 검증 포인트 추가
- 테스트 스위트의 Run 단추를 클릭하거나 테스트 스위트에서 마우스 오른쪽 단추를 클릭하여 실행을 요청한다. 그러면 테스트가 실행된다.
그림 62. 테스트 스위트의 실행
- 앞서 실행한 테스트에 대한 기능 테스트 보고서를 생성하도록 요청할 수 있다. 해당 결과를 마우스 오른쪽 단추로 클릭하여 Generate Functional Report를 선택한다.
그림 63. 기능 보고서 생성 요청
그림 64. 생성 위치 선택
- Next를 클릭한다.
- 예를 들어, Service Test – Full(XSL)을 선택한다.
그림 65. 보고서 디자인 선택
- Finish를 클릭한다.
다음과 같이 기능 보고서가 생성된다.
그림 66. 기능 보고서 실행 결과
또한, 이 보고서에는 다음과 같은 테스트 로고 데이터가 포함되어 있다.
그림 67. 기능 보고서의 테스트 로그 데이터
교육
- 소프트웨어 개발자와 테스터에게 유용한 기술 정보와 관련 IBM 소프트웨어에 대한 링크는 IBM developerWorks의 Rational Performance Tester 페이지를 참고한다.
- 소프트웨어 개발자와 테스터에게 유용한 기술 정보와 관련 IBM 소프트웨어에 대한 링크는 IBM developerWorks의 Rational Service Tester for SOA Quality 페이지를 참고한다.
- Rational Service Tester: http://www-01.ibm.com/software/awdtools/tester/service/.
- IBM Rational Software Delivery Platform에서 병렬 개발 및 지역적으로 분산된 팀을 위한 협업 도구와 아키텍처 관리, 자산 관리, 변경 및 릴리스 관리, 통합 요구사항 관리, 프로세스 및 포트폴리오 관리, 품질 관리를 위한 특수 소프트웨어를 포함한 기타 애플리케이션에 대해 살펴보자.
- Rational Software Delivery Platform 제품 기술 자료와 관련 우수 사례는 developerWorks의 Rational 소프트웨어 영역을 참조한다.
- IBM Rational Software Delivery Platform에서 병렬 개발 및 지역적으로 분산된 팀을 위한 협업 도구와 아키텍처 관리, 자산 관리, 변경 및 릴리스 관리, 통합 요구사항 관리, 프로세스 및 포트폴리오 관리, 품질 관리를 위한 특수 소프트웨어를 포함한 기타 애플리케이션에 대해 살펴보자.
- Rational Performance Tester 제품 페이지에서 자세히 배울 수 있다.
- developerWorks의
SOA와 웹 서비스 영역에서 개발자의 기술을 향상시키는 데 도움이 되는 참고자료를 다운로드할 수 있다.
- 기술 서점에서
다양한 기술 주제와 관련된 서적을 살펴보자.
제품 및 기술 얻기
- IBM 제품 평가판을 다운로드하거나 IBM SOA Sandbox의 온라인 시험판을 살펴보고 DB2®, Lotus®, Rational®, Tivoli® 및
WebSphere®의 애플리케이션 개발 도구 및 미들웨어 제품을 사용해 볼 수 있다.
토론
- developerWorks 포럼 & 블로그를 통해 developerWorks 커뮤니티에 참여하자.