CupCode.cc
Section 02 · Module 06 · Lesson 01 · ~22–26 นาที

วงจรชีวิตของ Defect

บั๊กไม่ได้จบแค่ตอน QA เจอแล้วกดปุ่มรายงาน หลังจากนั้นยังมีการ triage, แก้, retest, close หรือ reopen อีกหลายช่วง ถ้าทีมไม่เข้าใจวงจรนี้เหมือนกัน งานจะวนลูป เสียเวลา และเกิดการโทษกันง่าย บทนี้จะช่วยให้คุณเห็นภาพ defect lifecycle แบบที่ใช้ทำงานจริง

เวลาเรียน: 22–26 นาที ต้องรู้มาก่อน: Module 05 ทั้งหมด รูปแบบ: อ่าน + ดูสถานะ defect + แบบฝึกสั้น

จบบทนี้แล้วคุณจะ...

  • อธิบายได้ว่า defect lifecycle คืออะไรและทำไมทีมต้องมีความเข้าใจร่วมกัน
  • รู้จักสถานะ defect ที่พบบ่อย เช่น New, Assigned, Fixed, Retest, Closed, Reopened
  • เห็นบทบาทของ QA, Dev และ PM ในแต่ละช่วงของวงจร defect
  • แยกให้ออกว่า defect ไหนควรถูก reopen, defer, reject หรือ mark เป็น duplicate
  • ใช้วงจร defect เป็นเครื่องมือจัดการงาน ไม่ใช่แค่สถานะในเครื่องมือ
1 · Defect lifecycle สำคัญกว่าที่คิด

เพราะ “เจอบั๊ก” ยังไม่ใช่ “ปัญหาถูกจัดการแล้ว”

หลายทีมพอ QA เจอบั๊กก็คิดว่างานเสร็จไปครึ่งหนึ่งแล้ว แต่จริง ๆ หลังจาก report แล้ว ยังมีคำถามอีกเยอะ:

  • ใครจะเป็นคนตัดสิน severity/priority?
  • Dev รับไปเมื่อไร?
  • fixed แล้ว QA จะ retest เมื่อไร?
  • ถ้าแก้ไม่ตรง จะ reopen ยังไง?
  • ถ้า bug นี้ไม่แก้ตอนนี้ จะ defer หรือ accept risk อย่างไร?

ถ้าทีมไม่มีภาพร่วมกัน defect จะวนอยู่ในสถานะต่าง ๆ แบบไม่สร้างความชัดเจน เช่น:

  • QA คิดว่า dev ยังไม่รับ
  • dev คิดว่า QA ยังไม่ได้ให้ข้อมูลครบ
  • PM คิดว่าบั๊กนี้ไม่สำคัญ
  • release day มาถึง แต่ยังไม่มีใครชัดว่าบั๊กไหนปิดได้จริง

defect lifecycle จึงช่วยให้ทีมตอบว่า “ตอนนี้ปัญหานี้อยู่ตรงไหนของกระบวนการแล้ว”

2 · สถานะ defect ที่พบบ่อย

ชื่ออาจต่างกันตามเครื่องมือ แต่ความหมายหลักมักคล้ายกัน

สถานะ ความหมายแบบง่าย
New / Open QA เพิ่งรายงาน defect เข้ามา
Triaged / Accepted ทีม review แล้ว เห็นตรงกันว่านี่คือ defect และควรจัดการ
Assigned / In Progress มี dev รับงานไปดูหรือกำลังแก้
Fixed dev แก้แล้ว และพร้อมให้ QA retest
Retest / Verify QA กำลังตรวจว่า fix ใช้ได้จริงหรือไม่
Closed retest ผ่าน และ defect นี้ถือว่าจบ
Reopened QA retest แล้วพบว่ายังไม่หาย หรือแก้ไม่ครบ
Deferred รับรู้ว่าเป็น defect แต่เลื่อนไปแก้รอบหลัง
Rejected / Not a Bug ทีมเห็นว่าไม่ใช่ defect จริง หรือเป็น expected behavior
Duplicate เป็น defect เดียวกับที่มีรายงานไว้ก่อนหน้า

บางทีมมีสถานะมากกว่านี้ เช่น Ready for QA, Blocked, Won't Fix แต่แนวคิดหลักยังเหมือนเดิม

3 · ตัวอย่างวงจรแบบ end-to-end

เห็นภาพทีละก้าวจะเข้าใจมากกว่าท่องชื่อสถานะ

