SoapUI의 어설션: 스크립트, XQuery, XPath 유형 튜토리얼

어설션이란 무엇입니까?

주장이란 어떤 것을 긍정하거나 진술하는 행위를 의미합니다. 체크 포인트나 검증 포인트로 해석될 수도 있습니다.

요청이 웹 서버로 전송되면 응답이 수신됩니다. 응답에 우리가 기대하는 데이터가 포함되어 있는지 검증해야 합니다. 응답을 검증하려면 어설션을 사용해야 합니다.

어설션 유형

응답을 주장하는 방법에는 여러 가지가 있습니다. 그러나 응답의 유효성을 검사하는 동안 일반적으로 사용되는 SoapUI Assertions 유형에 중점을 둘 것입니다. 다음은 SoapUI의 오픈 소스 버전에서 사용할 수 있는 것입니다.

  1. 재산 내용
  2. 준수 상태 표준
  3. 스크립트
  4. 서비스 수준 계약 (SLA)
  5. 제이엠에스
  6. 보안
SoapUI의 어설션 유형
SoapUI의 어설션 유형

위에 나열된 것 외에도 PRO 버전에는 웹 서비스가 데이터베이스를 올바르게 업데이트했는지 확인할 수 있는 JDBC Assertion이 내장되어 있습니다.

주장 포함

지정된 문자열의 존재를 검색합니다. 정규식도 지원합니다.

다음과 같이 WSDL 요청을 사용하여 이전 튜토리얼과 동일한 예를 계속 진행하겠습니다. http://www.dneonline.com/calculator.asmx.

1 단계 : 기본적으로 어설션은 없습니다.

  • 어설션 수는 어설션 탭에 표시됩니다.
  • 새로운 주장을 추가하려면 '새 주장 추가' 버튼을 클릭하세요.

어설션 포함

2 단계 : 지금,

  1. 어설션 카테고리를 선택합니다.
  2. 어설션 유형을 선택합니다.
  3. '추가' 클릭

어설션 포함

3 단계 : 응답에 문자열 '46'이 존재하는지 검증해 보겠습니다. '확인'을 클릭하세요.

참고: 대소문자를 무시하고 정규식을 추가할 수도 있습니다.

어설션 포함

4 단계 : 추가하면 즉시 어설션이 실행되어 VALID 또는 INVALID인지 표시합니다.

어설션 포함

5 단계 : 이제 'Contains Assertion in SoapUI'의 내용을 '47'로 변경하고 무슨 일이 일어나는지 살펴보겠습니다.

어설션 포함

6 단계 : Assertion이 실행되고 결과가 사용자에게 전달됩니다. 응답 내에 문자열 '47'이 없으므로 어설션이 실패했습니다.

어설션 포함

주장을 포함하지 않음

지정된 문자열이 존재하지 않는지 검색합니다. 정규식도 지원합니다.

1 단계 : 이제 '새 주장 추가' 버튼을 클릭한 후,

  1. 어설션 카테고리를 선택합니다.
  2. 어설션 유형 선택 - 이 경우 '포함하지 않음'
  3. '추가' 클릭

어설션이 포함되어 있지 않음

2 단계 : 응답에 'intA' 문자열이 있는지 검증해 보겠습니다. 'FromCurrency' 문자열을 입력하고 '확인'을 클릭하세요.

어설션이 포함되어 있지 않음

3 단계 : 어설션이 추가되자마자 실행되고 결과가 표시됩니다. 지금까지 두 개의 어설션을 추가했으므로 두 어설션 모두 실행되고 결과가 표시됩니다.

어설션이 포함되어 있지 않음

4 단계 : 이제 'Not Contains Assertion'의 내용을 변경하고 어떤 일이 일어나는지 살펴보겠습니다. "AddResult"라는 문자열이 존재하지 않는지 확인합니다.

어설션이 포함되어 있지 않음

