이 기사에서 다루는 주제는 다음과 같다.
- IBM® Rational® Service Tester for SOA Quality 소개
- Rational Service Tester의 주요 기능
- 자동화된 테스트 스크립트 작성하기
- 스케줄 작성하기
- 데이터 풀 작성하기
- IBM® WebSphere® MQ에 대한 구성 프로토콜 작성하기
- 사용자 정의 코드 추가하기
- 확인 지점 유형
- 선택적 요소
- 스크립트 실행하기
- 로그 분석하기
Rational Service Tester는 자동화된 웹 서비스 테스트 및 SOA 테스트 도구이다. 이 도구는 비GUI 웹 서비스에 대해 비교적 코드로 인한 제약이 없는 테스트를 수행할 수 있는 기능적 회귀 테스트 도구이다. 그리고 SOA(Service-Oriented Architecture) 서비스 유형과 상호작용할 수 있는 단일 클라이언트도 제공한다. 이 도구는 Linux® 및 Microsoft® Windows® 운영 체제를 지원한다.
Rational Service Tester의 주요 기능
Rational Service Tester:
- SOAP(Simple Object Access Protocol), HTTP 및 HTTPS(Hypertext Transfer Protocol Secure), JMS(Java™ Message Service), WS-Security(Web Services security) 및 UDDI(Universal Description, Discovery and Integration)를 포함한 웹 서비스 표준을 지원한다.
- 웹 서비스 테스트를 작성, 파악, 수정 및 실행하는 프로세스가 단순하다.
- WebSphere MQ를 통한 XML 호출 및 SOAP의 사용을 지원한다.
- 메시지 무결성을 보장하기 위해 사용자 정의 보안 API를 지원한다.
- 사용자 정의된 보고서를 생성한다.
- 비GUI 웹 서비스에 대한 기능 테스트, 회귀 테스트 및 성능 테스트를 위한 자동화된 스크립트 프리 테스트 기능을 테스터에게 제공한다.
- 웹 서비스 응답에 대한 여러 가지 유효성 검증 옵션을 제공한다.
- 상위 레벨 및 상세 테스트 보기를 보여 주는 시각적 테스트 편집기를 제공한다.
새로운 자동화된 스크립트를 작성하려면 먼저 웹 서비스 프로젝트를 작성해야 한다.
- 그림 1과 같이 File > New > Others > Test > Service Test Project를 선택하고 Next를 클릭한다.
그림 1. 서비스 테스트 프로젝트 작성하기
- 웹 서비스 프로젝트를 작성한 후 File > New > Others > Test > Web Service Test를 선택한다. 이후에 나오는 일련의 화면 캡처에서는 완전한 테스트를 작성하는 단계를 보여 준다.
- 테스트 스위트를 작성할 프로젝트 폴더(아래 그림의 경우 All_IMG 폴더)를 선택하고 테스트
파일 이름을 제공한다. 기본적으로
New Service Test.testsuite라는 이름이 표시되며, 여기에서는 그림 2와 같이New Serive Test.testsuite를 그대로 사용한다. 그런 다음 Next를 클릭한다.
그림 2. 테스트 이름 제공하기
- 다음으로 그림 3과 같이 작성할 호출 유형(이 예제의 경우 XML call)을 선택하고 Next를 클릭한다.
그림 3. 서비스 호출 유형 선택하기
- WebSphere MQ protocol 단일 선택 단추를 선택한다. 그림 4와 같이 Protocol configuration 드롭 다운 목록에서 Default MQ Protocol을 선택하고 Next를 클릭한다.
그림 4. 프로토콜 선택
웹 서비스 테스트를 작성하는 동안 테스트 스크립트에 대한 프로토콜을 구성해야 한다. 기존 프로토콜 설정을 사용할 수도 있다. MQ에는 수신 메시지에 대한 요청 큐를 모니터한 후 메시지를 대상 웹 서비스에 라우트하는 전용 WebSphere MQ 리스너 프로세스가 있다. MQ를 구성하려면 큐 관리자 이름, 큐 이름 및 IP 주소와 같은 정보를 제공해야 한다. (이 경우에는 포트 포워딩을 사용 중이므로 IP 주소가 localhost이다.)
- Finish를 클릭한 다음 Message 탭 아래의 Source 항목에 XML 메시지를 추가한다(그림 5 참조).
- Update node name automatically는 응답 메시지의 이름을 자동으로 업데이트한다. 요청 및 응답 XML 메시지에 사용자 관련 이름을 제공하려면 이 선택란을 해제한다.
그림 5. XML 메시지 추가하기
- Update Return 단추를 클릭하면 XML 요청이 프로토콜 구성에 지정된 큐로 전송된다. 응답이 수신되면 표시 내용 형식을 선택하라는 메시지가 표시된다. XML Content 또는 Text Content를 선택할 수 있다. 두 형식 중 하나를 선택하고 OK를 클릭한다(그림 6 참조).
그림 6. Update Return 및 보기 형식 선택하기
- 그림 7에서는 XML 형식의 응답 메시지를 보여 준다. 이 메시지는 실제로 서비스에서 리턴한
내용이다. 다음과 같은 3가지 보기가 있다.
- Form
- Tree
- Source
그림 7. 테스트에 응답 메시지 추가하기
- 웹 서비스 테스트에 응답을 추가하려면 Update Test를 클릭한다. 응답을 테스트에 추가한 후 확인 지점을 테스트에 추가할 수 있다.
스케줄은 실행할 테스트와 실행 순서를 지정한다. 이 예제에서는 데이터 풀의 처음 5개의 값을 사용하여 테스트를 5회 반복하는 스케줄을 작성한다.
다음 단계를 수행하여 스케줄을 작성한다.
- File > New > Performance Schedule을 선택한다.
- Performance Schedule 대화 상자에서 Web Service Tests 프로젝트를 클릭하여 상위 폴더로 선택한다.
- Performance Schedule 대화 상자의 Name 필드에
Web Service Test Schedule이라는 이름을 입력한다. - Finish를 클릭하여 스케줄을 작성한다. 그림 8과 같이 스케줄의 시작 페이지가 표시된다.
- 스케줄의 Schedule Contents 섹션에서 <사용자 그룹 1>(100%) 분기(이 경우에는 Abhishek)를 마우스 오른쪽 단추 클릭한 다음 Add > Loop 또는 Add > Test를 선택한다.
- Schedule Element Details 섹션에서 반복 횟수를 입력한다.
- 스케줄에서 루프 아래에 테스트를 추가하려면 위 단계에서 설명한 대로 루프를 작성한 다음 Loop (n iterations) 분기를 마우스 오른쪽 단추 클릭하고 Add > Test를 선택한다.
그림 8. 스케줄
Rational Service Tester는 생성된 테스트를 자동으로 매개변수화하므로 여러 테스트 데이터 세트를 사용하여 동일한 웹 서비스 호출을 검증할 수 있다. 추가 데이터는 스프레드시트 양식의 테이블에 저장되어 있다. 따라서 테스트 코드를 수정하지 않고도 대량의 코드를 처리할 수 있다. 그림 9와 같은 데이터 풀은 XML 메시지에서 대체해야 하는 데이터가 포함된 테이블이다. 데이터 풀은 실행 중인 테스트에 변수 데이터를 제공한다.
그림 9. 데이터 풀 개요
다음 단계를 수행하여 데이터 풀을 작성한다.
- 테스트 스위트를 선택한다.
- New를 클릭한 다음 Datapool을 선택한다.
- 데이터 풀의 이름 및 위치를 정의한다.
- 데이터 풀에 대한 설명 즉, 레코드 수 및 변수 수를 정의한다.
- 참조를 사용하여 필드의 정보가 변수에 전달된다.
참조는 XML 메시지의 데이터를 사용자 정의 코드에 사용 중인 변수에 전달하는 데 사용된다. 대체는 XML의 다양한 요소 값을 각 반복으로 대체하는 데 사용된다. 사용자 정의 코드(성공 시 연한 노란색으로 강조표시됨) 또는 데이터 풀(성공 시 진한 녹색으로 강조표시됨)에서 값을 바꿀 수 있다(그림 10 참조).
그림 10. 데이터 풀 및 코드에서 대체
IBM WebSphere MQ에 대한 구성 프로토콜 작성하기
- Protocol을 선택하고 해당 구성 옵션을 설정한다.
- 사용할 프로토콜 유형을 선택한다(HTTP, JMS, WebSphere MQ 중 하나).
- 이 경우에는 WebSphere MQ 프로토콜을 사용한다(그림 11 참조).
- 프로토콜 구성을 위해 New를 클릭한 다음 Queue Manager Name, Queue Name, Queue Manager Address, Queue Manager Port 및 Client Channel 등의 필요한 정보를 제공한다.
- OK를 클릭하고 Next를 누른다.
- 이 프로토콜을 작성하는 데 사용된 정보는 IBM WebSphere MQ에서 사용할 수 있다.
그림 11. 프로토콜 구성 설정
사용자 정의 코드는 사용자 정의 코드 작성을 위한 ICustomCode2 인터페이스와
테스트 로그의 사용자 정의 메시지 및 사용자 정의 확인 지점을 추가하기 위한 ITestExecutionServices
인터페이스를 구현한다. 확인 지점은 전체 스케줄 평결에 반영된다. ICustomCode2 인터페이스를
사용하려면 exec 메소드를 구현해야 한다. 이는 사용자 Java 클래스를 실행하기 위해 호출되는
메소드이다. ITestExecutionServices 인터페이스는 사용자 Java 테스트 코드에서 지원 서비스(확인
지점, 사용자 정의 메시지, 평결 등)에 액세스하는 데 필요한 메커니즘을 제공한다.
- 사용자 정의 코드에서는 테스트의 참조를 입력으로 사용한 다음 수정된 값을 테스트에 리턴한다.
- 사용자 정의 코드 입력 값은 참조 또는 필드 참조에 있다. 이러한 참조는 테스트에 포함되어 있어야 한다.
- 테스트 내에서 참조는 영향을 받을 코드 앞에 있어야 한다. 코드의 사용자 정의 입력에 필요한 참조가 테스트에 있는지 확인한다.
Listing 1 사용자 정의 코드에서는 매개변수를 코드에 전달하는 방법을 보여 준다. 예를 들어, 샘플 코드에서는 MessageVRM과 ListId라는 두 개의 명령행 인수가 전달된다. 그리고 DB2에 연결하고 SQL 쿼리를 실행하는 방법도 보여 준다.
문자열 값에는 실행해야 하는 전체 SQL 쿼리가 들어 있다. CustomDB2Connection 클래스에는 데이터베이스에 연결하고 SQL 쿼리를 실행하는 데 필요한 모든 메소드가 있다.
샘플 코드에서는 CustomDB2Connection 클래스의 오브젝트(db2c)를 작성하고 connect()를 사용하여 데이터베이스에 연결한 다음 query(QUERY)를 사용하여 문자열 인수로서 메소드에 전달되는 SQL 쿼리를 실행한다. query는 메소드 이름이고 QUERY는 메소드에 전달되는 문자열 인수이다.
SQL 쿼리의 결과는 문자열 변수 numberOfRecords에 저장된다.
Listing 1. DB2 연결을 위한 샘플 코드
package test;
import java.sql.ResultSet;
import org.eclipse.hyades.test.common.event.VerdictEvent;
import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
public class VEH003_010_preEvidence implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {
public VEH003_010_preEvidence() {
}
/**
* For javadoc of ICustomCode2 and ITestExecutionServices interfaces,
select 'Help Contents' in the
* Help menu and select 'Extending Rational Performance Tester
functionality' -> 'Extending test execution with custom code'
BY Abhishek*/
public String exec(ITestExecutionServices tes, String[] args) {
String MessageVRM = args[0];
String ListId=args[1];
String numberOfRecords=null;
String QUERY = "SELECT COUNT(*) FROM LRUCCORE.vehiclelistentry
WHERE VRM='"+MessageVRM+"' and vehiclelistid="+ListId+" and
Effectivetodatetime='2999-12-31 00:00:00.00000'";
tes.getTestLogManager().reportMessage(QUERY);
CustomDB2Connection db2c = new CustomDB2Connection
("IPAddress", "port no", "database", "userID", "Password");
ResultSet results;
try
{
db2c.connect();
results = db2c.query(QUERY);
// goto the last row (if more than one)
results.last();
numberOfRecords = results.getString(1);
|
다음은 테스트의 기능을 향상시키기 위해 사용할 수 있는 선택적 요소 세트이다.
- 테스트에서 서비스 호출 요소를 사용하여 XML 메시지 형식의 요청을 서비스에 전송할 수 있다.
- 테스트 편집기에서 리턴 메시지 요소는 서비스 호출 뒤에 있으며 서비스에서 리턴한 내용을 표시한다.
- 호출 요소에서 Update Return을 클릭하여 리턴된 메시지의 내용을 자동으로 생성하거나 업데이트할 수 있다.
- 조건부 블록을 사용하여 참조의 값에 따라 테스트의 일부를 실행할 수 있다. 참조가 테스트에 있어야 할 뿐만 아니라 조건부 블록 앞에 있어야 한다.
- 테스트 또는 스케줄의 일부를 지정된 횟수만큼 실행되는 루프로 정의할 수 있다. 루프는 시간 또는 횟수 기반으로 실행하거나 무한으로 실행할 수 있다.
- 트랜잭션은 기본적으로 특정 테스트 요소 그룹의 성능을 테스트하는 데 사용되므로 TFL 프로젝트에서 트랜잭션을 구현하지 않았다. 테스트 결과를 볼 때 추가한 트랜잭션에 대한 성능 데이터를 볼 수 있다.
- 동등 확인을 사용하면 서비스에서 리턴한 내용이 확인 지점에 지정된 내용과 정확히 일치하는지 확인할 수 있다.
- 포함 확인 지점은 서비스에서 리턴한 내용의 일부가 확인 지점에 지정된 내용과 일치하는지 확인한다. 실제 값이 예상했던 값의 하위 문자열이더라도 통과된다.
- 첨부 확인 지점을 사용하면 예상했던 첨부가 메시지 리턴과 함께 전달되었는지 확인할 수 있다. 이 확인 지점은
응답 메시지에서 첨부를 기대할 때 유용하다. 이 확인 지점을 사용하면 웹 서비스 메시지 리턴의 첨부가 지정된 기준과 일치하는지 확인할
수 있다. 이 확인 지점은 첨부의 모든 기준이 확인 지점 테스트 요소에 지정된 예상 기준과 일치할 때
Pass상태를 리턴한다. 일치하지 않는 기준이 있으면Fail상태를 리턴한다. - 쿼리 확인 지점을 사용하면 XML Path 언어 쿼리에서 리턴한 노드 수가 확인 지점에 지정된 예상 노드 수와 일치하는지 확인할 수 있다.
확인 지점을 추가하려면 원하는 유형을 마우스 오른쪽 단추 클릭하고 선택한다(그림 12 참조).
그림 12. 확인 지점 추가하기
지금까지 테스트 및 테스트의 실행 스케줄을 작성했으며, 대부분의 경우 사용자가 직접 작업을 수행했다. 이제부터는 Rational Service Tester가 테스트를 시작 및 실행하고 테스트 결과를 제공한다.
테스트는 매우 간단하게 실행할 수 있다. 다음 단계를 수행하여 테스트를 실행한다.
- Test Navigator 보기에서 Web Service Test Schedule을 마우스 오른쪽 단추 클릭하고 Run As > Performance Schedule을 선택한다.
- Rational Tester에서 테스트를 실행할 준비가 완료되면 Launch Schedule 대화 상자가 표시된다. 이제 Web Service Test Schedule - Web Services Performance Report 보기에 테스트 누적 결과가 실시간으로 표시된다.
- 보기의 Overall 탭에서 상태가 녹색으로 바뀌면 테스트가 완료된다(그림 13 참조).
그림 13. 실행 완료
기능 테스트 또는 성능 테스트 관점에서 테스트 결과를 분석할 수 있다. 기능 테스트의 목적은 웹 서비스가 지정된 입력 세트에 대해 올바른 결과를 리턴했음을 보장하는 것이다. 테스트 로그는 올바른 결과의 수신을 보장하는 주 수단이다. 테스트 로그는 Rational Service Tester와 웹 서비스 간에 서로 주고 받은 모든 메시지에 대한 상세 정보를 제공한다. 결과를 분석하려면 다음을 수행한다.
- Performance Test Runs 보기에서 Web Service Test Schedule [Time Stamp Information]을 마우스 오른쪽 단추 클릭하고 Display Test Log를 선택한다.
- 테스트 로그에는 Overview와 Events라는 두 개의 탭이 있다. 로그는 Overview 페이지에 표시되며, 여기에서 테스트에 대한 통과 또는 실패 평결 및 시간 정보를 볼 수 있다. 그림 14에서는 샘플 로그를 보여 준다.
그림 14. 로그
- Events 탭을 클릭하여 자세한 정보를 확인한다.
- Events 트리를 펼친다. 그러면 그림 15와 같은 화면이 표시된다.
그림 15. 펼쳐진 테스트 로그 이벤트
이 기사에서는 IBM® Rational®Service Tester의 주요 기능을 살펴보았다. 그런 다음 Rational Service Tester for SOA Quality를 사용하여 IBM® WebSphere® MQ(Message Queuing)를 통신 프로토콜로 사용하는 자동화된 테스트 스크립트를 작성하는 방법에 대해 알아보았다. 그리고 이 기사에서는 데이터 풀을 사용하여 자동화된 테스트 스크립트를 변경하지 않고도 데이터 변형을 사용하여 기능을 테스트하는 방법도 살펴보았다. 또한 자동화된 스크립트에서 사용자 정의 코드를 사용하는 방법에 대해 살펴보면서 설명과 함께 사용자 정의 코드를 직접 실행해보았다. 그리고 자동화된 스크립트의 범위와 개별 스크립트 또는 스케줄의 실행을 향상시키는 데 사용할 수 있는 다양한 확인 지점 및 선택적 요소에 대해서도 알아보았다. 기사의 후반부에서는 로그를 분석하는 방법에 대해 살펴보았다.
교육
- IBM Rational Service Tester for SOA Quality에 관한 자세한 정보를 찾을 수 있는 방법:
- Rational Service Tester developerWorks 페이지에서 기술 기사 및 여러 관련 참고자료에 대한 링크를 살펴보자. developerWorks Rational 소프트웨어 페이지 또한 좋은 출발점이다.
- Rational Service Tester용 무료 시험판을 다운로드하자.
- IBM Rational Software Delivery Platform에서 병렬 개발 및 지역적으로 분산된 팀을 위한 협업 도구와 아키텍처 관리, 자산 관리, 변경 및 릴리스 관리, 통합 요구사항 관리, 프로세스 및 포트폴리오 관리, 품질 관리를 위한 특수 소프트웨어를 포함한 기타 애플리케이션에 대해 살펴보자.
제품 매뉴얼, 설치 안내서 및 기타 문서는 IBM Rational Online Documentation Center에서 확인할 수 있다.
- developerWorks의 Rational 소프트웨어 영역에서 Rational Software Delivery Platform 제품과 관련된 기술 자료와 우수 사례를 볼 수 있다.
- 강사가 지도하는 컴퓨터와 웹을 기반으로 하는 Rational 온라인 강의를 살펴보자. 초급에서 고급까지의 다양한 강의를 통해 Rational 도구에 대한
지식을 쌓고 기술을 연마하자. 이 카탈로그의 강의는 컴퓨터 기반 교육 또는 웹 기반 교육을 통해 구입할 수 있다. 일부 "시작하기" 강의는 무료로 제공된다.
- 주별로 업데이트되는 developerWorks 튜토리얼, 기사, 다운로드, 커뮤니티 활동, 웹 캐스트, 이벤트 등에 대한 소식을 전하는 IBM developerWorks 뉴스레터를 구독하자.
제품 및 기술 얻기
- IBM Rational 시험판 소프트웨어를 다운로드하자.
- IBM 제품 평가판을 다운로드하고
DB2®, Lotus®, Tivoli® 및 WebSphere®의 애플리케이션 개발 도구와 미들웨어 제품을 사용해 볼 수 있다.
- IBM 제품 평가판을 다운로드하고
DB2®, Lotus®, Tivoli® 및 WebSphere®의 애플리케이션 개발 도구와 미들웨어 제품을 사용해 볼 수 있다.
토론
- 포럼에 참여하기.
- developerWorks 포럼 & 블로그를 통해 developerWorks 커뮤니티에 참여하자.

Mohit Thareja is a Test Specialist, leading the Transport for London (TFL) Test team. He has total of 7 years of experience. For past 5 years, he has been working with IBM. This includes approx 4 years with India Software Labs and the past 1 year with IBM Global Business Services. He is Certified Software Tester (CSTE) certified, and has worked on various forms of testing like functional testing, system, reliability, and so on. He is currently working with the TFL team, where he started working on the new version of IBM Rational Service Tester, introduced it to the whole team, and is now leading the team of 15 people. Initially he was working on the proof of concept (POC) for automation the test scripts, now he has a team of 4 people working full time on automation. Mohit has worked on automation tools like Rational Functional Tester, Rational Robot, Rational Test Manager and HP Quick Test Professional. He has also worked on defect fixing and PMR (Problem Management Record) fixing work for the DCS (Document Conversion Services) component for WebSphere Portal Server and Quickr. He has also received congratulations for saving IBM hundreds of dollars by helping reduce the number of PMRs for WebSphere Portal Server and Quickr.

Abhishek is an application developer. He has almost 3 years of experience in IBM as well as IT. He is Sun Certified Java Programmer (SCJP), IBM AIX (Advanced Interactive eXecutive), and SQL certified. He is currently in TFL test team as Automation Test Lead, where he is working in Rational Service Tester Version 8. He has initially automated a number of scripts alone as Proof of Concept and now he has prepared a regression suite to run automated scripts against each build. Abhishek works full time to automate test scripts and train his team members on how to use Rational Service Tester. He has been leading a team of 5 automation testers. He has also worked on number of automations tools like Rational Functional Tester, SOAP UI Tool and Rational Performance Tester.