ข้อกล่าวอ้างใน SoapUI: สคริปต์, XQuery, ประเภท XPath
⚡ สรุปอย่างชาญฉลาด
ข้อกล่าวอ้างใน SoapUI จุดตรวจสอบเหล่านี้เป็นตัวตัดสินว่าการตอบสนองของเว็บเซอร์วิสนั้นถูกต้องหรือไม่ โดยเปลี่ยนคำขอที่เพียงแค่ดำเนินการให้เป็นการทดสอบที่ผ่านหรือล้มเหลวบนเนื้อหาจริงที่ตรวจสอบได้
การยืนยันคืออะไร?
การยืนยันหมายถึงการกระทำที่ยืนยันหรือระบุบางสิ่งบางอย่าง นอกจากนี้ยังสามารถตีความได้ว่าเป็นจุดตรวจสอบหรือจุดตรวจสอบ
เมื่อส่งคำขอไปยังเว็บเซิร์ฟเวอร์แล้ว จะได้รับคำตอบกลับมา เราจำเป็นต้องตรวจสอบว่าคำตอบนั้นมีข้อมูลที่เราคาดหวังหรือไม่ ในการตรวจสอบคำตอบ เราจำเป็นต้องใช้ assertion หากไม่มี assertion ขั้นตอนการทดสอบจะพิสูจน์ได้เพียงว่าบริการตอบกลับมาเท่านั้น ไม่ได้พิสูจน์ว่าตอบกลับมาอย่างถูกต้อง ซึ่งเป็นเหตุผลว่าทำไมทุกๆ การทดสอบจึงต้องใช้ assertion การทดสอบ API ควรพกติดตัวอย่างน้อยหนึ่งชิ้น
ประเภทของการยืนยัน
มีหลายวิธีในการแสดงความคิดเห็น แต่เราจะเน้นไปที่วิธีที่ใช้กันทั่วไป SoapUI ประเภทการยืนยันขณะตรวจสอบความถูกต้องของการตอบกลับ ด้านล่างนี้คือหมวดหมู่ที่มีอยู่ในเวอร์ชันโอเพนซอร์ส SoapUI.
- เนื้อหาทรัพย์สิน
- มาตรฐานสถานะการปฏิบัติตาม
- ต้นฉบับ
- SLA
- จส
- ความปลอดภัย
กล่องโต้ตอบจะจัดกลุ่มข้อความยืนยันทั้งหมดไว้ภายใต้หมวดหมู่เหล่านั้น ดังที่แสดงในภาพหน้าจอด้านล่าง

