สรุปบทที่ 5 เรื่อง Integration Testing RESTful Web Services จากหนังสือ The Way of the Web Tester

จากท้ายบทที่4 จะมีการเกริ่นขึ้นมาถึง RESTful มาในบทนี้จะเป็นการบอกว่าเจ้า RESTful เนี่ยเป็นยังไงมีรายละเอียดอะไรบ้าง เรามาดูกัน

จะทดสอบยังไงกันนนนนนนนนนนนนนนนนนนนนน

Dave กับทีมของเขาเนี่ยก็ได้ใช้ RESTful API ในการพัฒนา โดยในการ test RESTful เนี่ยก็ได้มีเขียนทั้งหมด 4 รูปแบบ นั่นก็คือ GET , POST , PUT , DELETE

เพิ่มเติมสักเล็กน้อย เรื่อง CRUD
CRUD เนี่ยเป็นตัวย่อมาจาก Create , Read , Update และ Delete การรู้ตัวย่อเพิ่มขึ้นทำให้มีประโยชน์ หากเราได้ยินคนอื่นพูดถึงเกี่ยวกับ APIs จะต้องมีการทำงานของ CRUD ซึ่ง CRUDเนี่ย การทำงานก็จะมีความคล้ายกับ RESTful ถ้าเปรียบเทียบก็คือ GET (Read) , POST(Create) , PUT(Update) , DELETE(Delete)
อีกสักเรื่อง RESTful คืออะไร?
เป็นการสร้าง webservice ชนิดหนึ่งที่สื่อสารกันบน internet คือไม่มี session ซึ่งต่างจาก webservice แบบอื่น เช่น WSDL และ SOAPและการทำงานของ RESTful เนี่ย จะอาศัย URI/URL ของ request เพื่อค้นหาและประมวลผลส่งกลับมาในรูป XML/HTML/JSON โดย response ที่ส่งกลับมาจะเป็นการยืนยันผลของคำสั่งที่ส่งมา
URI กับ URL ต่างกันยังไง?
URI คือข้อมูลที่ใช้ระบุตัวตนของทรัพยากร (resource)
โดยที่ resource อาจจะเป็น data, image, file, service, website, หนังสือ, คน หรือ หน่วยงานก็ได้ เรียกว่าอะไรก็ได้ เอามาระบุตัวตน (identify) โดยทำให้ออกมาเป็นรูปแบบเดียวกัน (uniform)
URL คือ URI ที่บอกวิธีการที่จะเข้าถึง/ติดต่อ (locate) resource มาให้ด้วย คือมีรายละเอียดขึ้นไปอีก

HTTP GET

เจ้า HTTP GET เนี่ยมันทำอะไร ที่จริงแล้วมันเอาไว้ทำการเรียกข้อมูลจาก Server

จากรูปเป็นการเรียก ID เป็น 1

โดยถ้าดูจาก URL จะบอกได้ว่า permit เนี่ยเป็น resource , 1 คือ ID และ json คือ format

และนี่คือสิ่งที่ได้มาจากการเรียก ID = 1 จาก server ก็จะให้ JSON กลับคืนมา

แล้วตอนนี้เรากว่าจะได้ JSON มาเนี่ย เจ้า Server มาได้ทำอะไรกับเรา ที่จริงแล้ว Server จะมี Response มาบอกเราเป็น Status Code อย่างภาพทางซ้ายจะบอกว่า Status 200 ส่วนทางขวาจะมี 404 แต่ละรหัสก็จะมีการตอบรับที่ไม่เหมือนกัน มาดูกันว่า Response จาก Server ที่ส่งมาให้เรามีรหัสอะไรบ้าง

Code 1xx : Informational Responses
Code 2xx : Success
Code 3xx : Redirection
Code 4xx : Client Errors
Code 5xx : Server Errors
ในแต่ละตัวเลขหลักร้อย ก็มีย่อยๆไปอีก แต่ละ Code ก็จะอธิบายรายละเอียดที่ลึกขึ้นยังไงก็ลองไปหาความรู้เพิ่มเติมดูนะครับ

ส่วน Code ของ HTTP GET


HTTP POST

เจ้า HTTP POST เนี่ยจะมีความคล้ายคลึงกับ HTTP GET แต่ HTTP POST มันจะส่งข้อมูลไปให้ Server ด้วย

flow การทำงานของมันก็จะบอกประมาณว่า 
1.หาตำแหน่งว่ามีไหม 
2.เช็คตรวจสอบว่ามีไหม ถ้ามี 
3.สร้างเลย 
4.มาหาอีกทีว่ามันสร้างแล้วหรือเปล่า 
5.ถ้ามีก็ตรวจสอบว่าผ่าน

ส่วน Code ของ HTTP POST


HTTP PUT

ถ้าพูดกันง่ายๆ เจ้าตัว HTTP PUT เนี่ยจะเป็นเหมือนการ Update ข้อมูล

ในการที่จะทำ HTTP PUT ได้ต้องผ่านการทำ HTTP POST ในด้านการเขียน code ก็จะเหมือนกับตัว HTTP POST

ส่วน Code ของ HTTP PUT


HTTP DELETE

สำหรับตัวสุดท้ายก็ไม่น่าจะมีอะไรแปลกใจมาก ตรงๆตัวเลยก็คือการ Delete นั่นเอง ก็เพียงแค่ส่ง ID ที่จะ Delete ไปเท่านั้น

ส่วน Code ของ HTTP DELETE


ก็จบกันไปแล้วกับบทที่ 5 น่าจะพอเข้าใจกับพวกการทำงานของ GET , POST , PUT , DELETE กันแล้ว บทที่ 6 จะเป็นยังไงรอติดตามกันต่อไปนะครับบบบบบบบบบบบบบบบบ :)

Reference : https://pragprog.com/book/jrtest/the-way-of-the-web-tester