เส้นทางสู่การเป็น Software Tester กับการสรุปสิ่งที่ได้เรียนรู้จากการฝึกกับ WeLoveBug — WLB-2-Months-Bootcamp ครั้งที่ 4
สวัสดีครับพบกันอีกเช่นเคยกับการสรุปสิ่งที่ได้ฝึกเเละเรียนรู้กับ WeLoveBug — 2 Months Bootcamp ครั้งที่ 4 ครั้งนี้จะเป็นการฝึกเเละเรียนรู้เกี่ยวกับ Postman😁
เริ่มต้นด้วยในวันที่ 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/ หลังจากดาวน์โหลดเสร็จเเล้วจะได้หน้าตาดังนี้
หลังจากกดเพิ่ม Request เเล้วจะเป็นดังรูปด้านล่าง
ในช่วงเวลาของการฝึก เป็นการทดลองฝึกจากโจทย์ “ Shopping cart ” โดยจะมีอยู่ 2 เวอร์ชัน ซึ่งโจทย์ฝึกนี้จะเป็นการฝึกส่ง API เเล้วดูผลลัพธ์ว่า ได้ตรงตามที่ต้องการหรือไม่ โดยวันเเรกจะใช้ Shopping cart เวอร์ชันเเรก โดยในเวอร์ชันเเรกนี้จะเป็นการลองส่งข้อมูลผ่าน URL เพื่อร้องขอข้อมูลไปตรงๆ ซึ่งมีหัวข้อทั้งหมดดังนี้
- Product list คือ การแสดงรายการสินค้า
- Product detail คือ การแสดงข้อมูลของสินค้าชิ้นนั้น
- Submit order คือ การยืนยันการสั่งซื้อสินค้า โดยจะส่งข้อมูลสินค้าและที่อยู่ในการจัดส่ง
- 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 ขึ้นมาเพื่อที่จะช่วยในส่วนนี้โดยมีวิธีดังนี้
- เลือกชื่อ Environment ทางด้านซ้ายมือ เเละ กดปุ่ม +
- ใส่ชื่อ Environment ตามที่ต้องการ
- หลังจากนั้นกด Save เพื่อบันทึก 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 โดยอ้างอิงตามชื่อ ล้อมรอบด้วยวงเล็บปีกกาคู่ซึ่งหากทำทุกอย่างเสร็จเรียบร้อยเเล้ว ข้อมูลที่ได้รับจะเป็นเหมือนเดิม
การใส่ Token
หลังจากทำ Shopping cart เวอร์ชันเเรก เสร็จเเล้ว ได้มีการฝึกโดยใช้โจทย์ Shopping cart เวอร์ชันที่สอง โดยจะยากขึ้นตรงที่จะมีเรื่องการใช้ login เข้ามาเกี่ยวข้อง โดยหลังจากส่งข้อมูลกลับไปหาแหล่งข้อมูลที่มีอยู่ผ่าน URL เเล้วผลลัพธ์ที่ได้จะเป็น Token ซึ่งจะต้องนำตัว Token นี้ไปใส่ใน Header ด้วย ซึ่งหากไม่ใส่ข้อมูลตรงส่วนนี้ ก็จะไม่ได้ผลลัพธ์ ส่งกลับมา โดยจะใส่ข้อมูลใน Header เพิ่มคือ Authorization: Bearer ตามด้วย Token ที่ได้รับมา เช่น Authorization: Bearer GkPtMtSDkoaqyKFoHAtmlq91XHhOg6ZS
หรืออีกรูปเเบบนึงคือ ไปที่หัวข้อ Authorization → เลือก Type ที่ต้องการ → จากนั้นใส่ Token ที่ได้รับมา