소개
이 문서에서는 soapUI API(Application Programmers Interface) 요청을 만드는 방법 및 QPS(Quantum Policy Suite)에 대한 API 요청을 자동화하는 테스트 단계를 통해 루프되는 soapUI 테스트 사례를 만드는 방법에 대해 설명합니다.
이 문서의 예제 soapUI 테스트 사례는 구독자 ID 파일을 읽은 다음 querySubscriberRequest를 만들고 QPS에 보내는 테스트 단계를 구현합니다.
soapUI 프로젝트 만들기
이 절차를 시작하기 전에 데스크톱에 soapUI 응용 프로그램을 설치하십시오.www.soapui.org에서 soapUI 설치 실행 파일을 다운로드할 수 있습니다.
API 요청 또는 테스트 사례를 생성하기 전에 먼저 soapUI 프로젝트를 만들어야 합니다.프로젝트를 만들려면 WSDL(웹 서비스 설명 언어) 파일과 XSD(XML 스키마 설명) 파일이 필요합니다.WSDL은 지원되는 API를 지정합니다.일반적으로 LB(로드 밸런서)에서 이러한 명령을 실행할 때 QPS에서 WSDL 및 XSD를 가져올 수 있습니다.
- http://lbvip01:8080/ua/wsdl/UnifiedApi.wsdl 다운로드
- http://lbvip01:8080/ua/wsdl/UnifiedApi.xsd 다운로드
soapUI 응용 프로그램을 실행할 데스크톱의 같은 디렉터리에 WSDL 및 XSD를 저장합니다.
soapUI 프로젝트를 만들려면 다음 단계를 완료하십시오.
- soapUI 창에서 [파일] > [새 soapUI 프로젝트]를 선택합니다.
- 새 soapUI 프로젝트 창의 프로젝트 이름 필드에 프로젝트 이름을 입력하고 초기 WSDL/WADL 필드에 WSDL 파일이 저장되는 위치를 입력합니다.완료되면 OK(확인)를 클릭합니다.
soapUI API 요청 만들기
soapUI API 요청을 생성하려면 다음 단계를 완료합니다.
- API를 보려면 생성한 soapUI 프로젝트를 확장합니다.요청을 보기 위해 API 중 하나를 확장할 수도 있습니다.
이 예에서 querySubscriberRequest는 확장됩니다.
- 요청을 열어 쿼리를 구성하는 XML이 있는 요청 창을 확인합니다.Request(요청) 창에서 IP 주소 및 포트에 대한 http:// IP 주소를 편집합니다.이 주소는 일반적으로 다음과 같이 요청을 전송하려는 lbvip01 IP 주소 및 포트입니다.
- XML의 필드를 요청에서 보낼 데이터로 수정합니다.이 예에서 요청은 querySubscriberRequest입니다.쿼리할 구독자의 구독자 ID를 수정하고 showDetailedInformation을 false로 설정합니다.
- 쿼리를 실행하려면 요청 창 맨 위에 있는 녹색 실행 단추를 클릭합니다.
soapUI 테스트 사례 만들기
이 절차에서는 API를 QPS로 보낼 때 자동화할 수 있는 테스트 제품군을 만드는 방법에 대해 설명합니다.
이 예제 절차에서는 테스트 도구 모음이 가입자 ID 목록을 반복한 다음 QPS로 보내는 querySubscriberRequest에서 해당 가입자 ID를 사용합니다.가입자 ID 목록은 각각 subid.txt라는 텍스트 파일의 한 줄에 있습니다.
Test Suite를 생성하려면 다음 단계를 완료하십시오.
- 만든 soapUI 프로젝트에서 새 Test Suite를 만듭니다.soapUI를 마우스 오른쪽 버튼으로 클릭하고 New TestSuite를 선택합니다.
- Test Suite를 마우스 오른쪽 버튼으로 클릭하고 New TestCase를 선택합니다.
- Test Case(테스트 케이스)를 마우스 오른쪽 버튼으로 클릭하고 Add Step(단계 추가) > Group Script(그룹 스크립트)를 선택하여 Group Script(그룹 스크립트) 테스트 단계를 추가합니다.이름 지정 데이터 원본:
- 데이터 소스 파일에서 이 코드를 붙여넣습니다.이 코드는 각 줄에 가입자 ID를 포함하는 파일 C:/subid.txt를 읽습니다.
import com.eviware.soapui.support.XmlHolder def myTestCase = context.testCase
def counter,next,previous,sizeFile tickerEnumFile = new File("C:/subid.txt") //subscriber
IDs sepearted by new line (CR). List lines = tickerEnumFile.readLines() size =
lines.size.toInteger() propTestStep = myTestCase.getTestStepByName("Property - Looper")
// get the Property TestStep propTestStep.setPropertyValue("Total", size.toString())
counter = propTestStep.getPropertyValue("Count").toString() counter= counter.toInteger()
next = (counter > size-2? 0: counter+1) tempValue = lines[counter]
propTestStep.setPropertyValue("Value", tempValue) propTestStep.setPropertyValue
("Count", next.toString()) next++ log.info "Reading line : ${(counter+1)} /
$lines.size"propTestStep.setPropertyValue("Next", next.toString()) log.info
"Value '$tempValue' -- updated in $propTestStep.name" if (counter == size-1) {
propTestStep.setPropertyValue("StopLoop", "T") log.info "Setting the stoploop property now..."}
else if (counter==0) { def runner = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner
(testRunner.testCase, null) propTestStep.setPropertyValue("StopLoop", "F") } else{
propTestStep.setPropertyValue("StopLoop", "F") }
- 속성 테스트 단계를 추가하고 이름을 등록 정보 - 루퍼로 지정하려면 테스트 단계를 마우스 오른쪽 단추로 클릭하고 Add Step > Properties를 선택합니다.
- Looper 테스트 단계의 사용자 정의 속성을 추가합니다.
- 합계
- 값 - 이 예에서는 파일 가입자 ID에서 읽은 가입자 ID를 보유합니다.
- 개수
- 다음
- 정지 루프
- 테스트 단계를 마우스 오른쪽 단추로 클릭하고 Add Step > TestRequest를 선택하여 테스트 요청 테스트 단계를 추가하고 호출할 요청을 선택합니다.
이 예제에서는 querySubscriberRequest가 사용됩니다.
- 요청에서 확장 코드는 쿼리하는 항목의 필드 값을 대체합니다.이 예에서는?SubscriberId =?querySubscriberRequest는 확장 코드 ${Property - Looper#Value}(soap_test_req_expansion_code)로 바뀝니다.
속성 - Looper는 이전에 만든 속성 TestStep의 이름이며 Value는 구독자 ID 파일에서 읽은 현재 가입자 ID를 포함합니다.
- 테스트 단계를 마우스 오른쪽 버튼으로 클릭하고 Add Step > Group Script를 선택하고 데이터 루프의 이름을 지정합니다.
- 그룹 스크립트 데이터 루프에 이 코드를 붙여넣습니다.
def myTestCase = context.testCase
def runner
propTestStep = myTestCase.getTestStepByName("Property - Looper")
endLoop = propTestStep.getPropertyValue("StopLoop").toString()
if (endLoop.toString() == "T" || endLoop.toString()=="True"
|| endLoop.toString()=="true")
{
log.info ("Exit Groovy Data Source Looper")
assert true
}
else
{
testRunner.gotoStepByName("Groovy Script - DataSource") //go to the DataSource
}
- 이 예제 절차에서는 각 루프 사이에 1000ms 지연이 추가됩니다.이 단계는 선택 사항입니다.
지연이 발생하면 5가지 테스트 단계가 있습니다.
- TestCase 창에서 5개의 Test Steps(테스트 단계)를 실행하려면 녹색 Run(실행) 버튼을 클릭합니다.