5 단계 : 'AddResult' 문자열이 실제로 응답에 존재하므로 아래와 같이 'NOT Contains' 어설션이 실패합니다.

어설션이 포함되어 있지 않음

XPATH 일치 어설션

사용 xpath 대상 노드와 해당 값을 선택하는 표현식입니다. XPath는 XML 문서에서 노드를 선택하기 위한 XML 쿼리 언어입니다.

1 단계 : 이제 '새 주장 추가' 버튼을 클릭한 후,

  1. 어설션 카테고리를 선택합니다.
  2. 어설션 유형 선택 – 이 경우 'XPath 일치'
  3. '추가' 클릭

XPath 일치 어설션

2 단계 : XPath 추가 창이 열립니다.

SoapUI XPath를 추가하기 전에 NameSpace를 선언해야 합니다. XML 네임스페이스는 URI(Uniform Resource Identifier) ​​참조로 식별되는 이름 모음으로, XML 문서에서 요소 및 속성 이름으로 사용됩니다. SOAP UI XPath Assertion에서도 동일한 내용이 사용됩니다.

XML 네임스페이스를 선언하려면 '선언' 버튼을 클릭하기만 하면 됩니다. 그렇지 않으면 직접 네임스페이스를 수동으로 선언할 수도 있습니다.

네임스페이스를 선언한 후에는 생성된 네임스페이스를 사용하여 XPath를 참조해야 합니다.

'선언' 버튼을 클릭하면 두 개의 URI가 있으므로 두 개의 네임스페이스가 나타납니다. 그 중 하나는 스키마 URL이고 다른 하나는 실제 웹 서비스 URL에 해당합니다. XPath를 참조하는 동안 스키마 네임스페이스가 아닌 웹 서비스가 있는 실제 네임스페이스를 사용해야 합니다.

XPath 일치 어설션

네임스페이스 비누='http://schemas.xmlsoap.org/soap/envelope/'를 선언합니다.

네임스페이스 ns1='http://tempuri.org/' 선언;

XPath 일치 어설션

3 단계 : 이제 유효성을 검사해야 하는 XML 노드의 XPath를 입력해야 합니다.

//ns1:AddResult 사이에 포함된 노드의 값을 제공합니다. & ns1은 'http://tempuri.org/'를 가리키는 선언된 네임스페이스에 해당합니다.

XML을 입력한 후 '현재에서 선택'을 클릭하여 앞으로 비교할 현재 응답의 값을 선택해야 합니다.

XPath 일치 어설션

4 단계 : 지금까지,

  1. 네임스페이스를 선언한 후 유효성 검사가 필요한 XML 노드의 XPath를 입력했습니다.
  2. 현재 값을 예상 값으로 만들려면 '현재에서 선택'을 클릭해야 합니다.
  3. 필요한 경우 수정할 수 있는 현재 값이 사용자에게 표시됩니다.
  4. '저장'을 클릭합니다.

XPath 일치 어설션

5 단계 : SoapUI에 추가된 Assertion은 아래와 같이 표시됩니다.

XPath 일치 어설션

스크립팅 어설션

이 Assertion 기술은 수백 개의 Assertion을 관리하고 유지하는 것이 매우 어렵기 때문에 가장 널리 사용되는 기술입니다.

SOAP UI는 다음 중 하나를 사용합니다. Groovy 스크립팅 또는 JavaScript 스크립팅 어설션을 위해. 스크립팅 기술은 SOAP 테스트를 위한 프레임워크를 개발하는 데 채택됩니다. 스크립팅 어설션은 다음과 같은 상황에서 사용됩니다.

스크립팅을 사용하면 사용자가 각각 설정 및 해제 메서드를 사용하여 TestCase를 실행하기 전과 후에 일부 작업을 수행할 수 있습니다. 설정은 특정 메서드를 실행하기 전에 실행되는 프로시저(예: 객체 생성 및 초기화)이고 해제는 메서드를 실행한 후에 실행되는 프로시저(예: 객체 파괴 및 정리)입니다. 이 기능은 다른 어설션 유형에서는 사용할 수 없으며 코딩을 통해서만 수행할 수 있습니다.