สมมติ QA พบว่า:

“จ่ายเงินสำเร็จ แต่ order ไม่ถูกสร้าง”

วงจรอาจเป็นแบบนี้:

  1. QA รายงาน defect พร้อม evidence → สถานะ New
  2. ทีม triage ตอนเช้า เห็นตรงกันว่าเป็น critical → Accepted
  3. assign ให้ dev ที่ดู payment callback → Assigned
  4. dev แก้โค้ดและ merge ไป staging → Fixed
  5. QA retest ซ้ำด้วยเงื่อนไขเดิม → Retest
  6. ถ้า order ถูกสร้างถูกต้องแล้ว และไม่มี side effect → Closed
  7. ถ้าอาการเดิมหาย แต่ไปเกิดปัญหา “สร้าง order ซ้ำ” แทน → อาจเปิด defect ใหม่ หรือ Reopened ตามบริบท

การเห็น defect lifecycle เป็น flow แบบนี้ช่วยให้ทีมไม่ใช้สถานะมั่ว ๆ

4 · QA มีหน้าที่อะไรในวงจรนี้

ไม่ใช่แค่เปิด defect แล้วรอ

บทบาทของ QA ใน defect lifecycle มักมีอย่างน้อย 4 เรื่อง:

1. Report ให้ชัด

ถ้า defect ตั้งต้นไม่ชัด วงจรถัดไปทั้งหมดจะช้าลง

2. ช่วย triage ด้วยบริบทการใช้งานจริง

QA มักเป็นคนอธิบายได้ว่า:

  • เจอในเงื่อนไขไหน
  • กระทบผู้ใช้อย่างไร
  • มี workaround หรือไม่
  • เกิดซ้ำได้แค่ไหน

3. Retest อย่างมีวินัย

QA ไม่ได้เช็กแค่ว่า “อาการเดิมหายไหม” แต่ควรมองด้วยว่า:

  • fix ครอบคลุมจริงหรือไม่
  • มี regression ใกล้เคียงไหม
  • พฤติกรรมใหม่ยังสมเหตุสมผลไหม

4. ติดตาม defect ให้จบจริง

บางครั้ง defect ไม่ได้ติดที่การแก้ แต่ติดที่:

  • ยังไม่มีข้อมูลเพิ่ม
  • deploy ยังไม่ถึง env ที่ QA ใช้
  • เจ้าของงานไม่ชัด

QA ที่ดีจะช่วยตามเรื่องโดยไม่ปล่อยให้ defect ค้างแบบเงียบ ๆ

5 · Reopen เมื่อไรดี

ไม่ใช่ทุกอย่างที่ยังไม่พอใจต้อง reopen ทันที

ให้ลองแยกแบบนี้:

ควร Reopen

  • อาการเดิมยังเกิดซ้ำ
  • แก้ไปบางส่วน แต่เงื่อนไขสำคัญยังพัง
  • expected result ที่ตกลงกันไว้ยังไม่ผ่าน

อาจไม่ควร Reopen แต่ควรเปิด defect ใหม่

  • fix ตัวเดิมหายแล้ว แต่ก่อ regression คนละอาการ
  • พบ issue ใหม่ที่มี root cause คนละจุด

อาจไม่ควร Reopen

  • สิ่งที่ QA เห็นเป็น expected behavior ตามที่ทีมตกลงใหม่
  • ปัญหาเกิดจาก test data หรือ environment ไม่พร้อม

การ reopen อย่างมีเหตุผลจะช่วยให้ทีมไม่รู้สึกว่า defect tracking เป็นเกมจับผิด

6 · Deferred, Rejected, Duplicate ไม่ได้แปลว่าเสียของ

สถานะเหล่านี้ช่วยเก็บความจริงของงาน

Deferred

ใช้เมื่อทีมรับรู้ว่าเป็น defect จริง แต่ตัดสินใจเลื่อนไปก่อน เพราะ:

  • release ใกล้มาก
  • impact ต่ำ
  • fix เสี่ยงต่อ regression สูง

Rejected / Not a Bug

ใช้เมื่อ:

  • พฤติกรรมตรงตาม requirement ที่ตกลงกัน
  • เป็น misunderstanding
  • report ยังพิสูจน์ไม่ได้ว่าเป็น defect จริง

Duplicate

ใช้เมื่อมี defect เดิมอยู่แล้ว และ issue ใหม่นี้ควรถูก trace ไปที่ตัวเดิม ไม่ใช่สร้าง noise เพิ่ม

