169 wordpress feature image (12)

เลิกเป็น QA ที่นั่งรอหน้าจอโหลด แล้วมาเป็น QA ที่หาบั๊กเจอใน 1 วินาทีกันเถอะ!

เคยมั้ยคะ รอ Dev ทำฟีเจอร์ให้เสร็จพร้อมเทสมาเป็นอาทิตย์ พอได้มาเทสจริงๆ ปุ๊บ… 
แค่กดปุ่มแรกไป หน้าจอก็หมุนไม่หยุด หรือ Error แดงเถือก!

แล้วเราก็จะรู้สึกว่า “ให้ฉันรอแล้วได้อะไร” ในเมื่อของก็ยังพังอยู่แบบนี้แล้วชั้นจะเทสยังไงไหว
พอไปบอก Dev ก็อาจจะได้คำตอบว่า เดี๋ยวต้องไปแก้ Logic หลังบ้านก่อน แล้วต้องแก้ UI ให้รับค่าใหม่ด้วย
สรุป… ต้องรอต่อไปอีก 2 วันเพื่อให้ระบบพร้อมเทส (อีกรอบ)

นี่แหละค่ะคือความเจ็บปวดของการทำ UI-Heavy Testing
หรือที่บางคนอาจจะเคยเห็นชื่อ “Ice Cream Cone Testing” 🍦

คือการทำเทสผ่านหน้าจอ (Layer บน) เยอะๆ แต่ฐานข้างล่างอย่าง API หรือ Unit Test กลับกลวงโบ๋
กลายเป็นสามเหลี่ยมกลับหัวที่ฐานไม่แน่น พร้อมล้มตลอดเวลา

วันนี้พี่กิ่งจะมาแชร์ให้เห็นภาพชัดๆ ค่ะว่าการมี API First Mindset จะช่วยให้เราเป็น “QA ร่างทอง” ที่เจอบั๊กไวกว่า และทำงานอย่างมีความสุขขึ้นได้ยังไง

🔥 ลองมาดูตัวอย่างจริงกัน จะได้เห็นภาพ

ตัวอย่างที่ 1: 🛵 ฟีเจอร์ “คำนวณค่าส่งตามระยะทาง” ของแอพสั่งอาหาร

Requirements:
ค่าส่งกม.ละ 5 บาท เกิน 10 กม. ลดค่าส่ง 20%

❌ UI Heavy: เราต้องรอจะกว่าหน้าจอเลือกที่อยู่ หน้าสรุปยอดเงิน และปุ่มชำระเงิน เสร็จก่อน
ถึงจะไปถึงหน้าที่สามารถเทสการคำนวณค่าส่งได้ ถ้าหน้าจอโหลดช้า กว่าจะเทสจบแต่ละเคสกินเวลาเป็นนาที 

แล้วพอเทสไป 2-3 ชม อาจจะเพิ่งมาเจอว่า“ถ้าระยะทางเกิน 10 กม. ระบบไม่คำนวณค่าส่งให้”
ผลคือ Dev ต้องรื้อ Logic การคำนวณใหม่หมด เท่ากับว่าเราเสียเวลา 2-3 ชม.นั้นไปฟรีๆ เพราะต้องเทสซ้ำใหม่หมดอยู่ดี

✅ QA ร่างทอง ต้อง API First: เราไม่รอหน้าจอค่ะ เราขอ API Endpoint จาก Dev มาเทสก่อนได้เลย
แล้วใช้เครื่องมืออย่าง Postman ส่งข้อมูลของเคสต่างๆ เข้าไปถามตรงๆ แล้วก็เช็คผลการคำนวณจากที่ API ตอบกลับมา

  1. ลองส่งระยะทาง 5 กม. -> API ตอบ 25 บาท ถูกต้อง ตรงเป๊ะ!
  2. ลองส่งระยะทาง 100 กม. -> API คำนวณส่วนลดถูกมั้ย
  3. ลองส่งระยะทางแปลกๆไป เช่น ติดลบ, 0 -> API ต้องด่ากลับมานะ ไม่ใช่ตอบอะไรแปลกๆกลับมา
  4. และเคสอื่นๆทั้งหมด ที่เราสามารถเตรียมข้อมูลไว้ก่อนได้เลย