이를 통해 사용자는 프로젝트 관련 설정을 초기화하거나 정리하기 위해 프로젝트 열기/닫기를 수행할 수 있으며 스크립팅 중에 매우 유용한 환경 변수로 작업할 수도 있습니다.

이는 동적 응답 콘텐츠를 주장하는 데 도움이 됩니다.

스크립팅 주장은 SOAP UI에 의해 미리 정의되지 않은 사용자 정의 주장을 만드는 데 사용됩니다.

SoapUI에서 스크립트 어설션 시연을 위해 이전에 생성한 테스트 케이스 'Add'인 계산기 WSDL을 사용합니다.

1 단계 : Groovy 스크립트를 추가하는 단계는 Assertion이 미리 정의된 것이 아니라는 점을 제외하면 다른 Assertion과 동일합니다. 대신 이는 내장된 것보다 더 큰 유연성을 제공하는 사용자 정의 어설션입니다.

어설션을 추가해야 하는 테스트 단계를 선택합니다.

스크립팅 어설션

아래와 같이 '어설션 추가' 버튼을 클릭합니다.

스크립팅 어설션

2 단계 : 이제 어설션 카테고리를 선택하세요.

  1. 이 경우에는 스크립트입니다.
  2. SoapUI 스크립트 어설션을 선택하면 연관된 하위 유형이 없습니다.
  3. '추가'를 클릭하세요.

스크립팅 어설션

3 단계 : 사용자가 응답 XML의 유효성을 검사하기 위해 사용자 정의 스크립트를 작성할 수 있는 스크립팅 대화 상자가 열립니다.

스크립팅 어설션

4 단계 : 이제 전환율을 검증하는 멋진 스크립트를 작성해 보겠습니다. 스크립트는 아래에 주석이 포함된 첨부되어 있습니다. 에 대한 지식을 가지고 있는 것이 좋습니다. Java 스크립트 또는 Groovy 자신만의 스크립트를 작성하기 전에 스크립트를 작성하세요.

//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)

//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"

//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")

//print the value of the result in the Output panel
log.info "The result value for integers is " + addResult

//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}
  1. 실행을 시작하려면 '실행' 버튼을 클릭하세요.
  2. 스크립트의 출력은 출력 창에 표시됩니다. 전환 가치와 최종 결과(합격 또는 실패)가 모두 인쇄되었습니다.
  3. '스크립트 어설션 통과'라는 정보가 표시됩니다. 확인을 클릭합니다.

참고: 스크립트가 구문적으로 정확하다면 최종 정보 팝업에는 항상 '스크립트 어설션 통과' 메시지가 표시됩니다. 스크립트 내의 주장과 상관 관계가 없습니다.

스크립팅 어설션

확인을 클릭하십시오.

5 단계 : 이제 어설션 탭에는 이 테스트 모음에 대해 추가한 모든 어설션과 각 어설션에 대한 상태가 표시됩니다.

스크립팅 어설션

6 단계 : 현재

  1. 네비게이터 트리에서 테스트 스위트를 선택하십시오.
  2. '실행' 버튼을 클릭하세요
  3. 전체 테스트 모음에 대한 결과가 표시됩니다.

스크립팅 어설션

Xquery 일치 어설션

Xquery 표현식을 사용하여 대상 속성에서 콘텐츠를 선택합니다. SoapUI에서 XQuery 어설션을 더 잘 이해하려면 훨씬 더 큰 응답 XML이 필요합니다. 아래와 같이 다른 WSDL을 하나 더 가져오겠습니다. http://www.webservicex.net/medicareSupplier.asmx?WSDL

1 단계 : 기존 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 'WSDL 추가'를 선택합니다.

Xquery 일치 어설션