สถานะเหล่านี้ไม่ได้ทำให้ defect “หายไป” แต่ช่วยให้ backlog ของปัญหาสะอาดขึ้นและสื่อสารได้ตรงขึ้น

7 · ข้อผิดพลาดที่พบบ่อยใน defect lifecycle

หลายปัญหาไม่ได้อยู่ที่บั๊ก แต่อยู่ที่วิธีทีมจัดการกับบั๊ก

1. ใช้สถานะไม่ชัด

เช่น dev เปลี่ยนเป็น Fixed ทั้งที่ deploy ยังไม่ถึง env ที่ QA ใช้จริง

2. ปิด defect เร็วเกินไป

แค่ merge code แล้วรีบปิด ทั้งที่ QA ยังไม่ retest

3. ไม่มี triage ที่ชัด

defect ถูกเปิดเรื่อย ๆ แต่ไม่มีใครตัดสิน priority หรือ owner

4. Reopen โดยไม่อธิบาย

ถ้า QA reopen โดยไม่มีข้อมูลเพิ่ม dev จะไม่รู้ว่าต้องแก้อะไรต่อ

Practice

แบบฝึก: ตัดสินสถานะ defect ให้เหมาะกับเหตุการณ์

  1. QA รายงานว่า login ด้วย SSO ไม่ได้ Dev ตรวจแล้วพบว่า staging ตั้งค่า callback URL ผิด ไม่ใช่ bug ใน code ควรไปสถานะไหน

    ดูคำตอบแนะนำ

    ถ้าเป็นปัญหา environment configuration มากกว่าตัว product defect อาจไม่ควรปิดเป็น fixed defect แบบปกติ อาจ mark เป็น rejected / not a bug แล้วเปิดงาน infra หรือ environment issue แยกต่างหาก ขึ้นกับ process ของทีม

  2. QA retest แล้วอาการเดิมหาย แต่พบว่า fix ทำให้หน้าถัดไปแสดงข้อมูลผิดแทน ควร reopen หรือเปิดใหม่

    ดูคำตอบแนะนำ

    ถ้าอาการใหม่เป็นคนละปัญหาและคนละ expected result มักควรเปิด defect ใหม่ แล้วปิดของเดิมถ้าผ่านตาม scope เดิม เพื่อให้ tracking ชัดว่ามี regression ใหม่เกิดขึ้น

  3. ทีมยืนยันว่า bug นี้มีจริง แต่ release พรุ่งนี้และ impact ต่ำมาก ตัดสินใจแก้ sprint หน้า ควรใช้สถานะอะไร

    ดูคำตอบแนะนำ

    มักใช้ Deferred หรือสถานะเทียบเท่า เพื่อสื่อว่าทีมรับรู้ defect นี้แล้ว แต่ยังไม่แก้ในรอบนี้

  4. Dev เปลี่ยนสถานะ defect เป็น fixed หลัง merge code แต่ยังไม่ได้ deploy ไป staging คุณในฐานะ QA ควรทำอย่างไร

    ดูคำตอบแนะนำ

    ควร align ความหมายของสถานะกับทีมให้ชัด ถ้า Fixed ในทีมควรหมายถึง “พร้อมให้ retest” ก็ยังไม่ควรเปลี่ยนจนกว่า build จะขึ้น env ที่ QA ใช้จริง ไม่เช่นนั้น defect tracking จะให้ภาพหลอกว่าปัญหาพร้อมตรวจแล้วทั้งที่ยังไม่พร้อม

สิ่งที่ต้องเอาติดตัวไปจากบทนี้

  • defect lifecycle ช่วยให้ทีมรู้ว่าปัญหาแต่ละตัวอยู่ตรงไหนของกระบวนการ ไม่ใช่แค่ถูกเจอแล้ว
  • สถานะต่าง ๆ เช่น New, Fixed, Retest, Closed, Reopened, Deferred ควรมีความหมายร่วมกันทั้งทีม
  • QA มีบทบาทตั้งแต่ report, triage, retest ไปจนถึงช่วยให้ defect ถูกปิดอย่างถูกต้อง
  • ไม่ใช่ทุกปัญหาต้อง reopen และไม่ใช่ทุก issue ควรถือว่าเป็น bug ใน code
  • defect lifecycle ที่ดีช่วยลดงานวน ลดการโทษกัน และทำให้ release decisions ชัดขึ้น