การเทสผ่าน API เราสามารถลิสต์เคสของ Logic ที่มีทั้งหมดไว้ให้พร้อม และเตรียมข้อมูล Input ที่จะใช้ในแต่ละเคสไว้ก่อนได้เลย
ตอนเทสเราก็ลองส่งข้อมูลแต่ละแบบที่เตรียมไว้ และเช็คผลลัพธ์ที่ออกมาได้ทันที โดยไม่ต้องรอกดผ่าน UI
ซึ่งการคิดเคสและการเตรียมข้อมูล เราสามารถคุยและรีวิวร่วมกันกับ Dev และ PO เพื่อที่จะได้มีเคสที่ครอบคลุมทั้งทาง Technical และ Business

ตัวอย่างที่ 2: 🔐 ฟีเจอร์สมัครสมาชิกและตั้งรหัสผ่าน

Requirements:
รหัสผ่านต้องมีตัวใหญ่ ตัวเล็ก ตัวเลข และต้องยาวกว่า 8 ตัวอักษร

❌ UI Heavy: เราต้องพิมพ์ชื่อ อีเมล รหัสผ่านที่ผิดเงื่อนไข ทีละข้อ -> กด Submit -> Error เด้ง -> จดผล -> พิมพ์เคสต่อไป วนไปเรื่อยๆ เหนื่อยเหลือเกินพี่ชาย 😩

✅ QA ร่างทอง ต้อง API First: เตรียมรหัสที่ถูกต้อง และ ผิดเงื่อนไขแต่ละแบบไว้เลย เตรียมส่งรัวๆไปให้ API และเช็ค HTTP Status Code ว่าตรงกับ Expected มั้ย

ผลลัพธ์: เจอบั๊กใน 1 วินาที ตั้งแต่ UI ยังสร้างไม่เสร็จ

ตัวอย่างที่ 3: 💸 เคสแปลกๆ หรือสถานการณ์ที่เกิดขึ้นยาก (Edge Cases)

Requirements: 
ถ้าลูกค้ากดจ่ายเงินเข้ามาสองครั้ง ระบบต้องห้ามตัดซ้ำ และขึ้น Error สำหรับการจ่ายเงินครั้งที่สอง

❌ UI Heavy: การจะทำให้เกิดเคสนี้ขึ้นบน UI เพื่อเทส Error ที่เกิดขึ้ดนั้นทำได้ยากมากกก
สมมติว่าหน้า UI block ให้กดปุ่มแล้ว disable ทันที เราก็อาจจะต้องเตรียมสองหน้าจอที่กดพร้อมกัน หรือเข้าไปแก้ Database กว่าจะเทสได้อาจจะเสียเวลานานหลายชั่วโมง

✅ QA ร่างทอง ต้อง API First: เราสามารถ Mock ข้อมูล หรือเขียน script เผื่อยิง API เข้าไปซ้ำๆกันได้ง่ายกว่าเยอะ และสามารถเช็คได้ทันทีว่าระบบหลังบ้านรับมือกับเคสนี้ได้มั้ย

💡 จะเห็นว่า API ชนะขาด

  1. เจอบั๊กใน 1 วินาที: การยิง API คือการคุยกับ Logic ส่วนนั้นโดยตรง ไม่ต้องผ่าน UI การลดเวลาจากหลัก นาที เป็น วินาที นี่ไม่ใช่น้อยๆนะคะ ถ้าเทสกันหลักสิบหลักร้อยเคสก็ประหยัดเวลาไปได้มากเลยทีเดียว
  2. คัดกรองบั๊กเล็กๆออกไปก่อน: ถ้า API ยังคำนวณเงินผิด ต่อให้หน้าจอจะสวยงามอลังการขนาดไหน มันก็คือแอพที่ใช้ไม่ได้อยู่ดี การเทส API คือการเทส “Logic” ของ Dev ก่อนจะกลายเป็นภาพ
  3. ลดความขัดแย้ง: ยิ่งเราบอก Dev เร็วแค่ไหนว่า “API ตัวนี้คำนวณเงินไม่ถูกนะ” เขาจะยิ่งกลับไปแก้ได้ง่ายขึ้นและเร็วขึ้น เพราะในตอนนั้นเขาอาจจะแค่กลับไปแก้โค้ดแค่ 2-3 บรรทัดก็เสร็จแล้ว แต่ถ้าเรารอจน UI เสร็จ เขาอาจจะต้องไปแก้โค้ดฝั่ง UI รวมถึงการเชื่อม API ด้วย                       