2 단계 : 기존 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 'WSDL 추가'를 선택합니다. 다른 옵션은 기본값으로 두고 '확인' 버튼을 클릭하세요.

Xquery 일치 어설션

3 단계 : 모든 작업은 아래와 같이 나열되어 있습니다.

Xquery 일치 어설션

4 단계 : 이제 테스트 케이스 우리가 만든 것과 동일한 테스트 스위트 내에서 지원 통화 변환기.

Xquery 일치 어설션

5 단계 : 테스트케이스 이름을 입력하고 '확인' 버튼을 클릭하세요.

Xquery 일치 어설션

6 단계 : 테스트케이스는 아래와 같이 생성됩니다.

Xquery 일치 어설션

7 단계 : 추가
아래와 같이 'Soap Test Request' 유형의 새로운 테스트 단계가 표시됩니다.

Xquery 일치 어설션

8 단계 : 테스트 단계의 이름을 입력합니다. 더 의미 있는 Supply_by_City라고 가정해 보겠습니다. '확인'을 클릭하세요.

Xquery 일치 어설션

9 단계 : 선택 Opera검증하고 싶은 내용입니다. 이 경우에는 'MedicareSupplierSoap -> GetSupplierByCity'입니다. '확인'을 클릭합니다.

Xquery 일치 어설션

10 단계 : 테스트 케이스 이름을 입력하고 '확인'을 클릭합니다.

Xquery 일치 어설션

11 단계 : 요청 XML 개요는 아래와 같이 표시됩니다.

Xquery 일치 어설션

12 단계 : 이제 '뉴욕' 시에 대한 모든 공급업체 정보를 찾아보겠습니다.

그렇게 하려면 코드에 다음 줄을 추가하세요.

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

아래 URL의 WSDL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Xquery 일치 어설션

13 단계 : 테스트를 실행하면 아래와 같은 응답을 받습니다.

Xquery 일치 어설션

14 단계 : 모든 공급업체 번호를 검증해야 한다고 가정해 보겠습니다. 수백 개의 XPath Assertion이 필요하므로 XPath Assertion을 사용할 수 없습니다. 따라서 이 경우에는 XQuery의 사용이 불가피합니다.

XQuery Assertion은 본질적으로 반복적인 XML 응답 그룹의 유효성을 검사하는 데 도움이 됩니다.

Xquery 일치 어설션

15 단계 : 이제 '어설션 추가'를 클릭하세요.

  1. 이 경우 '어설션 카테고리' – 속성 콘텐츠를 선택합니다.
  2. 어설션 유형을 'XQuery 어설션'으로 선택합니다.
  3. '추가'를 클릭하세요.

Xquery 일치 어설션

16 단계 : XPath Assertion과 유사하게 네임스페이스를 선언해야 합니다.

  1. '선언' 버튼을 클릭하면 SOAP UI가 자동으로 네임스페이스를 선언할 수 있습니다. 선언 버튼을 클릭하면 '대신 스키마에서 네임스페이스를 선언하세요'라는 메시지가 있는 'POP up'이 사용자에게 표시됩니다. 아래에 표시된 대로 진행하려면 '예'를 클릭합니다.

    참고 : '선언 버튼'을 누르면 네임스페이스 선언으로 다른 URL이 표시될 수 있지만 코딩 시에는 실제 웹 서비스 위치 네임스페이스가 고려됩니다.

    Xquery 일치 어설션

  2. 모든 공급업체 번호를 검색하려면 XPath 쿼리를 작성해야 하며 이를 <SupplierNumber> 내에 배치하고 태그.
  3. 현재 응답에서 실행될 '현재에서 선택'을 클릭하세요.
  4. '현재에서 선택'을 클릭하면 모든 공급업체 번호가 나열됩니다.
  5. '저장'을 클릭합니다.
// Namespace declaration
declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.webservicex.net/';
declare namespace x = '';

// Placing the result in Myresult Tags

