ข้อกล่าวอ้างใน SoapUI: สคริปต์, XQuery, ประเภท XPath

⚡ สรุปอย่างชาญฉลาด

ข้อกล่าวอ้างใน SoapUI จุดตรวจสอบเหล่านี้เป็นตัวตัดสินว่าการตอบสนองของเว็บเซอร์วิสนั้นถูกต้องหรือไม่ โดยเปลี่ยนคำขอที่เพียงแค่ดำเนินการให้เป็นการทดสอบที่ผ่านหรือล้มเหลวบนเนื้อหาจริงที่ตรวจสอบได้

  • 🔘 หมวดหมู่: เนื้อหาทรัพย์สิน, การปฏิบัติตาม/สถานะ/มาตรฐาน, สคริปต์, SLA, JMS และความปลอดภัย
  • ☑️ ประกอบด้วย: ยืนยันว่ามีสตริงอยู่ในคำตอบ โดยรองรับการใช้ regular expression
  • ไม่ประกอบด้วย: ยืนยันว่าสตริงนั้นหายไป ซึ่งมีประโยชน์สำหรับโทเค็นข้อผิดพลาดและฟิลด์ที่รั่วไหล
  • 🧪 การจับคู่ XPath: ก่อนอื่นให้ประกาศเนมสเปซ จากนั้นเลือกโหนดเป้าหมายหนึ่งโหนดแล้วเปรียบเทียบค่าของโหนดนั้น
  • 🛠️ XQuery Match: ตรวจสอบความถูกต้องของชุดโหนดที่ซ้ำกัน ซึ่งหากไม่ใช้ฟังก์ชันนี้จะต้องใช้การตรวจสอบ XPath หลายร้อยครั้ง
  • 📊 สคริปต์: Groovy คำสั่ง assertion ใช้สำหรับจัดการการตอบสนองแบบไดนามิก และตรรกะในการตั้งค่าหรือยกเลิกการตั้งค่า
  • 🔍 การแก้ไขปัญหา: การใช้ namespace ที่ไม่ถูกต้องและการใช้จุดแทนเครื่องหมายโคลอนเป็นสาเหตุหลักของความล้มเหลว

ข้อกล่าวอ้างใน SoapUI

การยืนยันคืออะไร?

การยืนยันหมายถึงการกระทำที่ยืนยันหรือระบุบางสิ่งบางอย่าง นอกจากนี้ยังสามารถตีความได้ว่าเป็นจุดตรวจสอบหรือจุดตรวจสอบ

เมื่อส่งคำขอไปยังเว็บเซิร์ฟเวอร์แล้ว จะได้รับคำตอบกลับมา เราจำเป็นต้องตรวจสอบว่าคำตอบนั้นมีข้อมูลที่เราคาดหวังหรือไม่ ในการตรวจสอบคำตอบ เราจำเป็นต้องใช้ assertion หากไม่มี assertion ขั้นตอนการทดสอบจะพิสูจน์ได้เพียงว่าบริการตอบกลับมาเท่านั้น ไม่ได้พิสูจน์ว่าตอบกลับมาอย่างถูกต้อง ซึ่งเป็นเหตุผลว่าทำไมทุกๆ การทดสอบจึงต้องใช้ assertion การทดสอบ API ควรพกติดตัวอย่างน้อยหนึ่งชิ้น

ประเภทของการยืนยัน

มีหลายวิธีในการแสดงความคิดเห็น แต่เราจะเน้นไปที่วิธีที่ใช้กันทั่วไป SoapUI ประเภทการยืนยันขณะตรวจสอบความถูกต้องของการตอบกลับ ด้านล่างนี้คือหมวดหมู่ที่มีอยู่ในเวอร์ชันโอเพนซอร์ส SoapUI.

  1. เนื้อหาทรัพย์สิน
  2. มาตรฐานสถานะการปฏิบัติตาม
  3. ต้นฉบับ
  4. SLA
  5. จส
  6. ⁠ความปลอดภัย

กล่องโต้ตอบจะจัดกลุ่มข้อความยืนยันทั้งหมดไว้ภายใต้หมวดหมู่เหล่านั้น ดังที่แสดงในภาพหน้าจอด้านล่าง

หมวดหมู่การยืนยันที่ระบุไว้ใน SoapUI เพิ่มกล่องโต้ตอบการยืนยัน
ประเภทของการยืนยันใน SoapUI

นอกเหนือจากรายการที่กล่าวมาข้างต้นแล้ว เวอร์ชัน Pro ยังมี JDBC Assertion ในตัว ซึ่งเราสามารถใช้ตรวจสอบได้ว่าเว็บเซอร์วิสได้อัปเดตฐานข้อมูลอย่างถูกต้องหรือไม่

หมายเหตุเกี่ยวกับเวอร์ชัน: ปัจจุบัน SoapUI เอกสารยังระบุถึง เจดีบีซี หมวดหมู่ (สถานะ JDBC และหมดเวลา JDBC) ควบคู่ไปกับหมวดหมู่ข้างต้น และ เนื้อหาข้อความ การยืนยันภายในเนื้อหาคุณสมบัติเพื่อการเปรียบเทียบ XML ที่สมบูรณ์ยิ่งขึ้น รุ่นเชิงพาณิชย์ที่กล่าวถึงในที่นี้ว่า “Pro” ปัจจุบันวางจำหน่ายแล้ว ReadyAPI เนื่องจากเป็นเวอร์ชันของ SmartBear ดังนั้นป้ายกำกับเมนูในเวอร์ชันใหม่กว่าอาจแสดงผลแตกต่างออกไป ในขณะที่พฤติกรรมการตรวจสอบยังคงเหมือนเดิม

ประกอบด้วยการยืนยัน

ค้นหาการมีอยู่ของสตริงที่ระบุ นอกจากนี้ยังรองรับการแสดงออกปกติด้วย

