สิ่งที่ต้องทำความเข้าใจก่อนเขียน API Testing with POSTMAN

Surasak Phothiphiphit
The Deft Technology
3 min readJun 26, 2018

เนื่องจากเห็น หลายๆบล็อค เขียนเกี่ยวกับวิธีการเขียนเทสแล้ว ผมเลยจะมาแนะนำว่า ก่อนที่เราจะเขียนเทส เราควรจะเข้าใจสิ่งใดบ้างก่อนลงมือเขียนเทส ซึ่งปัญหาที่ผมเจอคือ บางคนยังไม่เข้าใจวิธีการทำงานของ 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 Protocols

HTTP Protocol เป็นรูปแบบการสื่อสารของคอมพิวเตอร์รูปแบบหนึ่ง ที่ใช้สื่อสารระหว่าง Client และ Server (Request ➜ Response) (แบบย่อสุดๆ หวังว่าจิเข้าใจกัน)

สารบัญ

HTTP Request

HTTP 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 ตามรูปด้านล่างนี้ ↓
ตัวอย่าง Request Body
Overview HTTP Request

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. ☝

--

--