{
// Iterating through all the supplier number 
for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData

//Return all the Supplier number within ‘SupplierNumber’ Tags.
return {data($x/ns1:SupplierNumber)}
}

Xquery 일치 어설션

17 단계 : XQuery Assertion이 실행되고 아래와 같이 'Assertion' 패널에 최종 결과가 표시됩니다. 이제 모든 공급업체 번호 정보를 검증한 Xquery 어설션을 성공적으로 추가했습니다. 요청이 웹 서버로 전송될 때마다 실제와 동일한 내용이 비교됩니다.

참고: 실제 값은 표시되지 않습니다. 모든 실제 값이 예상 값과 동일하면 VALID를 표시하고 그렇지 않으면 'Failed'를 표시합니다.

Xquery 일치 어설션

내장된 어설션을 언제 사용해야 합니까?

  • 내장된 어설션 중 하나를 사용하여 유효성을 검사할 수 있을 정도로 응답이 짧은 경우.
  • 웹 서버에서 전송된 응답이 본질적으로 항상 정적인 경우 내장 어설션을 사용할 수도 있습니다. 동적이라면 내장된 어설션을 사용하여 이를 어설션할 수 없습니다.
  • 시간 초과 어설션 및 보안 어설션과 같은 내장 어설션의 사용이 불가피해지는 경우.
  • 내장된 어설션은 테스트를 반복할 필요가 없는 일회성 사용에 매우 적합합니다.

어설션 옵션

생성된 어설션은 아래에 강조 표시된 제어판을 사용하여 가장 잘 제어할 수 있습니다.

어설션 옵션

생성된 어설션을 사용하면 테스터가 어설션 도구 상자에서 다음 사항을 구성할 수 있습니다.

선택권 상품 설명

어설션 옵션

선택한 어설션의 순서가 위로 이동합니다.

어설션 옵션

선택한 어설션이 순서 아래로 이동합니다.

어설션 옵션

선택한 어설션을 제거합니다.

어설션 옵션

선택한 어설션을 재구성/편집합니다.
  • 다음은 PRO 버전의 SOAP UI에서만 사용할 수 있는 기능입니다. PRO 버전은 또한 생성된 어설션에 유효성 검사 계층을 하나 더 추가할 수 있도록 어설션을 그룹화하는 데 도움이 됩니다.
  • AND: 모든 주장은 VALID 주장으로 평가되어 PASSED 그룹 조건이 발생합니다. OR: 그룹 내 주장 중 최소한 하나는 그룹 통과 조건을 주장하기 위해 VALID여야 합니다.

  • Pro 버전도 허용 어설션 복제: 이 옵션을 사용하면 테스터는 동일하거나 다른 프로젝트의 다른 테스트 단계에 어설션을 복사할 수 있습니다.
  • 어설션 비활성화/활성화: 이 옵션을 사용하면 그룹화되거나 그룹화되지 않은 어설션을 비활성화하거나 활성화할 수 있습니다. 어설션이 비활성화되면 회색으로 표시되고 테스트 케이스가 실행되면 비활성화된 어설션은 실행되지 않습니다.
  • 그룹 해제 어설션: 테스터가 결정한 경우 그룹화된 어설션을 그룹 해제할 수 있습니다.

다양한 어설션 유형에서 사용할 수 있는 전체 메소드 목록

어설션 메커니즘

상품 설명