เราจะดำเนินการต่อด้วยตัวอย่างเดียวกันจากบทช่วยสอนก่อนหน้านี้โดยมีคำขอ WSDL เป็น http://www.dneonline.com/calculator.asmxหากคุณยังไม่ได้สร้างโปรเจกต์นั้น ให้ลองทำตามขั้นตอนต่อไปนี้ การสร้างโปรเจ็กต์ ชุดทดสอบ และกรณีทดสอบ ก่อน

ขั้นตอนที่ 1: โดยค่าเริ่มต้นจะไม่มีการตรวจสอบใดๆ

  1. จำนวนการยืนยันจะแสดงอยู่ในแท็บการยืนยัน
  2. หากต้องการเพิ่มการยืนยันใหม่ ให้คลิกที่ปุ่ม 'เพิ่มการยืนยันใหม่'

SoapUI แท็บการยืนยันแสดงว่าไม่มีการยืนยันใด ๆ และมีปุ่มเพิ่มการยืนยันใหม่

ขั้นตอนที่ 2: ตอนนี้

  1. เลือกหมวดหมู่การยืนยัน
  2. เลือกประเภทการยืนยัน
  3. คลิก 'เพิ่ม'

เพิ่มกล่องโต้ตอบการยืนยัน โดยเลือกหมวดหมู่และประเภทของการยืนยันไว้แล้ว

ขั้นตอนที่ 3: ตรวจสอบว่าสตริง '46' มีอยู่ในคำตอบหรือไม่ คลิก 'ตกลง'

หมายเหตุ: นอกจากนี้เรายังสามารถละเว้นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และเพิ่มนิพจน์ทั่วไปได้

ประกอบด้วยกล่องโต้ตอบการกำหนดค่าการยืนยัน โดยป้อนค่า 46 ไว้

ขั้นตอนที่ 4: หลังจากเพิ่มข้อมูลแล้ว ระบบจะทำการตรวจสอบทันทีและแสดงผลว่าถูกต้องหรือไม่ถูกต้อง

แท็บการยืนยันรายงานว่าการยืนยัน Contains เป็น VALID

ขั้นตอนที่ 5: สมมติว่าตอนนี้เราเปลี่ยนเนื้อหาของ 'Contains Assertion in' SoapUIเปลี่ยน ' เป็น '47' แล้วดูว่าจะเกิดอะไรขึ้น

แก้ไขเนื้อหา Contains Assertion จากหน้า 46 ถึง 47

ขั้นตอนที่ 6: ระบบจะทำการตรวจสอบและแสดงผลลัพธ์ให้ผู้ใช้ทราบ เนื่องจากไม่พบสตริง '47' ในผลลัพธ์ การตรวจสอบจึงล้มเหลว

แท็บการยืนยันรายงานว่าการยืนยัน Contains ล้มเหลว

ไม่มีการยืนยัน

ฟังก์ชันที่ตรงข้ามกันจะทำงานในทางตรงกันข้าม คือค้นหาการไม่มีอยู่ของสตริงที่ระบุ นอกจากนี้ยังรองรับนิพจน์ปกติ (Regular Expression) ด้วย

ขั้นตอนที่ 1: หลังจากคลิกปุ่ม 'เพิ่มการยืนยันใหม่' แล้ว

  1. เลือกหมวดหมู่การยืนยัน
  2. เลือกประเภทการยืนยัน - ในกรณีนี้ 'ไม่มี'
  3. คลิก 'เพิ่ม'

เพิ่มกล่องโต้ตอบการยืนยันโดยเลือก NOT Contains

ขั้นตอนที่ 2: ตรวจสอบว่าสตริง 'intA' มีอยู่ในคำตอบหรือไม่ ป้อนสตริง 'FromCurrency' แล้วคลิก 'ตกลง'

ข้อความแจ้งเตือน "Not Contains Assertion" เมื่อป้อนสตริง "FromCurrency"

ขั้นตอนที่ 3: ทันทีที่เพิ่มคำสั่งยืนยัน ระบบจะดำเนินการและแสดงผลลัพธ์ ในตอนนี้เราได้เพิ่มคำสั่งยืนยันไปแล้วสองคำสั่ง ดังนั้นคำสั่งยืนยันทั้งสองจึงถูกดำเนินการและแสดงผลลัพธ์

แท็บการยืนยันซึ่งแสดงผลลัพธ์ทั้งแบบมีและไม่มีอยู่

ขั้นตอนที่ 4: ตอนนี้เรามาเปลี่ยนเนื้อหาของ 'Not Contains Assertion' และดูว่าจะเกิดอะไรขึ้น เราจะตรวจสอบว่าไม่มีสตริง "AddResult" อยู่

กล่องโต้ตอบ Not Contains Assertion ตรวจสอบโทเค็น AddResult

ขั้นตอนที่ 5: สตริง 'AddResult' มีอยู่ในคำตอบจริง ดังนั้นการตรวจสอบ 'NOT Contains' จะล้มเหลวดังที่แสดงด้านล่าง

การตรวจสอบเงื่อนไข "ไม่รวม" ล้มเหลวเนื่องจากมี AddResult อยู่

การยืนยันการจับคู่ XPath

การจับคู่สตริงนั้นไม่แม่นยำ ดังนั้นการตรวจสอบครั้งต่อไปจึงมุ่งเป้าไปที่โหนดเดียวแทน โดยใช้การแสดงออก XPath เพื่อเลือกโหนดเป้าหมายและค่าต่างๆ ในโหนดนั้น XPathเป็นภาษาสอบถาม XML สำหรับเลือกโหนดจากเอกสาร XML

ขั้นตอนที่ 1: หลังจากคลิกปุ่ม 'เพิ่มการยืนยันใหม่' แล้ว

  1. เลือกหมวดหมู่การยืนยัน
  2. เลือกประเภทการยืนยัน – ในกรณีนี้คือ 'XPath Match'
  3. คลิก 'เพิ่ม'

เพิ่มกล่องโต้ตอบยืนยันโดยเลือกตัวเลือก XPath Match

ขั้นตอนที่ 2: หน้าต่าง Add XPath จะเปิดขึ้น

