บทช่วยสอนการทดสอบบริการเว็บ: จะทดสอบอย่างไร เรียนรู้ด้วยตัวอย่าง
เว็บเซอร์วิสคืออะไร?
บริการเว็บเป็นกลไกหรือสื่อกลางการสื่อสารที่แอปพลิเคชัน/เครื่องสองเครื่องจะใช้แลกเปลี่ยนข้อมูลโดยไม่คำนึงถึงสถาปัตยกรรมและเทคโนโลยีพื้นฐาน
การทดสอบบริการเว็บคืออะไร?
การทดสอบบริการเว็บ คือการทดสอบซอฟต์แวร์ประเภทหนึ่งที่ตรวจสอบบริการบนเว็บ วัตถุประสงค์ของการทดสอบบริการเว็บคือการตรวจสอบฟังก์ชันการทำงาน ความน่าเชื่อถือ ประสิทธิภาพ และความปลอดภัยของ API (Application Program Interface) การทดสอบบริการเว็บจะคล้ายกับการทดสอบหน่วยในบางกรณี คุณสามารถทดสอบ Webservice ด้วยตนเองหรือสร้างโค้ดอัตโนมัติของคุณเอง หรือใช้เครื่องมืออัตโนมัติที่มีจำหน่ายทั่วไป เช่น Postman.
เหตุใดจึงจำเป็นต้องมีบริการเว็บ?
โดยทั่วไปแอปพลิเคชันซอฟต์แวร์ได้รับการพัฒนามาเพื่อให้มนุษย์ใช้งาน โดยผู้ใช้จะส่งคำขอไปยังบริการซอฟต์แวร์ ซึ่งจะส่งคำตอบกลับมาในรูปแบบที่มนุษย์สามารถอ่านได้
ในยุคเทคโนโลยีสมัยใหม่ หากคุณต้องการสร้างแอปพลิเคชันซอฟต์แวร์ คุณไม่จำเป็นต้องสร้างทุกอย่างตั้งแต่เริ่มต้น มีบริการสำเร็จรูปมากมายที่คุณสามารถเสียบเข้ากับแอปพลิเคชันของคุณ และคุณสามารถเริ่มให้บริการเหล่านั้นในแอปพลิเคชันของคุณได้
ตัวอย่างเช่น คุณต้องการแสดงข้อมูลพยากรณ์อากาศที่คุณไม่จำเป็นต้องรวบรวม ประมวลผล และแสดงผลข้อมูลในแอปพลิเคชันของคุณ คุณสามารถซื้อบริการจากบุคคลที่มีชื่อเสียงในการประมวลผลและเผยแพร่ข้อมูลประเภทนี้ได้
บริการทางเว็บช่วยให้เราสามารถใช้งานประเภทนี้ได้
ตัวอย่างเช่น พิจารณา WebService ต่อไปนี้
http://www.webservicex.net/stockquote.asmx?op=GetQuote
มันให้มูลค่าหุ้นสำหรับบริษัท
มาดูราคาหุ้นของ Google กัน (สัญลักษณ์: GOOG )
XML ตอบกลับให้ราคาหุ้น
WebService นี้สามารถเรียกใช้โดยแอปพลิเคชันซอฟต์แวร์โดยใช้โปรโตคอล SOAP หรือ HTTP
โปรโตคอลบริการเว็บ
เว็บเซอร์วิสสามารถนำไปใช้งานในรูปแบบต่างๆ แต่สองวิธีต่อไปนี้เป็นวิธีการใช้งานที่นิยมใช้กัน
- SOAP (โปรโตคอลการเข้าถึงวัตถุอย่างง่าย)
- REST (สถาปัตยกรรมการถ่ายโอนสถานะแบบแทนค่า)
สบู่
SOAP เป็นโปรโตคอลมาตรฐานที่กำหนดโดยมาตรฐาน W3C สำหรับการส่งและรับคำขอและการตอบกลับบริการเว็บ
SOAP ใช้ รูปแบบ XML เพื่อส่งและรับคำขอ และด้วยเหตุนี้ข้อมูลจึงเป็นข้อมูลที่ไม่ขึ้นอยู่กับแพลตฟอร์ม ข้อความ SOAP มีการแลกเปลี่ยนระหว่างแอปพลิเคชันของผู้ให้บริการและแอปพลิเคชันการรับภายในห่อหุ้ม SOAP
เนื่องจาก SOAP ใช้โปรโตคอลการขนส่ง http แบบง่าย ข้อความจึงไม่ถูกบล็อกโดยไฟร์วอลล์
REST
REST หมายถึง REpresentational State Transfer เป็นสถาปัตยกรรมที่โดยทั่วไปทำงานบน HTTP รูปแบบ REST เน้นที่การโต้ตอบระหว่างไคลเอนต์และบริการ ซึ่งได้รับการปรับปรุงด้วยจำนวนการดำเนินการที่จำกัด REST เป็นทางเลือกแทน SOAP (Simple Object Access Protocol) และแทนที่จะใช้ XML สำหรับการร้องขอ REST จะใช้ URL แบบง่ายในบางกรณี ไม่เหมือนกับ SOAP แอปพลิเคชัน RESTFUL ใช้ส่วนหัวที่สร้างใน HTTP เพื่อส่งเมตาอินฟอร์เมชัน
มีโค้ดต่างๆ ที่ REST ใช้เพื่อกำหนดว่าผู้ใช้มีสิทธิ์เข้าถึง API หรือไม่ เช่น รหัส 200 หรือ 201 บ่งชี้ถึงการโต้ตอบที่ประสบความสำเร็จกับเนื้อหาการตอบสนอง ในขณะที่ 400 บ่งชี้ถึงคำขอที่ไม่ถูกต้อง หรือ URI คำขอไม่ตรงกับ API ในระบบ พารามิเตอร์คำขอ API และพารามิเตอร์วิธีการทั้งหมดสามารถส่งผ่านทางใดทางหนึ่งได้ POST or GET ตัวแปร
Rest API รองรับทั้งรูปแบบ XML และ JSON สำหรับการทดสอบ WebServices API มักจะเป็นที่ต้องการสำหรับ โทรศัพท์มือถือ และเว็บแอปทำให้แอปทำงานเร็วและราบรื่นยิ่งขึ้น
wsdl
WSDL (บริการเว็บ Description Language) คือภาษาที่ใช้ XML ซึ่งจะใช้เพื่ออธิบายบริการที่นำเสนอโดยบริการเว็บ
WSDL อธิบายการทำงานทั้งหมดที่นำเสนอโดยบริการเว็บเฉพาะในรูปแบบ XML นอกจากนี้ยังกำหนดวิธีการเรียกใช้บริการ เช่น ค่าอินพุตที่ต้องระบุ และรูปแบบของการตอบสนองที่จะสร้างสำหรับบริการแต่ละประเภทจะเป็นอย่างไร
จะทดสอบบริการเว็บได้อย่างไร?
หากต้องการทดสอบบริการเว็บ คุณสามารถทำได้
- ทดสอบด้วยตนเอง
- สร้างรหัสอัตโนมัติของคุณเอง
- ใช้เครื่องมืออัตโนมัติที่มีจำหน่ายทั่วไป เช่น SoapUI
การทดสอบระบบอัตโนมัติของบริการเว็บเกี่ยวข้องกับขั้นตอนต่อไปนี้
- ทำความเข้าใจกับไฟล์ WSDL
- กำหนดการดำเนินการที่บริการเว็บเฉพาะนั้นให้
- กำหนดรูปแบบคำขอ XML ที่เราต้องส่ง
- กำหนดรูปแบบ XML การตอบสนอง
- การใช้เครื่องมือหรือการเขียนโค้ดเพื่อส่งคำขอและตรวจสอบการตอบสนอง
สมมติว่าเราต้องการทดสอบบริการเว็บที่ให้บริการการแปลงสกุลเงิน มันจะเป็นอัตราการแปลงปัจจุบันระหว่างสกุลเงินของประเทศต่างๆ บริการนี้เราสามารถใช้ในแอปพลิเคชันของเราเพื่อแปลงค่าจากสกุลเงินหนึ่งเป็นสกุลเงินอื่น
ตอนนี้เรามาดูขั้นตอนข้างต้นกัน
ขั้นตอนที่ 1 ถึง 4: ทำความเข้าใจ WSDL และการกำหนดการดำเนินการและรูปแบบ XML
เงินตรา Convertor ไฟล์ WSDL สามารถดูได้ @ (http://www.webservicex.net/CurrencyConvertor.asmx?wsdl
) ซึ่งจะให้ข้อมูลเกี่ยวกับสกุลเงิน Convertoวิธีการบริการเว็บที่จะรองรับ พารามิเตอร์ที่เราต้องส่งผ่าน และประเภทของพารามิเตอร์… ฯลฯ
ขั้นตอนที่ 5: การใช้เครื่องมือหรือการเขียนโค้ดเพื่อส่งคำขอและตรวจสอบการตอบสนอง
มีเครื่องมือทดสอบ WebService มากมายสำหรับทดสอบบริการเว็บ SOAP SoapUI เป็นหนึ่งในความนิยม เครื่องมือเอพีไอ ซึ่งจะช่วยให้เราทดสอบบริการเว็บ SOAP ได้ ในความเป็นจริง คุณสามารถใช้ภาษาการเขียนโปรแกรมใดๆ ที่สามารถส่งคำขอ XML ไปยังแอปพลิเคชันของผู้ให้บริการเว็บผ่าน http และสามารถแยกวิเคราะห์และตรวจสอบ XML ตอบกลับกับผลลัพธ์ที่คาดหวังได้ ในบทช่วยสอนการทดสอบบริการเว็บนี้ เราจะทดสอบ WebService
- การใช้ Java
- การใช้ SoapUI
ส่วนที่ 1) การทดสอบ WebService โดยใช้ Apache Axis2 API (Java).
โดยทั่วไปบริการเว็บจะรับคำขอและส่งการตอบกลับในรูปแบบ XML
โปรเจ็กต์ Apache Axis2 API เป็นโปรเจ็กต์ Java API การใช้งานซึ่งจะใช้เพื่อสร้างบริการบนเว็บสำหรับทั้งฝั่งเซิร์ฟเวอร์ (ผู้ให้บริการ) และฝั่งไคลเอ็นต์ (ผู้ใช้บริการ)
Axis2 สามารถส่งข้อความ SOAP และรับและประมวลผลข้อความ SOAP ได้ เล็กๆ น้อยๆ เราก็เขียนได้ Java โปรแกรมที่ใช้ API เพื่อสร้างบริการเว็บ Axis2 จะสร้าง WSDL จาก Java โปรแกรมที่จะใช้ในการสื่อสารบริการที่นำเสนอโดยบริการเว็บ เราสามารถใช้ Axis2 เดียวกันเพื่อสร้าง Java class (stub) จากไฟล์ WSDL ซึ่งเราสามารถใช้เป็นโปรแกรมไคลเอนต์เพื่อสร้างคำขอบริการเว็บ เพื่อส่งคำขอไปยังจุดสิ้นสุดของบริการ และเพื่อประมวลผลการตอบสนอง
- โดยพื้นฐานแล้วเราจะสร้างแบบง่ายๆ Java โปรแกรมที่เราจะยกตัวอย่างคลาส stub
- การใช้ stub เราจะเรียกใช้วิธีการร้องขอโดยส่งข้อมูลที่จำเป็นทั้งหมด
- โปรแกรม Stub จะแปลงคำขอนั้นเป็นรูปแบบคำขอ XML และส่งจุดสิ้นสุดบริการซึ่งจะอ่านคำขอและประมวลผลคำขอและส่งการตอบสนองในรูปแบบ XML
- การตอบสนอง XML จะถูกแปลงเป็น Java ทีละชั้นและกลับสู่โปรแกรมจริง
มาดูรายละเอียดขั้นตอนข้างต้นกัน
ขั้นตอน a) ดาวน์โหลด axis2 API @ https://axis.apache.org/axis2/Java/core/download.cgi & ตั้งค่าตัวแปรสภาพแวดล้อม 'AXIS2_HOME'
ขั้นตอน b) สร้างโฟลเดอร์เพื่อเก็บสิ่งประดิษฐ์ที่สร้างขึ้นทั้งหมด
เช่น C:\Axis\Projects\CurrencyConverter
ขั้นตอน c) เปิดพรอมต์คำสั่งและไปที่โครงสร้างโฟลเดอร์ที่คุณต้องการสร้างอาร์ทิแฟกต์และเรียกใช้คำสั่งต่อไปนี้ซึ่งจะสร้างสตับ
%AXIS2_HOME%\bin\WSDL2Java -uri http://www.webservicex.net/CurrencyConvertor.asmx?wsdl -p org.apache.axis2.currencyconvertor -d adb –s
ขั้นตอน d) เมื่อรันคำสั่งสำเร็จแล้ว คุณจะเห็นโฟลเดอร์พร้อมไฟล์ที่ต้องการ
ขั้นตอน e) ในขั้นตอนถัดไปของบทช่วยสอนการทดสอบบริการเว็บนี้ เราต้องสร้างโปรแกรมไคลเอนต์ ซึ่งเราจะส่งคำขอจริงโดยใช้สตับที่สร้างขึ้น เปิด Eclipse และสร้างโปรแกรมใหม่ Java โครงการและเลือกโฟลเดอร์ที่เราสร้างไว้ด้านบน
ขั้นตอน f) เพิ่ม jars ที่เกี่ยวข้องกับ axis2 ทั้งหมดไปยังเส้นทางการสร้างโปรเจ็กต์ ซึ่งจะอยู่ในโฟลเดอร์ lib ของโฟลเดอร์ซอฟต์แวร์ axis2
(เช่น: C:\Axis\axis2-1.6.2\lib)
ขั้นตอน g) สร้างใหม่ Java คลาส (เช่น: Client.Java) และยกตัวอย่างอ็อบเจ็กต์ stub การใช้วัตถุ stub ทำให้เราสามารถเรียกใช้วิธีการที่รองรับทั้งหมดของ WebService โดยเฉพาะได้
Client.Java Program package org.apache.axis2.currencyconvertor; import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRate; import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRateResponse; import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.Currency; public class Client { public static void main(Java.lang.String args[]) { try { //Create the stub object by passing the service end point url CurrencyConvertorStub stub = new CurrencyConvertorStub("http://www.webservicex.net/CurrencyConvertor.asmx"); //ConversionRate is the class which we have to use mention the from and to currency //ConversionRate object will be the parameter for the conversionRate operation ConversionRate conversionRate = new ConversionRate(); conversionRate.setFromCurrency(Currency.USD); conversionRate.setToCurrency(Currency.INR); //Create the ConversionRateResponse object, which is going to be used to catch the response //call the conversionRate service using the stub object ConversionRateResponse conversionRateResponse = stub.conversionRate(conversionRate); //We can use the conversionRateResponse object to retrieve the response of the ConversionRate Service System.out.println("Conversion Rate from INR to USD : " + conversionRateResponse.getConversionRateResult()); } catch (Exception e) { e.printStackTrace(); } } }
ส่วนที่ 2) วิธีทดสอบการใช้ SoapUI Web Service
ใน SoapUI
- ไปที่ไฟล์ > โครงการสบู่ใหม่
- ป้อนชื่อโปรเจ็กต์และตำแหน่ง WSDL URI
- คลิกตกลง
- ขยายคำขอแรกและดับเบิลคลิกที่ 'Request1' มันจะแสดงคำขอ SOAP ในรูปแบบ XML
- ป้อนสกุลเงินเริ่มต้นและสกุลเงินถึง
- คลิกที่ปุ่มส่ง
- การตอบสนอง XML จะปรากฏในบานหน้าต่างด้านขวา
ดังที่คุณอาจสรุปได้ว่า การใช้เครื่องมือทดสอบบริการเว็บ เช่น SoapUI จะช่วยเร่งการทดสอบระบบอัตโนมัติของบริการเว็บของคุณ ดังนั้น SoapUi จะมุ่งเน้นการเรียนรู้ของเราในบทช่วยสอนที่ประสบความสำเร็จ
สรุป
- แอปพลิเคชั่นซอฟต์แวร์สื่อสารและแลกเปลี่ยนข้อมูลระหว่างกันโดยใช้ WebService
- SOAP และ REST เป็น 2 โปรโตคอลยอดนิยมในการสร้าง WebService
- SOAP รองรับการแลกเปลี่ยนข้อมูลแบบ XML
- REST รองรับ XML, Json หรือการแลกเปลี่ยนข้อมูลใน URL แบบง่ายสำหรับการทดสอบ WebServices API
- WSDL เป็นภาษาที่ใช้ XML ซึ่งจะใช้เพื่ออธิบายบริการที่นำเสนอโดยบริการเว็บ SOAP ถูกกำหนดโดยใช้ WSDL
-
หากต้องการทดสอบ WebService คุณสามารถทำได้
- สร้างรหัสของคุณเอง เช่น ใช้ Axis2 API สำหรับ Java
- ใช้เครื่องมือ WebService Test Automation เช่น SoapUI
- เครื่องมืออัตโนมัติเช่น SoapUI จะเริ่มต้นการทดสอบอัตโนมัติของบริการเว็บของคุณอย่างรวดเร็ว โดยจะต้องใช้ความพยายามในการเขียนโค้ดน้อยกว่าเมื่อเปรียบเทียบกับการสร้างโค้ดของคุณเองโดยใช้ Axis2 API
คำถามที่พบบ่อย
เรียนรู้เพิ่มเติมเกี่ยวกับ การทดสอบเว็บ API
บทช่วยสอนการทดสอบบริการเว็บนี้เกิดขึ้นได้โดยคุณ Narender Reddy Nukala