부동산 내용
포함 지정된 문자열의 존재를 검색합니다. 정규식도 지원합니다.
포함하지 않음 지정된 문자열이 존재하지 않는지 검색합니다. 정규식도 지원합니다.
XPath 일치 XPath 표현식을 사용하여 대상 노드와 해당 값을 선택합니다.
XQuery 일치 Xquery 표현식을 사용하여 대상 속성에서 콘텐츠를 선택합니다.
규정 준수, 상태, 표준
HTTP 모든 리소스 다운로드 다운로드 후 HTML 문서의 유효성을 검사하며 HTML을 포함하는 모든 속성에 적용됩니다.
잘못된 HTTP 상태 코드 HTML 응답에 정의된 코드 목록에 없는 상태 코드가 포함되어 있는지 확인합니다.
SOAP 오류가 아님 마지막으로 수신된 메시지가 SOAP 오류가 아닌지 확인합니다. SOAP 테스트 단계에만 적용 가능하다는 것은 매우 분명합니다.
스키마 준수 마지막으로 수신된 메시지가 WSDL 또는 WADL 표준 스키마 정의를 준수하는지 확인합니다. SOAP 및 REST 테스트 단계에 적합합니다.
SOAP 오류 마지막으로 수신된 메시지가 SOAP 오류인지 확인합니다. 이는 'NOT SOAP' 오류 어설션의 반대입니다.
SOAP 응답 마지막으로 수신된 응답이 유효한 SOAP 응답인지 확인하고 SOAP 테스트 요청 단계에만 유효합니다.
유효한 HTTP 상태 코드 HTML 응답에 정의된 코드 목록에 있는 상태 코드가 포함되어 있는지 확인합니다. 이는 '잘못된 HTTP 상태 코드' 어설션의 반대입니다.
WS-주소 지정 요청 마지막으로 수신된 요청에 적절한 WS-Addressing 헤더가 포함되어 있는지 확인합니다.
WS-주소 지정 응답 마지막으로 수신된 응답에 적절한 WS-Addressing 헤더가 포함되어 있는지 확인합니다.
WS-보안 상태 마지막으로 수신된 메시지에 유효한 WS-Security 헤더가 포함되어 있고 SOAP 요청에 대해서만 유효한지 확인합니다.
스크립트
스크립트 어설션 사용자가 사용자 정의 검증을 수행하기 위해 사용자 정의 스크립트를 실행할 수 있습니다.
서비스 수준 계약 (SLA)
응답 SLA 마지막으로 수신된 응답의 응답 시간이 정의된 제한 내에 있는지 확인합니다.
제이엠에스
JMS 상태 테스트 단계의 JMS 요청이 성공적으로 실행되었고 JMS 끝점이 있는 테스트 단계에 대해 유효한지 확인합니다.
JMS 시간 초과 테스트 단계의 JMS 응답이 지정된 기간보다 오래 걸리지 않았는지 확인합니다.
보안
민감한 정보 노출 응답 메시지가 대상 시스템에 대한 중요한 정보를 노출하지 않는지 확인합니다. REST, SOAP 및 HTTP 테스트 단계에 이 어설션을 사용할 수 있습니다.

위의 주장이 포함된 SOAPUI 프로젝트를 다운로드하세요.

일반적인 오류 및 문제 해결

올바른 네임스페이스를 사용하세요. 네임스페이스는 웹 서비스가 위치한 URL이어야 합니다.

스크립팅 어설션을 개발하는 동안 오류가 발생하면 'log.info'를 사용하여 변수 내용을 인쇄하세요.

원하는 출력이 나오지 않으면 요청에 유효한 입력이 전달되었는지 확인하세요.

예를 들어 통화 변환기에서 'intA'를 정수가 아닌 'x'로 입력하면 출력에 'SOAP-Client'라는 오류 코드가 표시됩니다. 이는 문제가 전달되는 매개 변수에 있다는 의미입니다. 고객 입장에서.

일반적인 오류 및 문제 해결

일반적인 오류 및 문제 해결

XPATH 및 XQuery 어설션을 사용하는 동안 올바른 구문을 사용하는지 확인하십시오. 위의 주장을 사용하는 동안 콜론(:) 대신 도트(.)를 사용하면 안 됩니다. 구문은 //namespace:Tagname이며 //namespace.tagname이 아닙니다. 그렇게 하면 태그 이름이 정확하더라도 '현재 응답에 일치하는 항목이 없습니다'라는 메시지가 표시될 수 있습니다.

일반적인 오류 및 문제 해결