ก่อนที่จะเพิ่ม SoapUI ใน XPath เราจำเป็นต้องประกาศเนมสเปซ เนมสเปซ XML คือชุดของชื่อที่ระบุโดยการอ้างอิง Uniform Resource Identifier (URI) ซึ่งใช้ในเอกสาร XML เป็นชื่อองค์ประกอบและแอตทริบิวต์ เช่นเดียวกับที่ใช้ใน SoapUI การยืนยัน XPath

ในการประกาศเนมสเปซ XML เราเพียงแค่คลิกที่ปุ่ม 'ประกาศ' ซึ่งจะดำเนินการให้เราโดยอัตโนมัติ หรือเราสามารถประกาศเนมสเปซด้วยตนเองก็ได้เช่นกัน

หลังจากประกาศเนมสเปซแล้ว เราจำเป็นต้องอ้างอิง XPath โดยใช้เนมสเปซที่สร้างขึ้น

เมื่อคลิกปุ่ม 'ประกาศ' จะมีเนมสเปซสองรายการปรากฏขึ้น เนื่องจากเรามี URI สองรายการ โดยรายการหนึ่งคือสคีมา URL ส่วนอีกส่วนหนึ่งนั้นสอดคล้องกับบริการเว็บจริง URLเราต้องใช้เนมสเปซจริงที่เว็บเซอร์วิสตั้งอยู่ และไม่ใช่เนมสเปซของสคีมา ในขณะที่อ้างอิง XPath บรรทัดที่ประกาศจะปรากฏที่ด้านบนของกล่อง XPath ดังที่แสดงด้านล่าง

ประกาศเนมสเปซ soap และ ns1 ภายในหน้าต่างการยืนยัน XPath

ประกาศสบู่เนมสเปซ = 'http://schemas.xmlsoap.org/soap/envelope/';

ประกาศเนมสเปซ ns1='http://tempuri.org/';

หน้าต่างยืนยัน XPath จะปรากฏขึ้นทันทีหลังจากคลิก Declare

ขั้นตอนที่ 3: ตอนนี้เราต้องป้อน XPath ของโหนด XML ที่เราต้องการตรวจสอบความถูกต้อง

//ns1:AddResult ให้ค่าของโหนดที่อยู่ระหว่างนั้นแก่เรา - และ ns1 สอดคล้องกับเนมสเปซที่ประกาศซึ่งชี้ไปที่ 'http://tempuri.org/'

หลังจากป้อน XML แล้ว เราจะต้องคลิกที่ 'เลือกจากปัจจุบัน' เพื่อให้ค่าจากการตอบกลับปัจจุบันถูกหยิบขึ้นมาเพื่อการเปรียบเทียบในอนาคต

นิพจน์ XPath ที่ป้อนด้วยตัวเลือก "เลือกจากไฮไลต์ปัจจุบัน"

ขั้นตอนที่ 4: จนถึงตอนนี้

  1. หลังจากประกาศเนมสเปซแล้ว เราได้ป้อน XPath ของโหนด XML ที่เราจำเป็นต้องตรวจสอบ
  2. เราจำเป็นต้องคลิก 'เลือกจากปัจจุบัน' เพื่อให้ค่าปัจจุบันเป็นค่าที่คาดหวัง
  3. ค่าปัจจุบันจะแสดงให้ผู้ใช้เห็นซึ่งเราสามารถแก้ไขได้หากจำเป็น
  4. คลิก 'บันทึก'

การกำหนดค่าการจับคู่ XPath แสดงค่าที่คาดหวังและปุ่มบันทึก

ขั้นตอนที่ 5: การยืนยันเพิ่มเติมใน SoapUI จะแสดงผลดังที่แสดงด้านล่างนี้

แท็บการยืนยันแสดงการยืนยันการจับคู่ XPath ที่เพิ่มเข้ามา

การยืนยันสคริปต์

เทคนิคการยืนยันนี้เป็นเทคนิคที่ใช้กันอย่างแพร่หลายที่สุด เนื่องจากเป็นเรื่องยากมากที่จะจัดการและรักษาการยืนยันหลายร้อยรายการ

SoapUI ใช้อย่างใดอย่างหนึ่ง Groovy การเขียนสคริปต์หรือ Javaต้นฉบับ สำหรับการเขียนสคริปต์เพื่อตรวจสอบความถูกต้อง เทคนิคการเขียนสคริปต์นี้ถูกนำมาใช้ในการพัฒนาping กรอบการทำงานสำหรับการทดสอบ SOAP การเขียนสคริปต์เพื่อตรวจสอบความถูกต้องจะใช้ในสถานการณ์ต่อไปนี้

  • การเขียนสคริปต์ช่วยให้ผู้ใช้สามารถดำเนินการบางอย่างก่อนและหลังการรันเคสทดสอบโดยใช้วิธีการตั้งค่าและการยกเลิกการตั้งค่าตามลำดับ การตั้งค่าคือขั้นตอนที่ดำเนินการก่อนการรันเมธอดเฉพาะ (ตัวอย่างเช่น การสร้างและการเริ่มต้นใช้งานอ็อบเจ็กต์) ในขณะที่การยกเลิกการตั้งค่าคือขั้นตอนที่ดำเนินการหลังจากรันเมธอดแล้ว (เช่น การทำลายอ็อบเจ็กต์และการทำความสะอาด) คุณสมบัตินี้ไม่มีในประเภทการยืนยันอื่นๆ และสามารถทำได้ผ่านการเขียนโค้ดเท่านั้น
  • โปรแกรมนี้ช่วยให้ผู้ใช้สามารถเปิด/ปิดโปรเจ็กต์ เพื่อเริ่มต้นหรือล้างการตั้งค่าที่เกี่ยวข้องกับโปรเจ็กต์ และยังสามารถทำงานกับตัวแปรสภาพแวดล้อม ซึ่งมีประโยชน์มากในระหว่างการเขียนสคริปต์
  • ช่วยเราในการยืนยันเนื้อหาการตอบสนองแบบไดนามิก
  • สคริปต์แอสเซมบลีชันใช้สำหรับสร้างแอสเซมบลีชันที่ผู้ใช้กำหนดเอง ซึ่งไม่ได้ถูกกำหนดไว้ล่วงหน้าโดยระบบ SoapUI.

