Bạn được cung cấp một endpoint SOAP: có thể là dịch vụ chuyển đổi tiền tệ cũ của hệ thống thanh toán hoặc WebService .NET từ đối tác. Bạn cần gọi endpoint, kiểm tra phản hồi có đúng hợp đồng và tự động hóa việc xác nhận này khi mã nguồn thay đổi. Công cụ REST đơn thuần thường không đủ vì SOAP yêu cầu XML envelope, Content-Type cụ thể và thường đi kèm WSDL mô tả các hoạt động.
Apidog hỗ trợ SOAP/WebService cùng REST, GraphQL và gRPC trong một workspace. Bài này hướng dẫn hai cách làm:
- Gửi SOAP request thủ công.
- Nhập WSDL để tạo endpoint và environment tự động.
Nếu cần so sánh các giao thức, xem REST, GraphQL, gRPC và SOAP. Để tham khảo cấu trúc SOAP envelope chính thức, xem đặc tả W3C SOAP.
SOAP là gì và tại sao cần xử lý khác REST?
SOAP (Simple Object Access Protocol) là giao thức giao tiếp dựa trên XML, giúp các hệ thống khác nền tảng hoặc ngôn ngữ lập trình giao tiếp qua một hợp đồng chung. Ví dụ, Java client có thể gọi dịch vụ .NET mà không cần biết chi tiết triển khai nội bộ.
Khi kiểm tra SOAP, cần lưu ý:
- Request và response đều là XML có cấu trúc.
- SOAP thường chạy qua HTTP/HTTPS.
- Cấu trúc envelope, namespace và body phải tuân thủ chặt chẽ.
- Một số dịch vụ dùng WS-Security để xác thực hoặc mã hóa thông điệp.
Nếu chưa quen XML, hãy tham khảo tài liệu XML của MDN.
Không thể gửi một JSON body kiểu REST đến SOAP endpoint. Bạn cần:
-
Content-Typeđúng. - XML body chứa SOAP envelope hợp lệ.
- Namespace và tên operation chính xác.
- Kiểm tra XML response hoặc SOAP Fault.
Để tìm hiểu sâu hơn về cấu trúc XML của SOAP, xem SOAP API và XML.
Trước khi bắt đầu
Để gửi SOAP hoặc WebService request, Apidog cần phiên bản 2.1.31 trở lên.
Trước khi cấu hình request:
- Mở Apidog.
- Kiểm tra phiên bản hiện tại.
- Cập nhật nếu đang dùng bản thấp hơn
2.1.31.
Chuẩn bị các thông tin sau từ dịch vụ mục tiêu:
- URL endpoint
- Tên operation
- Danh sách tham số
- File WSDL, nếu có
WSDL là tài liệu mô tả operation, input, output và địa chỉ dịch vụ. Bạn có thể tham khảo chuẩn WSDL.
Cách A: Gửi SOAP request thủ công
Dùng cách này khi bạn đã có endpoint và biết operation cần gọi.
Bước 1: Thiết lập Content-Type
SOAP không tự suy ra header như nhiều REST request. Thêm một trong hai giá trị sau vào phần Headers:
Content-Type: text/xml; charset=utf-8
Hoặc:
Content-Type: application/soap+xml
Quy tắc thực tế:
- SOAP 1.1 thường dùng
text/xml; charset=utf-8. - SOAP 1.2 thường dùng
application/soap+xml.
Nếu chưa chắc, kiểm tra WSDL hoặc tài liệu dịch vụ. Nếu server trả lỗi liên quan đến content type, thử giá trị còn lại.
Bước 2: Đặt body là XML và thêm SOAP envelope
Trong Apidog, đặt loại body là xml, sau đó dán SOAP envelope.
Ví dụ gọi operation NumberToWords với tham số ubiNum:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.dataaccess.com/webservicesserver/">
<soap:Body>
<web:NumberToWords>
<web:ubiNum>1234</web:ubiNum>
</web:NumberToWords>
</soap:Body>
</soap:Envelope>
Các phần quan trọng:
-
soap:Envelope: container của toàn bộ SOAP message. -
soap:Body: chứa operation thực tế. -
web:NumberToWords: operation cần gọi. -
web:ubiNum: tham số đầu vào. -
xmlns:web: namespace phải khớp với định nghĩa của dịch vụ.
Không đoán namespace. Hãy lấy namespace trực tiếp từ WSDL hoặc tài liệu API.
Bước 3: Gửi request và kiểm tra XML response
Sau khi gửi, response thường là một SOAP envelope khác:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:NumberToWordsResponse xmlns:m="http://www.dataaccess.com/webservicesserver/">
<m:NumberToWordsResult>one thousand two hundred and thirty four</m:NumberToWordsResult>
</m:NumberToWordsResponse>
</soap:Body>
</soap:Envelope>
Checklist kiểm tra response:
- Có
soap:Envelope. - Có
soap:Body. - Có node response, ví dụ
NumberToWordsResponse. - Giá trị trong node result đúng với kỳ vọng.
- Không có
soap:Fault.
Với dịch vụ thực tế, quy trình không thay đổi. Ví dụ:
- Gọi
ConvertCurrencyvớifromCurrency,toCurrency,amount. - Gọi
GetOrderStatusvớiorderId. - Đọc giá trị trả về từ response envelope.
- Xác nhận giá trị đó đúng với hợp đồng API.
Tài liệu WebService của Apidog tại webservice.apidog.io có thêm cấu hình và SOAP envelope mẫu.
Cách B: Nhập WSDL để tạo endpoint
Nếu dịch vụ có nhiều operation, không nên tự viết từng SOAP envelope. Hãy nhập WSDL để Apidog tạo endpoint và environment.
Các bước nhập WSDL
- Vào Settings.
- Chọn Import Data.
- Chọn
WSDL. - Tải lên file
.wsdlhoặc.xml. - Xem trước danh sách endpoint Apidog phân tích từ file.
- Mở tab
Environmentsvà kiểm tra địa chỉ dịch vụ. - Nhấp
Xác nhận (Confirm). - Chọn environment vừa được tạo ở góc trên bên phải.
- Gửi request.
Sau khi nhập, mỗi operation trong WSDL sẽ xuất hiện dưới dạng endpoint có thể gọi.
Kiểm tra service address trước khi xác nhận
Đây là bước dễ bị bỏ qua nhất.
Địa chỉ dịch vụ trong WSDL quyết định nơi các request được gửi đến. WSDL có thể chứa:
- Host staging thay vì production.
- URL placeholder.
- Endpoint đã cũ.
- Base URL không phù hợp với environment hiện tại.
Trước khi nhấp Xác nhận (Confirm), hãy mở Environments và kiểm tra service address.
Luôn chọn environment đã nhập
Base URL nằm trong environment được tạo từ WSDL. Nếu không chọn environment này, request có thể thiếu base URL hoặc gửi đến sai địa chỉ.
Quy trình an toàn:
- Nhập WSDL.
- Kiểm tra service address.
- Xác nhận import.
- Chọn environment vừa tạo.
- Gửi request.
Nếu đang chuyển từ công cụ khác, xem hướng dẫn nhập dự án SOAP.
Việc nhập WSDL được tài liệu hóa cho file
.wsdlvà.xml. Nhập WSDL bằng URL hoặc dán trực tiếp nội dung WSDL không được tài liệu hóa, vì vậy nên tải file lên.
Chuyển từ SoapUI
Nếu SOAP test hiện nằm trong SoapUI, bạn không cần xây dựng lại toàn bộ từ đầu.
Quy trình chuyển đổi cơ bản:
- Xuất hoặc giữ lại file WSDL.
- Nhập WSDL vào Apidog theo Cách B.
- Kiểm tra operation và environment được tạo.
- Tạo hoặc chuyển các test scenario cần thiết.
Lợi ích chính là hợp nhất workspace: SOAP service, REST endpoint, GraphQL request, mock, tài liệu và test scenario có thể nằm trong cùng một dự án.
Xem thêm bài so sánh Apidog với SoapUI.
Xác nhận response và xây dựng test scenario
Một request trả về thành công chỉ chứng minh endpoint còn hoạt động. Test thực sự cần xác nhận response đúng với hợp đồng.
Sau khi request SOAP trả về, hãy kiểm tra:
- Node response mong đợi có tồn tại.
- Node result có tồn tại.
- Giá trị result đúng kiểu dữ liệu.
- Giá trị nằm trong phạm vi hoặc tập giá trị hợp lệ.
- Response không chứa SOAP Fault.
Ví dụ:
- Với dịch vụ chuyển đổi tiền tệ, xác nhận số tiền trả về là một số hợp lệ trong phạm vi dự kiến.
- Với dịch vụ đơn hàng, xác nhận trạng thái thuộc tập giá trị hợp lệ như
Pending,Paid,Shippedhoặc các giá trị mà hợp đồng dịch vụ cho phép.
Bạn cũng có thể tạo scenario theo chuỗi:
- Tạo đơn hàng.
- Lấy
orderIdtừ response. - Gọi
GetOrderStatus. - Kiểm tra trạng thái đơn hàng.
Hướng dẫn viết kịch bản kiểm tra với Apidog trình bày cách trích xuất dữ liệu từ response và truyền sang request tiếp theo.
Mẫu này không phụ thuộc giao thức. Một scenario có thể kết hợp SOAP với REST endpoint xung quanh nó.
SOAP và WS-Security
Các SOAP endpoint bảo mật thường dùng WS-Security để xác thực hoặc mã hóa message.
Trong trường hợp đó, thêm khối bảo mật wsse vào phần header của SOAP envelope. Cơ chế gửi request không thay đổi:
- Đặt
Content-Type. - Đặt body là
xml. - Thêm SOAP envelope, bao gồm security header.
- Gửi request.
- Kiểm tra response hoặc SOAP Fault.
Tự động hóa với Apidog CLI
Sau khi lưu request hoặc test scenario, bạn có thể dùng Apidog CLI để chạy từ dòng lệnh.
Cài đặt với Node.js v16 trở lên:
npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
Chạy test scenario đã lưu:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli
Ý nghĩa tham số:
-
-t: ID của test scenario. -
-e: ID environment. -
-r: định dạng report, ví dụcli,htmlhoặcjunit.
Bạn có thể chỉ định nhiều report bằng dấu phẩy:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli,html,junit
Tài liệu xác nhận CLI chạy các test scenario và test suite đã lưu. Tuy nhiên, tài liệu không nêu rõ liệu mọi scenario có bước SOAP đều hỗ trợ chạy headless hay không. Vì vậy, hãy xác minh scenario SOAP của bạn trong CI trước khi coi đó là giả định mặc định.
Xem cách tích hợp vào pipeline tại hướng dẫn CI/CD của Apidog CLI.
Câu hỏi thường gặp
Tôi nên dùng Content-Type nào cho SOAP?
Dùng một trong hai giá trị:
text/xml; charset=utf-8
application/soap+xml
SOAP 1.1 thường dùng text/xml; charset=utf-8, còn SOAP 1.2 thường dùng application/soap+xml. Kiểm tra WSDL hoặc tài liệu dịch vụ nếu không chắc chắn.
Tôi có cần gói trả phí để kiểm tra SOAP trong Apidog không?
Yêu cầu được nêu là sử dụng Apidog phiên bản 2.1.31 trở lên. Không có giới hạn cấp bậc hoặc hạn chế self-hosted nào được nêu cụ thể cho SOAP hoặc WSDL.
Tôi có thể nhập WSDL từ URL không?
Tài liệu mô tả nhập WSDL bằng file .wsdl hoặc .xml. Nhập từ URL hoặc dán trực tiếp nội dung WSDL không được tài liệu hóa, vì vậy hãy tải file lên.
Tôi có thể kiểm tra SOAP và REST trong cùng dự án không?
Có. Apidog hỗ trợ các loại request trong cùng một workspace, nên bạn có thể đặt SOAP operation cạnh REST endpoint, GraphQL request và test scenario.
Nếu cần kiểm tra GraphQL, xem kiểm tra GraphQL API trong Apidog.
WSDL đã nhập gửi request đến sai server. Vì sao?
Hai nguyên nhân phổ biến:
- Service address trong
Environmentskhông đúng khi import WSDL. - Bạn chưa chọn environment đã nhập, nên Base URL không được áp dụng.
Hãy kiểm tra lại service address, sau đó chọn đúng environment trước khi gửi request.
Tóm lại
Để kiểm thử SOAP trong Apidog, bạn có hai lựa chọn:
-
Gửi thủ công: đặt
Content-Type, chọn bodyxml, dán SOAP envelope và kiểm tra response. - Nhập WSDL: tải file WSDL, kiểm tra service address, chọn environment được tạo và gọi các endpoint đã import.
Cả hai cách đều giúp bạn tạo kiểm tra lặp lại để xác nhận WebService vẫn tuân thủ hợp đồng. Tải xuống Apidog phiên bản 2.1.31 trở lên, nhập WSDL và đưa SOAP service vào cùng quy trình kiểm thử với các API khác.
Top comments (0)