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

Test Types: Smoke, Regression, Exploratory และเพื่อน ๆ

หลังจากรู้แล้วว่าทดสอบในระดับไหน ขั้นต่อมาคือเลือกว่าจะทดสอบด้วย "ประเภท" อะไร เพราะ smoke, sanity, regression, exploratory, performance หรือ security ไม่ได้มีไว้แทนกัน แต่ช่วยตอบความเสี่ยงคนละแบบ

เวลาเรียน: 22–26 นาที ต้องรู้มาก่อน: Module 04 Lesson 01 รูปแบบ: อ่าน + เปรียบเทียบ + เลือกให้เหมาะกับสถานการณ์

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

  • แยก functional test กับ non-functional test ได้ชัดขึ้น
  • เข้าใจบทบาทของ smoke, sanity, regression และ exploratory test
  • รู้ว่าประเภทการทดสอบควรเลือกตาม risk ไม่ใช่ทำให้ครบทุกคำ
  • มองได้ว่าฟีเจอร์หนึ่งอาจต้องใช้หลาย test types ร่วมกัน
  • เริ่มคุยเรื่อง test strategy กับทีมได้แม่นขึ้น
1 · Test Type คืออะไร

มันคือ "มุมของคุณภาพ" ที่เรากำลังตรวจ ไม่ใช่ขนาดของระบบ

ถ้า test level ตอบว่าเราทดสอบระบบในระดับไหน test type จะตอบว่า:

"เรากำลังตรวจคุณภาพด้านไหนของระบบ"

ดังนั้นคุณอาจมี:

  • regression ที่ system level
  • performance ที่ system level
  • functional test ที่ integration level

นั่นทำให้เห็นชัดว่า level กับ type เป็นคนละแกนกัน

2 · แบ่งใหญ่ก่อน: Functional vs Non-functional
Functional Non-functional
ตรวจว่าระบบทำสิ่งที่ควรทำไหม ตรวจว่าระบบทำสิ่งนั้นได้ดีแค่ไหน
login ได้ไหม login เร็วและเสถียรไหม
ใช้คูปองได้ไหม ใช้คูปองพร้อมกันเยอะ ๆ แล้วยังไหวไหม
export report ได้ไหม report ใช้งานง่ายและโหลดเร็วไหม

สิ่งที่มักพลาด

หลายทีมทดสอบ functional เยอะมาก แต่ non-functional เบามาก

ผลคือ:

  • ฟีเจอร์ครบ
  • แต่ช้า
  • ใช้ยาก
  • ล่มง่าย
  • และสุดท้ายผู้ใช้ก็ยังไม่พอใจ
3 · 4 test types ที่ QA ใช้บ่อยที่สุด

Smoke Test

ใช้ตอบคำถามว่า:

"ระบบยังหายใจอยู่ไหม หลังจากมี build หรือ deploy ใหม่"

ลักษณะ:

  • สั้น
  • เร็ว
  • โฟกัส flow หลัก
  • ถ้าไม่ผ่าน ไม่ต้องทำอย่างอื่นต่อ

ตัวอย่าง:

  • login ได้
  • หน้า home โหลด
  • search ใช้ได้
  • checkout เปิดได้

Sanity Test

ใช้ตอบว่า:

"ของที่เพิ่งแก้หรือเพิ่งเปลี่ยน ยังใช้งานได้ไหม"

sanity มักแคบกว่า smoke และโฟกัสตรง change set

ตัวอย่าง:

  • dev เพิ่งแก้ promo code
  • QA จึง sanity เฉพาะ promo flow

Regression Test

ใช้ตอบว่า:

"ของเดิมที่เคยใช้ได้ ยังใช้ได้อยู่ไหม หลังมีการเปลี่ยนแปลง"

Regression สำคัญมากเพราะการแก้ code หนึ่งจุดอาจกระทบฟีเจอร์อื่นที่ดูไม่เกี่ยวกัน

ตัวอย่าง:

  • แก้ checkout
  • แต่ search หรือ cart พังตาม

Exploratory Test

ใช้ตอบว่า:

"ถ้าลองใช้ระบบอย่างตั้งใจเพื่อสำรวจ risk เราจะเจออะไรที่ script ไม่ได้เขียนไว้บ้าง"

exploratory ไม่ใช่การคลิกมั่ว แต่เป็นการสำรวจอย่างมี charter และมีเป้าหมาย

ตัวอย่าง charter:

  • ลองใช้ flow นี้ในฐานะผู้ใช้ใหม่
  • ลองทำผิดหลายแบบติดกัน
  • ลองสลับ device หรือ state กลางทาง
4 · เปรียบเทียบให้ชัด
Type คำถามหลัก ใช้เมื่อ ความเร็ว
Smoke ระบบขึ้นและ flow หลักยังอยู่ไหม หลัง deploy/build ใหม่ เร็วมาก
Sanity จุดที่เพิ่งแก้ยังโอเคไหม หลังแก้เฉพาะจุด เร็ว
Regression ของเดิมยังไม่พังใช่ไหม ก่อน release หรือหลังเปลี่ยนหลายจุด กลางถึงช้า
Exploratory มี risk หรือ bug แปลกอะไรซ่อนอยู่ไหม เมื่ออยากใช้ judgment ของ QA ยืดหยุ่น