เพื่อแสดงการยืนยันสคริปต์ใน SoapUIเราจะใช้ไฟล์ WSDL ของเครื่องคิดเลข ซึ่งเป็นกรณีทดสอบ "การบวก" ที่เราสร้างไว้ก่อนหน้านี้

ขั้นตอนที่ 1: ขั้นตอนการเพิ่มสคริปต์ Groovy นั้นเหมือนกับขั้นตอนการเพิ่มการตรวจสอบเงื่อนไขอื่นๆ ยกเว้นว่าการตรวจสอบเงื่อนไขนี้ไม่ใช่การตรวจสอบเงื่อนไขที่กำหนดไว้ล่วงหน้า แต่เป็นการตรวจสอบเงื่อนไขที่ผู้ใช้กำหนดเอง ซึ่งมีความยืดหยุ่นมากกว่าการตรวจสอบเงื่อนไขที่มีอยู่แล้ว

เลือกขั้นตอนการทดสอบที่จะต้องเพิ่มการยืนยัน

ขั้นตอนการทดสอบที่เลือกใน SoapUI ตัวนำทางก่อนเพิ่มการยืนยัน

คลิกปุ่ม 'เพิ่มการยืนยัน' ดังที่แสดงด้านล่าง

เพิ่มปุ่ม Assertion บนแถบเครื่องมือ Assertion ของขั้นตอนการทดสอบ

ขั้นตอนที่ 2: เลือกหมวดหมู่การยืนยัน (Assertion category)

  1. ในกรณีนี้คือสคริปต์
  2. เลือก SoapUI Script Assertion และไม่มีประเภทย่อยใด ๆ ที่เกี่ยวข้องกับมัน
  3. คลิก 'เพิ่ม'

เพิ่มกล่องโต้ตอบการยืนยันโดยเลือกหมวดหมู่สคริปต์

ขั้นตอนที่ 3: หน้าต่างการเขียนสคริปต์จะเปิดขึ้น ซึ่งผู้ใช้จะสามารถเขียนสคริปต์ที่กำหนดเองเพื่อตรวจสอบความถูกต้องของ XML ที่ได้รับกลับมาได้

ว่างเปล่า SoapUI กล่องโต้ตอบตัวแก้ไขการยืนยันสคริปต์

ขั้นตอนที่ 4: ต่อไปเราจะเขียนสคริปต์ Groovy เพื่อตรวจสอบอัตราการแปลง สคริปต์พร้อมคำอธิบายประกอบอยู่ในไฟล์แนบด้านล่าง แนะนำให้มีความรู้เกี่ยวกับ Groovy ก่อนเขียนสคริปต์ 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. ผลลัพธ์ของสคริปต์จะแสดงในบานหน้าต่างผลลัพธ์ มีการพิมพ์ทั้งมูลค่า Conversion และผลลัพธ์สุดท้าย (ผ่านหรือล้มเหลว)
  3. ระบบจะแสดงข้อมูลว่า 'Script Assertion Passed' คลิก OK

หมายเหตุ: ป๊อปอัปข้อมูลสุดท้ายจะแสดงพร้อมข้อความ 'Script Assertion Passed' เสมอ ตราบใดที่สคริปต์มีไวยากรณ์ที่ถูกต้อง ไม่มีความสัมพันธ์กับการยืนยันของคุณภายในสคริปต์

ช่องแสดงผลลัพธ์การตรวจสอบสคริปต์จะแสดงค่าผลลัพธ์และคำว่า "ผ่าน"

คลิกตกลง

ขั้นตอนที่ 5: ตอนนี้แท็บการยืนยันจะแสดงการยืนยันทั้งหมดที่เราได้เพิ่มไว้สำหรับชุดทดสอบนี้ พร้อมสถานะกำกับแต่ละการยืนยัน

แท็บ Assertions แสดงรายการการยืนยันทั้งหมดที่เพิ่มลงในชุดทดสอบ

ขั้นตอนที่ 6: ตอนนี้

  1. เลือกชุดทดสอบจากแผนผังเนวิเกเตอร์
  2. คลิกปุ่ม 'เรียกใช้'
  3. ผลลัพธ์จะแสดงสำหรับชุดการทดสอบทั้งหมด

ผลลัพธ์การทำงานของชุดทดสอบหลังจากดำเนินการตรวจสอบทั้งหมดแล้ว

การยืนยันการจับคู่ XQuery

โค้ดนี้ใช้การแสดงออกของ XQuery เพื่อเลือกเนื้อหาจากคุณสมบัติเป้าหมาย เราต้องการ XML ที่ตอบกลับมาขนาดใหญ่กว่านี้มากเพื่อให้เข้าใจการยืนยัน XQuery ได้ดีขึ้น SoapUIเรามาลองนำเข้าไฟล์ WSDL อีกไฟล์หนึ่งตามที่แสดงด้านล่างนี้: http://www.webservicex.net/medicareSupplier.asmx?WSDL

หมายเหตุ เนื่องจากเอนด์พอยต์สาธิต webservicex.net สาธารณะที่ใช้ในตัวอย่างนี้ไม่สามารถเข้าถึงได้อย่างน่าเชื่อถืออีกต่อไปแล้ว ดังนั้นภาพหน้าจอคำขอและคำตอบด้านล่างจึงเก็บไว้เป็นตัวอย่างอ้างอิง WSDL ใดๆ ที่ส่งคืนชุดโหนดที่ซ้ำกันจะใช้การตรวจสอบ XQuery ในลักษณะเดียวกันทุกประการ

ขั้นตอนที่ 1: คลิกขวาที่โปรเจ็กต์ที่มีอยู่แล้ว และเลือก 'เพิ่ม WSDL'

เมนูคลิกขวาบน SoapUI โปรเจ็กต์แสดงการเพิ่ม WSDL

