12/08/2018, 11:45

Assertion trong soapUI

Assertions in SoapUI Trong bài trước, chúng ta đã được giới thiệu cơ bản về SoapUI như tạo project, add WSDL, send request, receive response, tạo test suite, test case. Bài viết này sẽ giới thiệu về Assertion trong SoapUI. 1. Assertion Sau khi một request được gửi đến web server thì một ...

Assertions in SoapUI

Trong bài trước, chúng ta đã được giới thiệu cơ bản về SoapUI như tạo project, add WSDL, send request, receive response, tạo test suite, test case. Bài viết này sẽ giới thiệu về Assertion trong SoapUI.

1. Assertion

Sau khi một request được gửi đến web server thì một response sẽ được trả về. Chúng ta cần phải kiểm tra nếu các response có chứa các dữ liệu mà chúng ta mong đợi. Để kiểm tra các respone ấy, chúng ta cần dùng đến assertion.

SoapUI Assertions sẽ thực hiện so sánh một phần hoặc tất cả các response message với kết quả mong đợi. Chúng ta có thể sử dụng rất nhiều assertion được cung cấp bởi SoapUI vào bất kỳ test step nào. Mỗi loại assertion được sử dụng để validate response message như là matching text, comparing XPATH hoặc cũng có thể viết script truy vấn dựa trên nhu cầu khi kiểm thử thực tế.

** 2. Một số loại Assertion**

  • Contains Assertion và Not contains Assertion: Contains Assertion và Not contains Assertion thường được sử dụng trong trường hợp cần kiểm tra sự tồn tại hoặc không tồn tại của một chuỗi. Nó cũng support trong việc kiểm tra regular expression.

  • XPath Match Assertion: Sử dụng biểu thức XPath để nhận message, validate node và giá trị của node đó với giá trị mong muốn. XPath là một ngôn ngữ truy vấn XML cho việc lựa chọn các node của một tài liệu XML.

  • XQuery match assertion: XQuery match assertions làm việc như XPath Assertion chỉ khác nó sử dụng biểu thức Xquery để chọn XML cần validate, trong đó có một số lợi thế riêng biệt sử dụng trong các trường hợp kiểm thử phức tạp.

** 3. Làm việc với Assertion**

Các demo dưới đây sẽ sử dụng Medicare Supplier web service. Url: http://www.webservicex.net/medicareSupplier.asmx?WSDL

  • Tạo Soap project Medicare Supplier và tạo testsuite, testcase cho project (như hướng dẫn từ bài viết trước)

24-Sep-15 6-09-53 AM.png

  • Contains Assertion
    • Số assertion trong testcase được hiển thị trên Assertion Tab và mặc định là 0 assertion.

    • Click "Add new Assertion" button để thêm mới 1 assertion: 24-Sep-15 6-49-30 AM.png

    • Lựa chọn Assertion Category và Assertion Type và click "Add new Assertion" button để thêm mới 1 assertions: 24-Sep-15 6-57-05 AM.png

    • Nhập "New York" vào text field và click OK: 24-Sep-15 7-21-41 AM.png

    • Note: Checkbox Ignore case in comparison sẽ bỏ check trường hợp giá trị kết quả là chữ hoa hay chữ thường. Có thể thêm regular expression vào assertions.

    • Tạo 1 assertions khác, nhập "ABC" vào text field và click OK

    • Thực thi testcase và kiểm tra kết quả. Kết quả được hiển thị trên Assertions tab là Valid hoặc Not Valid: 24-Sep-15 7-36-58 AM.png

  • ** Not Contains Assertion**
    • Sử dụng GetSupplierByZipCode tạo Not contains Assertion.
    • Click "Add new Assertion" button để thêm mới 1 assertion trên . Lựa chọn Assertion Category và Assertion Type và click "Add new Assertion" button để thêm mới 1 assertions: 24-Sep-15 7-46-12 AM.png
    • Nhập "10029" - là zip code của New York vào text field và click OK: 24-Sep-15 7-50-48 AM.png
    • Tạo 1 assertion not contains khác: 24-Sep-15 7-54-06 AM.png
    • Thực thi testcase và kiểm tra kết quả. Kết quả được hiển thị trên Assertions tab là Valid hoặc Not Valid: 24-Sep-15 7-56-32 AM.png
    • Asssertions not contains sẽ trả về true nếu giá trị kết quả mong muốn không tìm thấy, và ngược trả về fail nếu tìm thấy giá trị trên response message.
  • XPath Match Assertion
    • Sử dụng GetSupplierByCity testcase để tạo XPath Match Assertion
    • Click "Add new Assertion" button để thêm mới 1 assertion trên . Lựa chọn Assertion Category và Assertion Type và click "Add new Assertion" button để thêm mới 1 assertions: 24-Sep-15 8-04-45 AM.png
    • Trước khi thêm XPath, chúng ta cần khai báo NameSpace. Một NameSpace là một collection được định nghĩa bởi Uniform Resource Identifier (URI), được sử dụng trong XML Document như là element và attribute names. SOAP UI XPath Assertion cũng tương tự như vậy.
    • Để khai báo XML Namespace, click button "Declare". Hiện thị trên màn hình sau khi click button Declare là một Schema URL và một web service URL tương ứng. 24-Sep-15 8-12-49 AM.png
    • Nếu thực thi GetSupplierByCity request nó sẽ trả về response bao gồm danh sách dữ liệu của một thành phố nào đó. Ở đây chúng ta sử dụng Xpath Match expression để truy suất dữ liệu của New York.
    • Nhập XPatch của XML node cần validate: //ns1:SupplierData[1] trả về value của node <SupplierData> & </SupplierData> thứ 1.
    • Sau khi nhập XPath, click button "Select from current", value của response hiện tại sẽ được hiển thị: 24-Sep-15 8-39-55 AM.png
    • Click button "Save" và Assertion vừa tạo hiển thị như hình dưới đây: 24-Sep-15 9-16-26 AM.png
  • XQuery Match Assertion
    • Sử dụng GetSupplierByCity testcase để tạo XPath Match Assertion
    • Click "Add new Assertion" button để thêm mới 1 assertion trên . Lựa chọn Assertion Category và Assertion Type và click "Add new Assertion" button để thêm mới 1 assertions: 25-Sep-15 12-36-01 AM.png
    • Tương tự như XPath Assertion, chúng ta cần phải khai báo Namespace. Clicking button "Declare", nhập XPath Query và đặt nó ở giữa thẻ SupplierNumber> và </ SupplierNumber>.
    • Click 'Select from the Current', tất cả Supplier Number được hiển thị: 25-Sep-15 1-05-09 AM.png
    • Click button "Save", XQuery Assertion được thực thi và hiển thị các kết quả cuối cùng trong 'Assertion' Panel như hình dưới đây. Bây giờ chúng ta đã thêm thành công một XQuery Assertion, sử dụng để validated thông tin của tất cả supplier Number. 25-Sep-15 1-15-07 AM.png

Trên đây là bài giới thiệu về Assertion và demo một số loại Assertion như Contains Assertion và Not contains Assertion, XPath Match Assertion, XQuery match assertions trong SoapUI sử dụng khi kiểm tra response message Web service. Rất mong nhận được sự góp ý từ bạn đọc             </div>
            
            <div class=

0