นอกเหนือจากรายการที่กล่าวมาข้างต้นแล้ว เวอร์ชัน Pro ยังมี JDBC Assertion ในตัว ซึ่งเราสามารถใช้ตรวจสอบได้ว่าเว็บเซอร์วิสได้อัปเดตฐานข้อมูลอย่างถูกต้องหรือไม่
หมายเหตุเกี่ยวกับเวอร์ชัน: ปัจจุบัน SoapUI เอกสารยังระบุถึง เจดีบีซี หมวดหมู่ (สถานะ JDBC และหมดเวลา JDBC) ควบคู่ไปกับหมวดหมู่ข้างต้น และ เนื้อหาข้อความ การยืนยันภายในเนื้อหาคุณสมบัติเพื่อการเปรียบเทียบ XML ที่สมบูรณ์ยิ่งขึ้น รุ่นเชิงพาณิชย์ที่กล่าวถึงในที่นี้ว่า “Pro” ปัจจุบันวางจำหน่ายแล้ว ReadyAPI เนื่องจากเป็นเวอร์ชันของ SmartBear ดังนั้นป้ายกำกับเมนูในเวอร์ชันใหม่กว่าอาจแสดงผลแตกต่างออกไป ในขณะที่พฤติกรรมการตรวจสอบยังคงเหมือนเดิม
ประกอบด้วยการยืนยัน
ค้นหาการมีอยู่ของสตริงที่ระบุ นอกจากนี้ยังรองรับการแสดงออกปกติด้วย
เราจะดำเนินการต่อด้วยตัวอย่างเดียวกันจากบทช่วยสอนก่อนหน้านี้โดยมีคำขอ WSDL เป็น http://www.dneonline.com/calculator.asmxหากคุณยังไม่ได้สร้างโปรเจกต์นั้น ให้ลองทำตามขั้นตอนต่อไปนี้ การสร้างโปรเจ็กต์ ชุดทดสอบ และกรณีทดสอบ ก่อน
ขั้นตอนที่ 1: โดยค่าเริ่มต้นจะไม่มีการตรวจสอบใดๆ
- จำนวนการยืนยันจะแสดงอยู่ในแท็บการยืนยัน
- หากต้องการเพิ่มการยืนยันใหม่ ให้คลิกที่ปุ่ม 'เพิ่มการยืนยันใหม่'
ขั้นตอนที่ 2: ตอนนี้
- เลือกหมวดหมู่การยืนยัน
- เลือกประเภทการยืนยัน
- คลิก 'เพิ่ม'
ขั้นตอนที่ 3: ตรวจสอบว่าสตริง '46' มีอยู่ในคำตอบหรือไม่ คลิก 'ตกลง'
หมายเหตุ: นอกจากนี้เรายังสามารถละเว้นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และเพิ่มนิพจน์ทั่วไปได้
ขั้นตอนที่ 4: หลังจากเพิ่มข้อมูลแล้ว ระบบจะทำการตรวจสอบทันทีและแสดงผลว่าถูกต้องหรือไม่ถูกต้อง
ขั้นตอนที่ 5: สมมติว่าตอนนี้เราเปลี่ยนเนื้อหาของ 'Contains Assertion in' SoapUIเปลี่ยน ' เป็น '47' แล้วดูว่าจะเกิดอะไรขึ้น
ขั้นตอนที่ 6: ระบบจะทำการตรวจสอบและแสดงผลลัพธ์ให้ผู้ใช้ทราบ เนื่องจากไม่พบสตริง '47' ในผลลัพธ์ การตรวจสอบจึงล้มเหลว
ไม่มีการยืนยัน
ฟังก์ชันที่ตรงข้ามกันจะทำงานในทางตรงกันข้าม คือค้นหาการไม่มีอยู่ของสตริงที่ระบุ นอกจากนี้ยังรองรับนิพจน์ปกติ (Regular Expression) ด้วย
ขั้นตอนที่ 1: หลังจากคลิกปุ่ม 'เพิ่มการยืนยันใหม่' แล้ว
- เลือกหมวดหมู่การยืนยัน
- เลือกประเภทการยืนยัน - ในกรณีนี้ 'ไม่มี'
- คลิก 'เพิ่ม'
ขั้นตอนที่ 2: ตรวจสอบว่าสตริง 'intA' มีอยู่ในคำตอบหรือไม่ ป้อนสตริง 'FromCurrency' แล้วคลิก 'ตกลง'
ขั้นตอนที่ 3: ทันทีที่เพิ่มคำสั่งยืนยัน ระบบจะดำเนินการและแสดงผลลัพธ์ ในตอนนี้เราได้เพิ่มคำสั่งยืนยันไปแล้วสองคำสั่ง ดังนั้นคำสั่งยืนยันทั้งสองจึงถูกดำเนินการและแสดงผลลัพธ์
ขั้นตอนที่ 4: ตอนนี้เรามาเปลี่ยนเนื้อหาของ 'Not Contains Assertion' และดูว่าจะเกิดอะไรขึ้น เราจะตรวจสอบว่าไม่มีสตริง "AddResult" อยู่
ขั้นตอนที่ 5: สตริง 'AddResult' มีอยู่ในคำตอบจริง ดังนั้นการตรวจสอบ 'NOT Contains' จะล้มเหลวดังที่แสดงด้านล่าง
การยืนยันการจับคู่ XPath
การจับคู่สตริงนั้นไม่แม่นยำ ดังนั้นการตรวจสอบครั้งต่อไปจึงมุ่งเป้าไปที่โหนดเดียวแทน โดยใช้การแสดงออก XPath เพื่อเลือกโหนดเป้าหมายและค่าต่างๆ ในโหนดนั้น XPathเป็นภาษาสอบถาม XML สำหรับเลือกโหนดจากเอกสาร XML
ขั้นตอนที่ 1: หลังจากคลิกปุ่ม 'เพิ่มการยืนยันใหม่' แล้ว
- เลือกหมวดหมู่การยืนยัน
- เลือกประเภทการยืนยัน – ในกรณีนี้คือ 'XPath Match'
- คลิก 'เพิ่ม'
ขั้นตอนที่ 2: หน้าต่าง Add XPath จะเปิดขึ้น
ก่อนที่จะเพิ่ม SoapUI ใน XPath เราจำเป็นต้องประกาศเนมสเปซ เนมสเปซ XML คือชุดของชื่อที่ระบุโดยการอ้างอิง Uniform Resource Identifier (URI) ซึ่งใช้ในเอกสาร XML เป็นชื่อองค์ประกอบและแอตทริบิวต์ เช่นเดียวกับที่ใช้ใน SoapUI การยืนยัน XPath
ในการประกาศเนมสเปซ XML เราเพียงแค่คลิกที่ปุ่ม 'ประกาศ' ซึ่งจะดำเนินการให้เราโดยอัตโนมัติ หรือเราสามารถประกาศเนมสเปซด้วยตนเองก็ได้เช่นกัน
หลังจากประกาศเนมสเปซแล้ว เราจำเป็นต้องอ้างอิง XPath โดยใช้เนมสเปซที่สร้างขึ้น
เมื่อคลิกปุ่ม 'ประกาศ' จะมีเนมสเปซสองรายการปรากฏขึ้น เนื่องจากเรามี URI สองรายการ โดยรายการหนึ่งคือสคีมา URL ส่วนอีกส่วนหนึ่งนั้นสอดคล้องกับบริการเว็บจริง URLเราต้องใช้เนมสเปซจริงที่เว็บเซอร์วิสตั้งอยู่ และไม่ใช่เนมสเปซของสคีมา ในขณะที่อ้างอิง XPath บรรทัดที่ประกาศจะปรากฏที่ด้านบนของกล่อง XPath ดังที่แสดงด้านล่าง
ประกาศสบู่เนมสเปซ = 'http://schemas.xmlsoap.org/soap/envelope/';
ประกาศเนมสเปซ ns1='http://tempuri.org/';
ขั้นตอนที่ 3: ตอนนี้เราต้องป้อน XPath ของโหนด XML ที่เราต้องการตรวจสอบความถูกต้อง
//ns1:AddResult ให้ค่าของโหนดที่อยู่ระหว่างนั้นแก่เรา - และ ns1 สอดคล้องกับเนมสเปซที่ประกาศซึ่งชี้ไปที่ 'http://tempuri.org/'
หลังจากป้อน XML แล้ว เราจะต้องคลิกที่ 'เลือกจากปัจจุบัน' เพื่อให้ค่าจากการตอบกลับปัจจุบันถูกหยิบขึ้นมาเพื่อการเปรียบเทียบในอนาคต
ขั้นตอนที่ 4: จนถึงตอนนี้
- หลังจากประกาศเนมสเปซแล้ว เราได้ป้อน XPath ของโหนด XML ที่เราจำเป็นต้องตรวจสอบ
- เราจำเป็นต้องคลิก 'เลือกจากปัจจุบัน' เพื่อให้ค่าปัจจุบันเป็นค่าที่คาดหวัง
- ค่าปัจจุบันจะแสดงให้ผู้ใช้เห็นซึ่งเราสามารถแก้ไขได้หากจำเป็น
- คลิก 'บันทึก'
ขั้นตอนที่ 5: การยืนยันเพิ่มเติมใน SoapUI จะแสดงผลดังที่แสดงด้านล่างนี้
การยืนยันสคริปต์
เทคนิคการยืนยันนี้เป็นเทคนิคที่ใช้กันอย่างแพร่หลายที่สุด เนื่องจากเป็นเรื่องยากมากที่จะจัดการและรักษาการยืนยันหลายร้อยรายการ
SoapUI ใช้อย่างใดอย่างหนึ่ง Groovy การเขียนสคริปต์หรือ Javaต้นฉบับ สำหรับการเขียนสคริปต์เพื่อตรวจสอบความถูกต้อง เทคนิคการเขียนสคริปต์นี้ถูกนำมาใช้ในการพัฒนาping กรอบการทำงานสำหรับการทดสอบ SOAP การเขียนสคริปต์เพื่อตรวจสอบความถูกต้องจะใช้ในสถานการณ์ต่อไปนี้
- การเขียนสคริปต์ช่วยให้ผู้ใช้สามารถดำเนินการบางอย่างก่อนและหลังการรันเคสทดสอบโดยใช้วิธีการตั้งค่าและการยกเลิกการตั้งค่าตามลำดับ การตั้งค่าคือขั้นตอนที่ดำเนินการก่อนการรันเมธอดเฉพาะ (ตัวอย่างเช่น การสร้างและการเริ่มต้นใช้งานอ็อบเจ็กต์) ในขณะที่การยกเลิกการตั้งค่าคือขั้นตอนที่ดำเนินการหลังจากรันเมธอดแล้ว (เช่น การทำลายอ็อบเจ็กต์และการทำความสะอาด) คุณสมบัตินี้ไม่มีในประเภทการยืนยันอื่นๆ และสามารถทำได้ผ่านการเขียนโค้ดเท่านั้น
- โปรแกรมนี้ช่วยให้ผู้ใช้สามารถเปิด/ปิดโปรเจ็กต์ เพื่อเริ่มต้นหรือล้างการตั้งค่าที่เกี่ยวข้องกับโปรเจ็กต์ และยังสามารถทำงานกับตัวแปรสภาพแวดล้อม ซึ่งมีประโยชน์มากในระหว่างการเขียนสคริปต์
- ช่วยเราในการยืนยันเนื้อหาการตอบสนองแบบไดนามิก
- สคริปต์แอสเซมบลีชันใช้สำหรับสร้างแอสเซมบลีชันที่ผู้ใช้กำหนดเอง ซึ่งไม่ได้ถูกกำหนดไว้ล่วงหน้าโดยระบบ SoapUI.
เพื่อแสดงการยืนยันสคริปต์ใน SoapUIเราจะใช้ไฟล์ WSDL ของเครื่องคิดเลข ซึ่งเป็นกรณีทดสอบ "การบวก" ที่เราสร้างไว้ก่อนหน้านี้
ขั้นตอนที่ 1: ขั้นตอนการเพิ่มสคริปต์ Groovy นั้นเหมือนกับขั้นตอนการเพิ่มการตรวจสอบเงื่อนไขอื่นๆ ยกเว้นว่าการตรวจสอบเงื่อนไขนี้ไม่ใช่การตรวจสอบเงื่อนไขที่กำหนดไว้ล่วงหน้า แต่เป็นการตรวจสอบเงื่อนไขที่ผู้ใช้กำหนดเอง ซึ่งมีความยืดหยุ่นมากกว่าการตรวจสอบเงื่อนไขที่มีอยู่แล้ว
เลือกขั้นตอนการทดสอบที่จะต้องเพิ่มการยืนยัน
คลิกปุ่ม 'เพิ่มการยืนยัน' ดังที่แสดงด้านล่าง
ขั้นตอนที่ 2: เลือกหมวดหมู่การยืนยัน (Assertion category)
- ในกรณีนี้คือสคริปต์
- เลือก SoapUI Script Assertion และไม่มีประเภทย่อยใด ๆ ที่เกี่ยวข้องกับมัน
- คลิก 'เพิ่ม'
ขั้นตอนที่ 3: หน้าต่างการเขียนสคริปต์จะเปิดขึ้น ซึ่งผู้ใช้จะสามารถเขียนสคริปต์ที่กำหนดเองเพื่อตรวจสอบความถูกต้องของ XML ที่ได้รับกลับมาได้
ขั้นตอนที่ 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"}
- คลิกปุ่ม 'ดำเนินการ' เพื่อเริ่มการดำเนินการ
- ผลลัพธ์ของสคริปต์จะแสดงในบานหน้าต่างผลลัพธ์ มีการพิมพ์ทั้งมูลค่า Conversion และผลลัพธ์สุดท้าย (ผ่านหรือล้มเหลว)
- ระบบจะแสดงข้อมูลว่า 'Script Assertion Passed' คลิก OK
หมายเหตุ: ป๊อปอัปข้อมูลสุดท้ายจะแสดงพร้อมข้อความ 'Script Assertion Passed' เสมอ ตราบใดที่สคริปต์มีไวยากรณ์ที่ถูกต้อง ไม่มีความสัมพันธ์กับการยืนยันของคุณภายในสคริปต์
คลิกตกลง
ขั้นตอนที่ 5: ตอนนี้แท็บการยืนยันจะแสดงการยืนยันทั้งหมดที่เราได้เพิ่มไว้สำหรับชุดทดสอบนี้ พร้อมสถานะกำกับแต่ละการยืนยัน
ขั้นตอนที่ 6: ตอนนี้
- เลือกชุดทดสอบจากแผนผังเนวิเกเตอร์
- คลิกปุ่ม 'เรียกใช้'
- ผลลัพธ์จะแสดงสำหรับชุดการทดสอบทั้งหมด
การยืนยันการจับคู่ XQuery
โค้ดนี้ใช้การแสดงออกของ XQuery เพื่อเลือกเนื้อหาจากคุณสมบัติเป้าหมาย เราต้องการ XML ที่ตอบกลับมาขนาดใหญ่กว่านี้มากเพื่อให้เข้าใจการยืนยัน XQuery ได้ดีขึ้น SoapUIเรามาลองนำเข้าไฟล์ WSDL อีกไฟล์หนึ่งตามที่แสดงด้านล่างนี้: http://www.webservicex.net/medicareSupplier.asmx?WSDL
หมายเหตุ เนื่องจากเอนด์พอยต์สาธิต webservicex.net สาธารณะที่ใช้ในตัวอย่างนี้ไม่สามารถเข้าถึงได้อย่างน่าเชื่อถืออีกต่อไปแล้ว ดังนั้นภาพหน้าจอคำขอและคำตอบด้านล่างจึงเก็บไว้เป็นตัวอย่างอ้างอิง WSDL ใดๆ ที่ส่งคืนชุดโหนดที่ซ้ำกันจะใช้การตรวจสอบ XQuery ในลักษณะเดียวกันทุกประการ
ขั้นตอนที่ 1: คลิกขวาที่โปรเจ็กต์ที่มีอยู่แล้ว และเลือก 'เพิ่ม WSDL'
ขั้นตอนที่ 2: หน้าต่าง Add WSDL จะเปิดขึ้นมา ปล่อยตัวเลือกอื่นๆ ไว้ตามค่าเริ่มต้น แล้วคลิกปุ่ม 'ตกลง'
ขั้นตอนที่ 3: การดำเนินการทั้งหมดแสดงไว้ดังที่แสดงด้านล่าง
ขั้นตอนที่ 4: ตอนนี้เรามาเพิ่ม กรณีทดสอบ ภายในชุดทดสอบเดียวกันกับที่เราสร้างขึ้น การทดสอบ ตัวแปลงสกุลเงิน
ขั้นตอนที่ 5: ป้อนชื่อของกรณีทดสอบแล้วคลิกปุ่ม 'ตกลง'
ขั้นตอนที่ 6: สร้างกรณีทดสอบดังแสดงด้านล่าง
ขั้นตอนที่ 7: เพิ่มขั้นตอนการทดสอบใหม่ประเภท 'คำขอทดสอบ SOAP' ดังแสดงด้านล่าง
ขั้นตอนที่ 8: ป้อนชื่อขั้นตอนการทดสอบ สมมติว่าเป็น Supplier_by_City ซึ่งจะมีความหมายมากกว่า คลิก 'ตกลง'
ขั้นตอนที่ 9: เลือกปุ่ม Operaข้อมูลที่เราต้องการตรวจสอบ ในกรณีนี้คือ 'MedicareSupplierSoap -> GetSupplierByCity' คลิก 'ตกลง'
ขั้นตอนที่ 10: ป้อนชื่อของกรณีทดสอบแล้วคลิก 'ตกลง'
ขั้นตอนที่ 11: โครงร่าง XML ของคำขอจะแสดงดังที่แสดงด้านล่าง
ขั้นตอนที่ 12: ตอนนี้เรามาค้นหาข้อมูลซัพพลายเออร์ทั้งหมดสำหรับเมือง 'นิวยอร์ก' กัน
เมื่อต้องการทำเช่นนี้ ให้เพิ่มบรรทัดต่อไปนี้ลงในโค้ดของคุณ
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL ด้านล่าง URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
ขั้นตอนที่ 13: เมื่อทำการทดสอบ เราจะได้รับผลลัพธ์ดังต่อไปนี้
ขั้นตอนที่ 14: สมมติว่าเราต้องการตรวจสอบหมายเลขซัพพลายเออร์ทั้งหมด เราไม่สามารถใช้ XPath Assertion ได้เนื่องจากเราต้องมี XPath Assertion หลายร้อยรายการ ดังนั้นการใช้ XQuery จึงเป็นสิ่งที่หลีกเลี่ยงไม่ได้ในกรณีนี้
XQuery Assertion ช่วยให้เราตรวจสอบกลุ่มการตอบสนอง XML ที่มีลักษณะซ้ำกัน
ขั้นตอนที่ 15: ตอนนี้คลิกที่ 'เพิ่มการยืนยัน'
- เลือก 'หมวดหมู่การยืนยัน' – เนื้อหาทรัพย์สินในกรณีนี้
- เลือกประเภทการยืนยันเป็น 'การยืนยัน XQuery'
- คลิก 'เพิ่ม'
ขั้นตอนที่ 16: เช่นเดียวกับการยืนยัน XPath เราจำเป็นต้องประกาศเนมสเปซ
- คลิกปุ่ม 'ประกาศ' เพื่ออนุญาตโดยอัตโนมัติ SoapUI เพื่อประกาศเนมสเปซ เมื่อคลิกปุ่มประกาศ จะมีหน้าต่างป๊อปอัพแสดงข้อความว่า "ประกาศเนมสเปซจากสคีมาแทน" ปรากฏขึ้น คลิก "ใช่" เพื่อดำเนินการต่อดังที่แสดงด้านล่าง
- ในการเรียกข้อมูล Supplier Number ทั้งหมด เราจำเป็นต้องเขียน XPath Query และเราจะวางไว้ภายใน < SupplierNumber> และ แท็ก
- คลิก 'เลือกจากปัจจุบัน' ซึ่งจะดำเนินการจากการตอบกลับปัจจุบัน
- เมื่อคลิก 'เลือกจากรายการปัจจุบัน' หมายเลขผู้จำหน่ายทั้งหมดจะปรากฏขึ้น
- คลิก 'บันทึก'
หมายเหตุ: หลังจากกดปุ่ม 'ประกาศ' คุณอาจได้ผลลัพธ์ที่แตกต่างออกไป 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)} }
ขั้นตอนที่ 17: การตรวจสอบ XQuery จะถูกดำเนินการและแสดงผลลัพธ์สุดท้ายในแผง 'การตรวจสอบ' ดังที่แสดงด้านล่าง ตอนนี้เราได้เพิ่มการตรวจสอบ XQuery เรียบร้อยแล้ว ซึ่งเราใช้ในการตรวจสอบข้อมูลหมายเลขซัพพลายเออร์ทั้งหมด ข้อมูลเหล่านี้จะถูกเปรียบเทียบกับข้อมูลจริงทุกครั้งที่มีการส่งคำขอไปยังเว็บเซิร์ฟเวอร์
หมายเหตุ: ค่าจริงจะไม่ปรากฏ หากค่าจริงทั้งหมดตรงกับค่าที่คาดไว้ ระบบจะแสดงเป็น VALID มิฉะนั้นระบบจะแสดงเป็น 'Failed'
เมื่อใดจึงจะใช้การยืนยันแบบ Inbuilt?
เมื่อได้กล่าวถึงทั้งตัวเลือกแบบคลิกเมาส์และแบบใช้สคริปต์แล้ว คำถามที่สำคัญก็คือควรเลือกใช้แบบใด
- เมื่อการตอบกลับสั้นจนสามารถตรวจสอบได้โดยใช้การยืนยันที่มีอยู่อย่างใดอย่างหนึ่ง
- นอกจากนี้เรายังสามารถใช้ Inbuilt Assertion ได้หากการตอบกลับที่ส่งจากเว็บเซิร์ฟเวอร์มีลักษณะคงที่อยู่เสมอ หากเป็นแบบไดนามิก เราจะไม่สามารถยืนยันโดยใช้การยืนยันแบบฝังได้
- เมื่อการใช้การยืนยันในตัว เช่น การยืนยันการหมดเวลา และการยืนยันความปลอดภัยกลายเป็นเรื่องที่หลีกเลี่ยงไม่ได้
- Inbuilt Assertions ถือว่าค่อนข้างดีสำหรับการใช้งานครั้งเดียวโดยไม่จำเป็นต้องทำการทดสอบซ้ำ
ตัวเลือกการยืนยัน
การยืนยันที่สร้างขึ้นสามารถควบคุมได้ดีที่สุดด้วยความช่วยเหลือของแผงควบคุมที่ไฮไลต์ด้านล่าง
ข้อความยืนยันที่สร้างขึ้นช่วยให้ผู้ทดสอบสามารถกำหนดค่าสิ่งต่าง ๆ ต่อไปนี้ได้จากกล่องเครื่องมือข้อความยืนยัน
| ตัวเลือกเสริม (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' ซึ่งหมายความว่าปัญหาอยู่ที่พารามิเตอร์ที่ส่งมาจากฝั่งไคลเอ็นต์ โดยคำขอที่มีค่าไม่ถูกต้องจะแสดงขึ้นก่อน
การตอบกลับจะส่งรหัสข้อผิดพลาดกลับมาแทนผลลัพธ์ ดังแสดงด้านล่าง
โปรดตรวจสอบให้แน่ใจว่าคุณใช้ไวยากรณ์ที่ถูกต้องขณะใช้การตรวจสอบ XPath และ XQuery คุณไม่ควรใช้จุด (.) แทนเครื่องหมายโคลอน (:) ในการตรวจสอบข้างต้น ไวยากรณ์ที่ถูกต้องคือ //namespace:Tagname และไม่ใช่ //namespace.tagname การทำเช่นนั้นอาจทำให้คุณได้รับข้อความว่า 'ไม่พบการจับคู่ในคำตอบปัจจุบัน' แม้ว่าชื่อแท็กจะถูกต้องก็ตาม














