ขั้นตอนที่ 2: หน้าต่าง Add WSDL จะเปิดขึ้นมา ปล่อยตัวเลือกอื่นๆ ไว้ตามค่าเริ่มต้น แล้วคลิกปุ่ม 'ตกลง'

เพิ่มกล่องโต้ตอบ WSDL พร้อมตัวเลือกการนำเข้าเริ่มต้น

ขั้นตอนที่ 3: การดำเนินการทั้งหมดแสดงไว้ดังที่แสดงด้านล่าง

รายชื่อผู้ให้บริการ Medicare ที่มีไฟล์ WSDL แสดงอยู่ในแผนผังนำทาง

ขั้นตอนที่ 4: ตอนนี้เรามาเพิ่ม กรณีทดสอบ ภายในชุดทดสอบเดียวกันกับที่เราสร้างขึ้น การทดสอบ ตัวแปลงสกุลเงิน

ตัวเลือก "สร้างกรณีทดสอบใหม่" ในชุดทดสอบที่มีอยู่

ขั้นตอนที่ 5: ป้อนชื่อของกรณีทดสอบแล้วคลิกปุ่ม 'ตกลง'

ป้อนชื่อกรณีทดสอบในกล่องโต้ตอบ "สร้างกรณีทดสอบใหม่"

ขั้นตอนที่ 6: สร้างกรณีทดสอบดังแสดงด้านล่าง

กรณีทดสอบที่สร้างขึ้นใหม่ใน SoapUI ต้นไม้นำทาง

ขั้นตอนที่ 7: เพิ่มขั้นตอนการทดสอบใหม่ประเภท 'คำขอทดสอบ SOAP' ดังแสดงด้านล่าง

เพิ่มเมนูขั้นตอนโดยเลือกคำขอทดสอบ SOAP

ขั้นตอนที่ 8: ป้อนชื่อขั้นตอนการทดสอบ สมมติว่าเป็น Supplier_by_City ซึ่งจะมีความหมายมากกว่า คลิก 'ตกลง'

ตั้งชื่อขั้นตอนการทดสอบใหม่ว่า Supplier_by_City

ขั้นตอนที่ 9: เลือกปุ่ม Operaข้อมูลที่เราต้องการตรวจสอบ ในกรณีนี้คือ 'MedicareSupplierSoap -> GetSupplierByCity' คลิก 'ตกลง'

เลือกการดำเนินการ GetSupplierByCity สำหรับขั้นตอนการทดสอบ

ขั้นตอนที่ 10: ป้อนชื่อของกรณีทดสอบแล้วคลิก 'ตกลง'

ยืนยันชื่อคำขอทดสอบ SOAP

ขั้นตอนที่ 11: โครงร่าง XML ของคำขอจะแสดงดังที่แสดงด้านล่าง

สร้างโครงร่าง XML ของคำขอ GetSupplierByCity แล้ว

ขั้นตอนที่ 12: ตอนนี้เรามาค้นหาข้อมูลซัพพลายเออร์ทั้งหมดสำหรับเมือง 'นิวยอร์ก' กัน

เมื่อต้องการทำเช่นนี้ ให้เพิ่มบรรทัดต่อไปนี้ลงในโค้ดของคุณ

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

<City>New York</City>

</GetSupplierByCity>

WSDL ด้านล่าง URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

ไฟล์ XML ที่ร้องขอได้รับการแก้ไขโดยกำหนดค่า "นิวยอร์ก" เป็นค่าเมือง

ขั้นตอนที่ 13: เมื่อทำการทดสอบ เราจะได้รับผลลัพธ์ดังต่อไปนี้

การตอบสนองจาก GetSupplierByCity มีบันทึกข้อมูลซัพพลายเออร์ซ้ำกัน

ขั้นตอนที่ 14: สมมติว่าเราต้องการตรวจสอบหมายเลขซัพพลายเออร์ทั้งหมด เราไม่สามารถใช้ XPath Assertion ได้เนื่องจากเราต้องมี XPath Assertion หลายร้อยรายการ ดังนั้นการใช้ XQuery จึงเป็นสิ่งที่หลีกเลี่ยงไม่ได้ในกรณีนี้

XQuery Assertion ช่วยให้เราตรวจสอบกลุ่มการตอบสนอง XML ที่มีลักษณะซ้ำกัน

โหนด SupplierData ที่ซ้ำกันซึ่ง XQuery จะวนซ้ำ

ขั้นตอนที่ 15: ตอนนี้คลิกที่ 'เพิ่มการยืนยัน'

  1. เลือก 'หมวดหมู่การยืนยัน' – เนื้อหาทรัพย์สินในกรณีนี้
  2. เลือกประเภทการยืนยันเป็น 'การยืนยัน XQuery'
  3. คลิก 'เพิ่ม'

เลือก XQuery Assertion ในหมวดหมู่เนื้อหาคุณสมบัติ

ขั้นตอนที่ 16: เช่นเดียวกับการยืนยัน XPath เราจำเป็นต้องประกาศเนมสเปซ

  1. คลิกปุ่ม 'ประกาศ' เพื่ออนุญาตโดยอัตโนมัติ SoapUI เพื่อประกาศเนมสเปซ เมื่อคลิกปุ่มประกาศ จะมีหน้าต่างป๊อปอัพแสดงข้อความว่า "ประกาศเนมสเปซจากสคีมาแทน" ปรากฏขึ้น คลิก "ใช่" เพื่อดำเนินการต่อดังที่แสดงด้านล่าง
  2. ในการเรียกข้อมูล Supplier Number ทั้งหมด เราจำเป็นต้องเขียน XPath Query และเราจะวางไว้ภายใน < SupplierNumber> และ แท็ก
  3. คลิก 'เลือกจากปัจจุบัน' ซึ่งจะดำเนินการจากการตอบกลับปัจจุบัน
  4. เมื่อคลิก 'เลือกจากรายการปัจจุบัน' หมายเลขผู้จำหน่ายทั้งหมดจะปรากฏขึ้น
  5. คลิก 'บันทึก'