ความต่างที่คนสับสนบ่อย

  • smoke ไม่ใช่ regression ชุดเล็กเฉย ๆ แต่มันมีเป้าหมายต่างกัน
  • sanity ไม่ใช่ smoke เสมอไป เพราะ sanity เจาะจุดที่เปลี่ยน
  • exploratory ไม่ได้แปลว่าไม่มีโครงสร้าง
5 · Non-functional types ที่ควรรู้

ไม่ต้องเป็นผู้เชี่ยวชาญทุกตัว แต่ควรรู้ว่ามันตอบคำถามอะไร

ประเภท คำถามที่มันตอบ
Performance ระบบเร็วพอไหม
Load รับผู้ใช้พร้อมกันตามที่คาดได้ไหม
Stress เกินขีดจำกัดแล้วระบบพังอย่างไร
Security มีช่องโหว่หรือการป้องกันที่ขาดไหม
Usability ผู้ใช้เข้าใจและใช้งานได้ง่ายไหม
Accessibility ผู้ใช้ที่มีข้อจำกัดใช้งานได้ไหม

ตัวอย่างการเลือกตามบริบท

ระบบธนาคาร:

  • functional สำคัญ
  • security สำคัญมาก
  • performance สำคัญ
  • accessibility ก็ควรมีน้ำหนัก

internal dashboard สำหรับทีมเล็ก:

  • functional สำคัญ
  • usability สำคัญ
  • load/stress อาจเบากว่า
6 · เลือก test type ยังไงให้ตรง risk

ไม่ใช่ทุกระบบต้องทำทุกอย่างเท่ากัน

ใช้คำถามนี้ช่วยตัดสิน:

  1. ถ้าพัง จุดไหนกระทบธุรกิจมากที่สุด?
  2. ผู้ใช้ใช้งาน flow ไหนบ่อยที่สุด?
  3. release นี้เปลี่ยนอะไรเยอะที่สุด?
  4. มีภัยคุกคามหรือความเสี่ยงเฉพาะด้านไหม?

ตัวอย่าง

ก่อน Black Friday

  • load test
  • stress test
  • smoke
  • regression ของ payment/cart

หลังแก้ bug ใน promo flow

  • sanity ของ promo
  • regression ของ checkout/cart

หลังเพิ่ง ship feature ใหม่ที่ดูใช้ยาก

  • exploratory
  • usability test
7 · ความเข้าใจผิดที่พบบ่อย
  • ต้องทำทุก type ถึงเรียกว่าครบ
  • regression คือรันทุกอย่างทุกครั้ง
  • exploratory = testing แบบไม่มีวินัย
  • smoke กับ sanity เหมือนกันหมด

ความจริงคือ test type มีไว้ช่วยคุณเลือกน้ำหนักการทดสอบให้เหมาะกับสถานการณ์

Practice

ลองเลือก test type ให้เหมาะกับสถานการณ์

  1. เพิ่ง deploy build ใหม่ขึ้น staging และมีเวลา 15 นาทีก่อนทีมอื่นเริ่มใช้งาน

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

    ควรเริ่มด้วย <strong>smoke test</strong> เพื่อเช็กว่า flow หลักยังทำงานได้ ถ้า smoke ไม่ผ่าน งานอื่นควรหยุดก่อน

  2. dev เพิ่งแก้ bug ใน coupon calculation และทีมกลัวว่าจะกระทบ checkout ส่วนอื่น

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

    ใช้ <strong>sanity</strong> กับ coupon flow ที่เพิ่งแก้ และตามด้วย <strong>regression</strong> สำหรับ checkout/cart ที่อาจได้รับผลกระทบ

  3. ระบบจะเจอ traffic สูงมากช่วงแคมเปญใหญ่

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

    ต้องมี <strong>load</strong> และอาจมี <strong>stress testing</strong> เพื่อดูทั้งพฤติกรรมในโหลดปกติและจุดที่ระบบเริ่มรับไม่ไหว

  4. ฟีเจอร์ใหม่ไม่มี bug ชัดเจน แต่ QA รู้สึกว่าผู้ใช้อาจสับสนในการใช้งาน

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

    ใช้ <strong>exploratory</strong> และถ้าเป็นไปได้เสริมด้วย <strong>usability testing</strong> เพราะปัญหาอาจไม่ใช่ functional defect แต่เป็นการใช้งานที่ไม่ลื่น

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

  • Test type คือมุมของคุณภาพที่เรากำลังตรวจ
  • กลุ่มใหญ่คือ functional และ non-functional
  • 4 types ที่ QA ใช้บ่อยมากคือ smoke, sanity, regression, exploratory
  • เลือก type จาก risk และบริบท ไม่ใช่จากความรู้สึกว่าอยากทำให้ครบทุกคำ
  • ฟีเจอร์เดียวกันอาจต้องใช้หลาย test types ร่วมกันเพื่อคุมความเสี่ยงให้พอ