เส้นทางสู่การเป็น Software Tester กับการสรุปสิ่งที่ได้เรียนรู้จากการฝึกกับ WeLoveBug — WLB-2-Months-Bootcamp ครั้งที่ 4

Supachot S.
WeLoveBug dot Com
Published in
4 min readJul 14, 2023

สวัสดีครับพบกันอีกเช่นเคยกับการสรุปสิ่งที่ได้ฝึกเเละเรียนรู้กับ WeLoveBug — 2 Months Bootcamp ครั้งที่ 4 ครั้งนี้จะเป็นการฝึกเเละเรียนรู้เกี่ยวกับ Postman😁

https://assets.apidog.com/blog/2023/04/postman-logo.png

เริ่มต้นด้วยในวันที่ 4–6 กรกฏาคม 2566 เป็นการเข้า Workshop เป็นระยะเวลา 3 วัน ซึ่งหัวข้อคือ “ 3 Days E2E-Testing-with-Postman in Action Workshop ” โดยก่อนจะไปถึงการสรุปผมขอเริ่มด้วย Postman คืออะไร ?

Postman คืออะไร ?

Postman คือ เครื่องมือที่ใช้ในการช่วยทดสอบระบบหรือ API ที่พัฒนาขึ้นมา เพื่อให้เราทดสอบว่าระบบสามารถตอบกลับมาถูกต้องไหม โดยวิธีการส่ง Request และดู Response ที่ได้รับกลับมา โดยสามารถติดตั้ง Postman ได้ตามลิงค์นี้เลยครับ https://www.postman.com/downloads/ หลังจากดาวน์โหลดเสร็จเเล้วจะได้หน้าตาดังนี้

ภาพตัวอย่างหลังจากดาวน์โหลด Postman เสร็จเเล้ว

หลังจากกดเพิ่ม Request เเล้วจะเป็นดังรูปด้านล่าง

ภาพตัวอย่างหลังจากกดเพิ่ม Request ใน Postman

ในช่วงเวลาของการฝึก เป็นการทดลองฝึกจากโจทย์ “ Shopping cart ” โดยจะมีอยู่ 2 เวอร์ชัน ซึ่งโจทย์ฝึกนี้จะเป็นการฝึกส่ง API เเล้วดูผลลัพธ์ว่า ได้ตรงตามที่ต้องการหรือไม่ โดยวันเเรกจะใช้ Shopping cart เวอร์ชันเเรก โดยในเวอร์ชันเเรกนี้จะเป็นการลองส่งข้อมูลผ่าน URL เพื่อร้องขอข้อมูลไปตรงๆ ซึ่งมีหัวข้อทั้งหมดดังนี้

  1. Product list คือ การแสดงรายการสินค้า
  2. Product detail คือ การแสดงข้อมูลของสินค้าชิ้นนั้น
  3. Submit order คือ การยืนยันการสั่งซื้อสินค้า โดยจะส่งข้อมูลสินค้าและที่อยู่ในการจัดส่ง
  4. Confirm payment คือ การยืนยันการชำระเงิน โดยจะส่งข้อมูลการชำระเงินเพื่อนำไปตัดเงินที่ธนาคารและส่งข้อมูลที่อยู่ในการจัดส่งให้กับทางขนส่งสินค้า

ในหัวข้อ Product list จะเป็นการส่งการร้องขอข้อมูลไปที่ URL: https://dminer.in.th/api/v1/product ซึ่งใช้ Method : GET เเละมี header คือ Accept: application/json หลังจากใส่ข้อมูลเรียบร้อยเเล้วจะได้ผลลัพธ์ดังด้านล่าง

{
"total": 2,
"products": [
{
"id": 1,
"product_name": "Balance Training Bicycle",
"product_price": 119.95,
"product_image": "/Balance_Training_Bicycle.png"
},
{
"id": 2,
"product_name": "43 Piece dinner Set",
"product_price": 12.95,
"product_image": "/43_Piece_dinner_Set.png"
}
]
}

ต่อมาหัวข้อ Product detail จะคล้าย ๆ กับหัวข้อ Product list เเต่จะเป็นการส่งการร้องขอข้อมูลไปที่ URL: https://dminer.in.th/api/v1/product/:id ซึ่ง id ที่ใช้คือ 2 โดย URL หลังจากใส่ id เรียนร้อยเเล้วจะเป็นดังต่อไปนี้ “ https://dminer.in.th/api/v1/product/2 ” หลังจากนั้นใช้ Method : GET เเละมี header คือ Accept: application/json เหมือนกับหัวข้อ Product list ซึ่งหลังจากใส่ข้อมูลเรียบร้อยเเล้วจะได้ผลลัพธ์ดังด้านล่าง

{
"id": "2",
"product_name": "43 Piece dinner Set",
"product_price": 12.95,
"product_image": "/43_Piece_dinner_Set.png",
"quantity": "10",
"product_brand": "CoolKidz"
}

หลังจากนั้นในหัวข้อ Submit order และ Confirm payment จะเป็นการใช้ Method : POST หมายถึงจะเป็นการส่งข้อมูลกลับไปหาแหล่งข้อมูลที่มีอยู่ เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ โดยจะมีข้อมูลบางส่วนเเนบไปด้วย

ตัวอย่างที่ 1 หัวข้อ Submit order จะเป็นการส่งข้อมูลกลับไปหาแหล่งข้อมูลที่มีอยู่ผ่าน URL : https://dminer.in.th/api/v1/order โดยใช้ Method : POST เเละมี header คือ Accept: application/json กับ Content-Type: application/json หลังจากนั้นในส่วนข้อ Body จะใส่ข้อมูลดังตัวอย่างนี้ เพื่อยืนยันการสั่งซื้อสินค้า

{
"cart": [
{
"product_id": 2,
"quantity": 1
}
],
"shipping_method": "Kerry",
"shipping_address": "405/37 ถ.มหิดล",
"shipping_sub_district": "ท่าศาลา",
"shipping_district": "เมือง",
"shipping_province": "เชียงใหม่",
"shipping_zip_code": "50000",
"recipient_name": "ณัฐญา ชุติบุตร",
"recipient_phone_number": "0970809292"
}

ซึ่งผลลัพธ์ที่จะได้รับคือ รหัสคำสั่งซื้อเเละราคารวมทั้งหมด

{
"order_id": 8004359122,
"total_price": 14.95
}

ตัวอย่างที่ 2 หัวข้อ Confirm payment จะเป็นการส่งข้อมูลกลับไปหาแหล่งข้อมูลที่มีอยู่ผ่าน URL : https://dminer.in.th/api/v1/confirmPayment โดยใช้ Method : POST เเละมี header คือ Accept: application/json กับ Content-Type: application/json เหมือนกับหัวข้อ Submit order เเต่จะเปลี่ยนส่วน Body ที่จะใส่ข้อมูลเป็นดังนี้

{
"order_id": 8004359122,
"payment_type": "credit",
"type": "visa",
"card_number": "4719700591590995",
"cvv": "752",
"expired_month": 7,
"expired_year": 20,
"card_name": "Karnwat Wongudom",
"total_price": 14.95
}

ซึ่งผลลัพธ์ที่จะได้รับของหัวข้อ Confirm payment คือ ข้อมูลการเเจ้งเตือนดังนี้

{
"notify_message": "วันเวลาที่ชำระเงิน 1/3/2020 13:30:00 หมายเลขคำสั่งซื้อ 8004359122 คุณสามารถติดตามสินค้าผ่านช่องทาง Kerry หมายเลข 1785261900"
}

การสร้าง Environment เเละ การนำไปใช้

ซึ่งหาก URL บางส่วนที่จะต้องใส่เหมือนกันทุกครั้งที่ส่งการลดข้อผิดผลาดในการพิมพ์ ดังนั้นเราจะสร้าง Environment ขึ้นมาเพื่อที่จะช่วยในส่วนนี้โดยมีวิธีดังนี้

  1. เลือกชื่อ Environment ทางด้านซ้ายมือ เเละ กดปุ่ม +
  2. ใส่ชื่อ Environment ตามที่ต้องการ
  3. หลังจากนั้นกด Save เพื่อบันทึก Environment ที่เพิ่มขึ้นใหม่
ผลลัพธ์หลังจากสร้าง Environment เสร็จเเล้ว

หลังจาก Save เเล้วจะต้องตั้งชื่อ Variable ในกรณีนี้ จะตั้งชื่อว่า “ host ” หลังจากตั้งชื่อเสร็จ ให้นำเอา URL บางส่วนที่จะต้องใส่เหมือนกันทุกครั้ง ไปใส่ที่หัวข้อ Initial value และ Current value ยกตัวอย่าง หาก URL คือ https://dminer.in.th/api/v1/confirmPayment และเราจะต้องใส่ https://dminer.in.th ทุกครั้งที่จะทำการทดสอบ API ใน Collection นั้น ๆ ดังนั้นเราจะนำ https://dminer.in.th ส่วนนี้ไปใส่ที่ Initial value และ Current value

ภาพตัวอย่างการตั้งค่า Environment

หลังจากนั้นจะต้องเลือกใช้ Environment ที่จะใช้งานที่ด้านบนขวาของเวิร์กเบนช์

ภาพตัวอย่างการเลือกใช้ Environment กับ Collection

จากนั้น หากจะใช้ค่า Environment โดยอ้างอิงตามชื่อ ล้อมรอบด้วยวงเล็บปีกกาคู่ซึ่งหากทำทุกอย่างเสร็จเรียบร้อยเเล้ว ข้อมูลที่ได้รับจะเป็นเหมือนเดิม

การใช้ Environment โดยอ้างอิงตามชื่อ ล้อมรอบด้วยวงเล็บปีกกาคู่

การใส่ Token

หลังจากทำ Shopping cart เวอร์ชันเเรก เสร็จเเล้ว ได้มีการฝึกโดยใช้โจทย์ Shopping cart เวอร์ชันที่สอง โดยจะยากขึ้นตรงที่จะมีเรื่องการใช้ login เข้ามาเกี่ยวข้อง โดยหลังจากส่งข้อมูลกลับไปหาแหล่งข้อมูลที่มีอยู่ผ่าน URL เเล้วผลลัพธ์ที่ได้จะเป็น Token ซึ่งจะต้องนำตัว Token นี้ไปใส่ใน Header ด้วย ซึ่งหากไม่ใส่ข้อมูลตรงส่วนนี้ ก็จะไม่ได้ผลลัพธ์ ส่งกลับมา โดยจะใส่ข้อมูลใน Header เพิ่มคือ Authorization: Bearer ตามด้วย Token ที่ได้รับมา เช่น Authorization: Bearer GkPtMtSDkoaqyKFoHAtmlq91XHhOg6ZS

ตัวอย่างการใส่ Token ที่ Header

หรืออีกรูปเเบบนึงคือ ไปที่หัวข้อ Authorization → เลือก Type ที่ต้องการ → จากนั้นใส่ Token ที่ได้รับมา

ตัวอย่างการใส่ Token ที่ หัวข้อ Authorization

--

--