ประกาศเนมสเปซจากป๊อปอัปยืนยันสคีมา

หมายเหตุ: หลังจากกดปุ่ม 'ประกาศ' คุณอาจได้ผลลัพธ์ที่แตกต่างออกไป URL's เป็นเพียงการประกาศเนมสเปซ แต่เนมสเปซของตำแหน่งที่ตั้งของเว็บเซอร์วิสจริง ๆ ต่างหากที่จะต้องนำมาพิจารณาในการเขียนโค้ด

นิพจน์ XQuery ที่เสร็จสมบูรณ์ พร้อมการประกาศเนมสเปซ จะมีลักษณะดังนี้

// 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 จะถูกดำเนินการและแสดงผลลัพธ์สุดท้ายในแผง 'การตรวจสอบ' ดังที่แสดงด้านล่าง ตอนนี้เราได้เพิ่มการตรวจสอบ XQuery เรียบร้อยแล้ว ซึ่งเราใช้ในการตรวจสอบข้อมูลหมายเลขซัพพลายเออร์ทั้งหมด ข้อมูลเหล่านี้จะถูกเปรียบเทียบกับข้อมูลจริงทุกครั้งที่มีการส่งคำขอไปยังเว็บเซิร์ฟเวอร์

หมายเหตุ: ค่าจริงจะไม่ปรากฏ หากค่าจริงทั้งหมดตรงกับค่าที่คาดไว้ ระบบจะแสดงเป็น VALID มิฉะนั้นระบบจะแสดงเป็น 'Failed'

แผงการยืนยันที่แสดงผลลัพธ์การยืนยัน XQuery

เมื่อใดจึงจะใช้การยืนยันแบบ Inbuilt?

เมื่อได้กล่าวถึงทั้งตัวเลือกแบบคลิกเมาส์และแบบใช้สคริปต์แล้ว คำถามที่สำคัญก็คือควรเลือกใช้แบบใด

  • เมื่อการตอบกลับสั้นจนสามารถตรวจสอบได้โดยใช้การยืนยันที่มีอยู่อย่างใดอย่างหนึ่ง
  • นอกจากนี้เรายังสามารถใช้ Inbuilt Assertion ได้หากการตอบกลับที่ส่งจากเว็บเซิร์ฟเวอร์มีลักษณะคงที่อยู่เสมอ หากเป็นแบบไดนามิก เราจะไม่สามารถยืนยันโดยใช้การยืนยันแบบฝังได้
  • เมื่อการใช้การยืนยันในตัว เช่น การยืนยันการหมดเวลา และการยืนยันความปลอดภัยกลายเป็นเรื่องที่หลีกเลี่ยงไม่ได้
  • Inbuilt Assertions ถือว่าค่อนข้างดีสำหรับการใช้งานครั้งเดียวโดยไม่จำเป็นต้องทำการทดสอบซ้ำ

ตัวเลือกการยืนยัน

การยืนยันที่สร้างขึ้นสามารถควบคุมได้ดีที่สุดด้วยความช่วยเหลือของแผงควบคุมที่ไฮไลต์ด้านล่าง

แผงควบคุมกล่องเครื่องมือการยืนยันใน SoapUI

ข้อความยืนยันที่สร้างขึ้นช่วยให้ผู้ทดสอบสามารถกำหนดค่าสิ่งต่าง ๆ ต่อไปนี้ได้จากกล่องเครื่องมือข้อความยืนยัน

ตัวเลือกเสริม (Option) Descriptไอออน
ย้ายไอคอนการยืนยันขึ้น การยืนยันที่เลือกจะเลื่อนขึ้นตามลำดับ
ย้ายไอคอนการยืนยันลง การยืนยันที่เลือกจะเลื่อนลงตามลำดับ
ลบไอคอนการยืนยัน ลบการยืนยันที่เลือก
กำหนดค่าหรือแก้ไขไอคอนการยืนยัน กำหนดค่าใหม่/แก้ไขการยืนยันที่เลือก

ด้านล่างนี้คือคุณสมบัติที่มีเฉพาะในเวอร์ชัน Pro ของ SoapUIขณะนี้จัดส่งในรูปแบบ ReadyAPIนอกจากนี้ เวอร์ชัน Pro ยังช่วยให้เราจัดกลุ่มการยืนยัน (assertions) เพื่อเพิ่มการตรวจสอบความถูกต้องอีกชั้นหนึ่งให้กับการยืนยันที่สร้างขึ้นได้อีกด้วย

  • และ: การตรวจสอบทั้งหมดจะถูกประเมินว่าเป็นการตรวจสอบที่ถูกต้อง ซึ่งจะส่งผลให้เงื่อนไขกลุ่มเป็น "ผ่าน"
  • หรือ: อย่างน้อยหนึ่งในข้อความยืนยันภายในกลุ่มจะต้องเป็น VALID จึงจะสามารถยืนยันได้ว่ากลุ่มนั้นผ่านเกณฑ์ (PASSED)
  • เวอร์ชัน Pro ยังอนุญาต การโคลนการยืนยันตัวเลือกนี้ช่วยให้ผู้ทดสอบสามารถคัดลอกข้อความยืนยันไปยังขั้นตอนการทดสอบอื่นในโปรเจกต์เดียวกันหรือต่างโปรเจกต์ก็ได้
  • ปิด/เปิดใช้งานการตรวจสอบ: ตัวเลือกนี้อนุญาตให้ปิดหรือเปิดใช้งานการตรวจสอบแบบกลุ่มหรือแบบไม่กลุ่มใดๆ ก็ได้ หากการตรวจสอบถูกปิดใช้งาน การตรวจสอบนั้นจะแสดงเป็นสีเทา และเมื่อเรียกใช้กรณีทดสอบ การตรวจสอบที่ถูกปิดใช้งานจะไม่ถูกเรียกใช้
  • ยกเลิกการจัดกลุ่มข้อความยืนยัน: ข้อความยืนยันที่จัดกลุ่มไว้สามารถยกเลิกการจัดกลุ่มได้ หากผู้ทดสอบต้องการทำเช่นนั้น

