สิ่งที่ต้องทำความเข้าใจก่อนเขียน API Testing with POSTMAN
เนื่องจากเห็น หลายๆบล็อค เขียนเกี่ยวกับวิธีการเขียนเทสแล้ว ผมเลยจะมาแนะนำว่า ก่อนที่เราจะเขียนเทส เราควรจะเข้าใจสิ่งใดบ้างก่อนลงมือเขียนเทส ซึ่งปัญหาที่ผมเจอคือ บางคนยังไม่เข้าใจวิธีการทำงานของ REST API’s แต่จะต้องทำการเทส เลยทำให้การเทสนั้นเป็นไปได้ยาก เคยไหม นี้อะไรโน้นอะไร โอ้ยเต็มไปหมด …
.. เลยเกิดบทความนี้ขึ้นมาหวังว่าจะเป็นประโยชน์แก่ หลายๆคน
REST(Representational State Transfer)
API’s(Application programming interface)
เราควรจะเข้าใจวิธีการสื่อสาร หรือ การทำงานของ REST API’s ก่อน ซึ่งเมื่อเราเข้าใจจะทำให้การเขียนเทสของเรานั้นลื่นไหล่ขึ้น เบื้องหลังของ REST API’s ต่างๆก็คือ HTTP Protocol งั้นเรามาเริ่มทำความเข้ากัน กับ HTTP Protocol กันเล๊ย ~
*เนื้อหาบางจุดผมอาจจะไม่ได้ลงลึกเพราะจุดประสงค์คือ อยากจะทำให้คนเข้าใจองค์ประกอบด้วยรวมสะก่อน
HTTP (HyperText Transfer Protocol)
HTTP Protocol เป็นรูปแบบการสื่อสารของคอมพิวเตอร์รูปแบบหนึ่ง ที่ใช้สื่อสารระหว่าง Client และ Server (Request ➜ Response) (แบบย่อสุดๆ หวังว่าจิเข้าใจกัน)
สารบัญ
HTTP Request คือ การส่งคำสั่งเพื่อขอข้อมูลจาก Server ประกอบไปด้วยส่วนต่างๆ ดังนี้ (Client Request ➜ Server)
- URL คือ ที่อยู่ของเครื่อง Server ประกอบไปด้วย
{protocol}://{hostname}:{port}/{path}?{param_1}={value} จะได้เป็น
https://www.example.com:80/animal?type=dog
- HTTP Headers คือ ข้อมูลเพิ่มเติมที่เราต้องการส่งไปพร้อมกับ Request Header เช่น
Authorization bearer {token} เป็นการส่ง token ให้กับ Server เพื่อยืนยันสิทธิ์
Content-Type: application/json
- HTTP Methods เป็นการระบุว่า ในแต่ล่ะ Request เราจะคุยกันผ่าน Method ไหน โดยส่วนมาก เราจะแบ่งตามตารางด้านล่าง ซึ่งตอน Developer ออกแบบ API’s จะต้องระบุว่า แต่ล่ะ Request จะใช้ Method ไหน
- Query String คือ การข้อมูลเพิ่มเติมที่เราต้องการให้ Server ส่งกลับมาให้เรา จะมองว่าเหมือนการ Filter ก็ได้เพื่อความเข้าใจ ส่วนมากจะใช้กับ Method GET ตัวอย่าง จากด้านบน
?{param_1}={value} แปลงได้เป็น https://example.com/animal?type=dog- จะสรุปด้านบนได้คือ ขอข้อมูล Animal นะแต่เอาเฉพาะ Type dog นะ
- Request Body คือ การส่งข้อมูลที่เราต้องการส่งให้ Server ส่วนมากจะใช้กับ Methods POST, PUT เอ๊ะทำไมมันเหมือน Parameter ล่ะ? ส่วนที่แตกต่างกันคือ
Parameter นั้นเราจะสามารถมองเห็นได้ตรง URL เลย(ดูได้จากภาพ Overview) ส่วนมากจะใช้เพื่อระบุข้อมูลที่เราต้องการ(GET)Request Body จะไม่มีอยู่ใน URL ให้เราเห็น ส่วนมากจะใช้เพื่อส่งข้อมูลให้กับ Server(POST, PUT) และเราสามารถกำหนด Content-type ที่เราจะส่งให้ Server ได้ด้วย เพราะ Server อาจจะไม่ได้รองรับ ทุก Type แต่ส่วนมากจะเป็น JSON(application/json) wiki ตามรูปด้านล่างนี้ ↓
HTTP Response คือ ข้อมูลที่ Server นั้นตอบกลับมาให้จาก HTTP Request (Server Response ➜ Client)
- ✯Response Status Code เป็นสิ่งแรกๆเลยที่ผมมักจะดูเพราะว่า มันบอกสถานะของ Request นั้นๆว่า สำเร็จ, ไม่สำเร็จ หรือแม้กระทั่ง Server Errors และ เราก็เอา Status ตรงนี้แหละ ไปเขียนเป็น Test Scripts
- ✯Response Body คือ ข้อมูลที่ Server ตอบกลับมาให้ ข้อมูลตรงนี้แหละที่เราจะเอาไปเขียนใน Test Scripts
- มันมีเยอะกว่านี้แต่ผมขอละไว้เท่านี้ เพื่อจะได้ไม่ลงลึกเกินไป
เท่านี้เราก็สามารถสร้าง Request เพื่อขอข้อมูล และ เขียนเทสจากข้อมูลที่ Response มาได้ละครับ ลองลงมือทำเลยครับไม่ยาก ✌
สิ่งที่ต้องทำความรู้จักใน POSTMAN
พอดีว่าข้างล่างนี้คือ Outline ที่จะเขียนบทความนี้ แต่เห็นว่ามีบทความอื่นอธิบายไว้หมดแล้ว ก็หวังว่ามันอาจจะเป็นประโยชน์เลยมาแปะไว้ ลองทำความเข้าใจไปทีละหัวข้อตามข้างล่างนี้ก็ได้ครับ
Variables
- Manage Evironments
- Setting Environments
- Environment Variables
- Global Variables
- How to use variables.
Collection / Request
- Chain Request
Mock Servers
Test Scripts
- Pre-request Script
- Test Scripts
Run
- Collection Runner
- Result Runs
💡 Tips and Tricks
- Presets เป็นการใช้ Headers Presets ทำให้เราไม่ต้องการทำพิมพ์เองในทุกๆ Request
- Snippets
- Newman
- Data from CSV
บางส่วนที่ผมไม่ได้อธิบายเพิ่มเติม เพราะว่า Blogs ที่ผมแปะลิ้งค์ไว้ อธิบายไว้เคลียร์หมดแล้วนะครับ
ผิดพลาดประการใด ขอภัยด้วยนะครับ ขอบคุณมากครับ
You Can Do IT. ☝