How-to: จะคุยกับทีมยังไง (ถ้า Dev บอกว่ายังไม่เสร็จ หรือให้รอเทสทีเดียว)

QA ร่างทองเราต้อง Shift Left ขยับไปช่วยทีมให้เร็วขึ้นค่ะ

  1. ขอ Contract หรือ Request/Response Schema มาดูก่อน ไม่ต้องรอโค้ดเสร็จก็ได้ค่ะ เราสามารถขอดู API Doc หรือ Swagger ก่อนได้เลย เพื่อที่เราจะได้ช่วยรีวิวได้ตั้งแต่ตอนออกแบบเลย “เอ๊ะ ตรงนี้ต้องส่ง User ID ไปด้วยรึเปล่า” และเราอาจจะเจอบั๊กตั้งแต่ยังไม่เริ่มเทสหรือเขียนโค้ดด้วยซ้ำ)
  2. อย่ารอ UI เสร็จ ถ้า API พร้อม เราขอ API มาเทสก่อนเลยค่ะ บอกทีมว่าจะได้ช่วยเช็ค Logic ให้ก่อน มีอะไรจะได้รีบบอกตั้งแต่เนิ่นๆ ที่สำคัญคือต้องทำให้ทีมรู้ว่า “เรากำลังช่วยลดงานเขา” ไม่ใช่ไปจับผิดเขา
  3. ใช้เครื่องมือช่วย ถ้าส่วนไหนยังไม่เสร็จจริงๆ เราสามารถสร้าง Mock Server ขึ้นมาก่อนได้ เพื่อเทสส่วนที่เสร็จได้ก่อน ยิ่งถ้าได้ API Doc หรือ Swagger มาแล้ว เราสามารถเขียน Test Script รอไว้ได้เลย ได้ของมาเทสเมื่อไหร่ กด Run ปุ๊บ รู้ผลปั๊บ!

การเป็น QA ที่ดี ไม่ใช่แค่เทสสิ่งที่เห็นบนหน้าจอเท่านั้น แต่คือการ ตรวจสอบโครงสร้าง (API/Logic) ให้แข็งแรงตั้งแต่เริ่มต้น ยิ่งเราสามารถกรองบั๊กเล็กๆ ออกไปได้เร็วมากแค่ไหน เราก็ยิ่งมีเวลามาทำงานอย่างอื่นที่ช่วยเพิ่ม Value ให้ทีมได้มากยิ่งขึ้นไปอีก อย่างเช่นการทำ Exploratory Test หรือ การทำความเข้าใจ Use case ของ User จริง เป็นต้น

เลิกเทสแบบไอศกรีมโคน 🍦 ที่สวยแต่ละลายง่าย แล้วมาช่วยกันสร้างพีระมิด 🔺 ที่มั่นคงกันเถอะค่ะ!

📌  อ่านมาถึงตรงนี้ ใครอยากลองเริ่มเทส API แต่ยังใช้เครื่องมือไม่คล่อง เดี๋ยวพี่กิ่งจะเริ่ม Series “Postman 101” พาจับมือทำตั้งแต่พื้นฐาน ไปยันเขียน Script เทสแบบอัตโนมัติ ใครไม่อยากพลาดก็กดติดตามเพจ “With Natsiree” ไว้ได้เลยนะคะ

Leave a Comment

Your email address will not be published. Required fields are marked *