รายการวิธีการทั้งหมดที่มีอยู่ในการยืนยันประเภทต่างๆ

ตารางด้านล่างนี้รวบรวมข้อความยืนยันทั้งหมดที่กล่าวถึงข้างต้น โดยจัดกลุ่มตามหมวดหมู่ที่ปรากฏในกล่องโต้ตอบเพิ่มข้อความยืนยัน

กลไกการยืนยัน Descriptไอออน
เนื้อหาเกี่ยวกับทรัพย์สิน
ประกอบด้วย ค้นหาการมีอยู่ของสตริงที่ระบุ นอกจากนี้ยังรองรับการแสดงออกปกติด้วย
ไม่มี ค้นหาการไม่มีอยู่ของสตริงที่ระบุ นอกจากนี้ยังรองรับการแสดงออกปกติด้วย
การแข่งขัน XPath ใช้นิพจน์ XPath เพื่อเลือกโหนดเป้าหมายและค่าของมัน
การแข่งขัน XQuery ใช้การแสดงออก XQuery เพื่อเลือกเนื้อหาจากคุณสมบัติเป้าหมาย
การปฏิบัติตามข้อกำหนด สถานะ มาตรฐาน
HTTP ดาวน์โหลดทรัพยากรทั้งหมด ตรวจสอบเอกสาร HTML หลังจากดาวน์โหลดและถือเป็นคุณสมบัติที่ดีกับคุณสมบัติใด ๆ ที่มี HTML
สถานะ HTTP ไม่ถูกต้อง Codes ตรวจสอบว่าการตอบสนอง HTML มีรหัสสถานะที่ไม่อยู่ในรายการรหัสที่กำหนดหรือไม่
ไม่ใช่ความผิดของสบู่ ตรวจสอบว่าข้อความที่ได้รับล่าสุดไม่ใช่ SOAP Fault หรือไม่ เห็นได้ชัดว่าใช้ได้กับขั้นตอนการทดสอบ SOAP เท่านั้น
การปฏิบัติตามสคีมา ตรวจสอบว่าข้อความที่ได้รับล่าสุดเป็นไปตามข้อกำหนดสคีมามาตรฐาน WSDL หรือ WADL หรือไม่ เหมาะสำหรับขั้นตอนการทดสอบ SOAP และ REST
ข้อผิดพลาดของสบู่ ตรวจสอบว่าข้อความที่ได้รับล่าสุดเป็น SOAP Fault หรือไม่ มันเป็นสิ่งที่ตรงกันข้ามกับการยืนยันข้อผิดพลาด 'NOT SOAP'
การตอบสนองของสบู่ ตรวจสอบว่าการตอบสนองที่ได้รับล่าสุดเป็นการตอบกลับ SOAP ที่ถูกต้องหรือไม่ และใช้ได้กับขั้นตอนคำขอทดสอบ SOAP เท่านั้น
สถานะ HTTP ถูกต้อง Codes ตรวจสอบว่าการตอบกลับ HTML มีรหัสสถานะที่อยู่ในรายการรหัสที่กำหนดไว้หรือไม่ ซึ่งเป็นสิ่งที่ตรงกันข้ามกับ 'สถานะ HTTP ไม่ถูกต้อง' Codeคำกล่าวอ้างของเขา
คำขอที่อยู่ WS ตรวจสอบว่าคำขอที่ได้รับครั้งล่าสุดมีส่วนหัว WS-Addressing ที่เหมาะสมหรือไม่
การตอบสนองที่อยู่ WS ตรวจสอบว่าการตอบสนองที่ได้รับครั้งล่าสุดมีส่วนหัว WS-Addressing ที่เหมาะสมหรือไม่
สถานะความปลอดภัย WS ตรวจสอบว่าข้อความที่ได้รับล่าสุดมีส่วนหัว WS-Security ที่ถูกต้องหรือไม่ และใช้ได้กับคำขอ SOAP เท่านั้น
ต้นฉบับ
การยืนยันสคริปต์ อนุญาตให้ผู้ใช้สามารถรันสคริปต์ที่กำหนดเองเพื่อทำการตรวจสอบที่ผู้ใช้กำหนด
SLA
SLA การตอบสนอง ตรวจสอบว่าเวลาตอบสนองของการตอบกลับที่ได้รับครั้งล่าสุดอยู่ภายในขีดจำกัดที่กำหนดไว้หรือไม่
จส
สถานะ JMS ตรวจสอบว่าคำขอ JMS ของขั้นตอนการทดสอบดำเนินการสำเร็จหรือไม่ และถือว่าดีสำหรับขั้นตอนการทดสอบที่มีจุดสิ้นสุด JMS
JMS หมดเวลา ตรวจสอบว่าการตอบสนอง JMS ของขั้นตอนการทดสอบใช้เวลาไม่นานเกินระยะเวลาที่ระบุหรือไม่
⁠ความปลอดภัย
การเปิดรับข้อมูลที่ละเอียดอ่อน ตรวจสอบว่าข้อความตอบกลับไม่เปิดเผยข้อมูลที่ละเอียดอ่อนเกี่ยวกับระบบเป้าหมายหรือไม่ เราสามารถใช้การยืนยันนี้สำหรับขั้นตอนการทดสอบ REST, SOAP และ HTTP

ดาวน์โหลดโครงการ SOAPUI ที่มีข้อยืนยันข้างต้น

ข้อผิดพลาดทั่วไปและการแก้ไขปัญหา

ความล้มเหลวในการยืนยันส่วนใหญ่ tracกลับไปสู่ข้อผิดพลาดเล็กๆ น้อยๆ ดังนั้นควรตรวจสอบข้อผิดพลาดเหล่านี้ก่อนที่จะเขียนนิพจน์ใหม่

  • ใช้เนมสเปซที่ถูกต้อง เนมสเปซควรเป็น URL ตำแหน่งที่ตั้งของเว็บเซอร์วิส
  • หากเกิดข้อผิดพลาดระหว่างการพัฒนาping สำหรับการตรวจสอบสคริปต์ ให้ใช้คำสั่ง 'log.info' เพื่อแสดงเนื้อหาของตัวแปรต่างๆ
  • หากคุณไม่ได้รับผลลัพธ์ตามที่ต้องการ ให้ตรวจสอบว่ามีการส่งอินพุตที่ถูกต้องในการร้องขอหรือไม่

ตัวอย่างเช่น ในโปรแกรมแปลงสกุลเงิน หากคุณป้อนค่า 'intA' เป็น 'x' ซึ่งไม่ใช่จำนวนเต็ม ผลลัพธ์จะแสดงรหัสข้อผิดพลาดเป็น 'SOAP-Client' ซึ่งหมายความว่าปัญหาอยู่ที่พารามิเตอร์ที่ส่งมาจากฝั่งไคลเอ็นต์ โดยคำขอที่มีค่าไม่ถูกต้องจะแสดงขึ้นก่อน

SoapUI คำขอส่งค่าที่ไม่ใช่จำนวนเต็มที่ไม่ถูกต้องสำหรับ intA

การตอบกลับจะส่งรหัสข้อผิดพลาดกลับมาแทนผลลัพธ์ ดังแสดงด้านล่าง

รหัสข้อผิดพลาด SOAP-Client ที่ส่งคืนใน SoapUI บรรณาธิการตอบกลับ

โปรดตรวจสอบให้แน่ใจว่าคุณใช้ไวยากรณ์ที่ถูกต้องขณะใช้การตรวจสอบ XPath และ XQuery คุณไม่ควรใช้จุด (.) แทนเครื่องหมายโคลอน (:) ในการตรวจสอบข้างต้น ไวยากรณ์ที่ถูกต้องคือ //namespace:Tagname และไม่ใช่ //namespace.tagname การทำเช่นนั้นอาจทำให้คุณได้รับข้อความว่า 'ไม่พบการจับคู่ในคำตอบปัจจุบัน' แม้ว่าชื่อแท็กจะถูกต้องก็ตาม

ไม่พบการจับคู่ในคำตอบปัจจุบัน เกิดข้อผิดพลาดเนื่องจากไวยากรณ์ XPath ไม่ถูกต้อง

คำถามที่พบบ่อย

จำนวนเท่าใดก็ได้ SoapUI ฟังก์ชันนี้จะใช้เงื่อนไขทั้งหมดที่แนบมากับขั้นตอนการทดสอบตัวอย่างหลังจากที่ขั้นตอนนั้นทำงานเสร็จ และขั้นตอนดังกล่าวจะถูกทำเครื่องหมายว่าล้มเหลวในมุมมองกรณีทดสอบหากมีเงื่อนไขใดเงื่อนไขหนึ่งล้มเหลวแม้เพียงเงื่อนไขเดียว

วิธีการนี้จะเปรียบเทียบข้อความ XML กับเอกสารที่คาดหวังทีละโหนด ดังนั้นจึงสามารถละเว้นฟิลด์ที่เลือกหรือจับคู่แบบหลวมๆ แทนที่จะถือว่าข้อมูลทั้งหมดเป็นสตริงธรรมดาเพียงสตริงเดียว

เปิดแหล่งที่มา SoapUI ครอบคลุมเนื้อหาเกี่ยวกับทรัพย์สิน การปฏิบัติตามกฎระเบียบ สคริปต์ ข้อตกลงระดับบริการ (SLA) ระบบจัดการเอกสารร่วม (JMS) และความปลอดภัย ReadyAPI เพิ่มกลุ่มpingรวมถึงการโคลน การตรวจสอบ JDBC และการเปิดหรือปิดใช้งานการควบคุม

โมเดล AI อ่านตัวอย่างการตอบกลับและแนะนำนิพจน์ XPath หรือ XQuery เสนอค่าขอบเขต และทำเครื่องหมายฟิลด์ที่เปลี่ยนแปลงในแต่ละครั้งที่เรียกใช้ ซึ่งช่วยลดงานการเขียนชื่อพื้นที่และนิพจน์ด้วยมือลงได้อย่างมาก

ใช่. Copilot การเติมคำอัตโนมัติ Groovyโค้ดพื้นฐานสำหรับยูทิลิตี้และ XmlHolder ควรเรียกใช้สคริปต์ก่อนเสมอ เพราะสคริปต์ที่ถูกต้องตามหลักไวยากรณ์จะรายงานว่า Script Assertion Passed โดยไม่คำนึงถึงการเปรียบเทียบของคุณ

ใช่แล้ว ฟิลด์เนื้อหาของการยืนยันรองรับการขยายคุณสมบัติ ดังนั้นค่าที่คาดหวังจึงสามารถดึงมาจากคุณสมบัติของโปรเจ็กต์หรือกรณีทดสอบแทนที่จะเป็นค่าคงที่ ซึ่งทำให้การยืนยันหนึ่งรายการสามารถนำกลับมาใช้ซ้ำได้ในสภาพแวดล้อมต่างๆ

หากการตรวจสอบล้มเหลว ระบบจะทำเครื่องหมายขั้นตอนการทดสอบนั้นว่าล้มเหลวในมุมมองกรณีทดสอบ และเขียนข้อความ "ล้มเหลว" พร้อมรายละเอียดความล้มเหลวลงในบันทึกการดำเนินการทดสอบที่ด้านล่างของหน้าต่าง

ประกอบด้วย, ไม่ประกอบด้วย, การจับคู่ XPath, การจับคู่ XQuery, SLA การตอบสนอง, สคริปต์, รหัสสถานะ HTTP ที่ถูกต้องและไม่ถูกต้อง, การเปิดเผยข้อมูลที่ละเอียดอ่อน และการปฏิบัติตาม Schema เทียบกับ WADL หรือ Schema ที่อนุมานได้

สรุปโพสต์นี้ด้วย: