วันนี้โดนคำถามเกี่ยวกับ test level ว่ามันมีความแตกต่างกันยังไง? วันนี้กาดเลยจะมาศึกษาเพิ่มเติมจากที่ตัวเองเข้าใจ
จากรูปจะเห็นแล้วว่ามันคือ V-Model ที่กาดเคยเขียนไป เกี่ยวกับ V&V
เรามาดูแต่ละ layer กัน จะไล่จากข้างล่างขึ้นไปข้างบนนะ :)
Layer 1 : Unit testing หรือ Component testing
จะเป็นการทดสอบระดับ function เป็นระดับเล็กที่สุด มีความเร็วในการรันผลทดสอบ 0.00x ms และรู้ได้ทันทีเมื่อ function ไหนของเราพัง “สนแค่ function ทำงานได้ตามที่เราต้องการไหม?”
ข้อเสีย คือ function การทำงานเป็นแบบ module เดียว ทำให้มีโอกาสที่จะเกิดข้อผิดพลาด เมื่อนำมาเชื่อมต่อกันระหว่าง function
Component testing ละ???? บางที่เรียก unit test บางที่เรียก component test สำหรับตัวกาดเอง กาดคิดว่าทั้ง 2 อันนี้อยู่ในระดับเดียวกัน คือ ทดสอบว่า function นั่นทำงานถูกต้องไหม
ข้อเสียก็จะคล้ายๆกับ unit test นั้นแหละ เพียงแต่เราจะไม่รู้ว่า function ที่มัน call หากันตัวไหนมันพังนี้แหละ เพราะฉะนั้นเลยต้องมี unit test มาด้วยไง๊ ><
แต่ !! ในความเข้าใจของกาด unit test จะทดสอบแค่ function การทำงานตัวเดียว ส่วน component test จะทดสอบ function call function ว่าทำงานถูกต้องหรือไม่ (พวก function ที่มีการเรียกหากันนั่นแหละ)
เพิ่มเติม : component test เป็นการทำงานมากกว่า 2 ตัวขึ้นไปอาจจะเทียบเท่า integration test ได้ เพราะอยู่ระดับขอบๆ แต่ผลลัพธ์สุดท้ายอยู่ที่ตัวเราจะ define ยังไง
Layer 2 : Integration testing
(Integration = การรวม) จะเป็นการทดสอบเกี่ยวกับการเชื่อมต่อระบบต่างๆ เข้าด้วยกัน เช่น การทดสอบระดับ API , Database เราจะไม่สนใจ function เหมือนกับ unit test สนใจแค่ส่วนไหนที่เชื่อมต่อกันและทำงานถูกต้องตามที่เราวางไว้หรือป่าว
ข้อเสีย คือ ส่วนไหนพังจะไม่สามารถระบุได้ เพราะเป็นการทดสอบที่เกี่ยวข้องกับหลายส่วน
Layer 3 : System testing
จะเป็นการทดสอบทั้งระบบ(ชั้น UI นั้นแหละ) การทดสอบระดับนี้จะเห็นภาพระบบทั้งหมด ว่าระบบเราทำงานยังไงเสมือนมี user เข้ามาใช้งาน
ข้อเสีย คือ เราไม่สามารถรู้ได้เลยว่าว่าส่วนไหนที่พัง เพราะการทดสอบระดับนี้มีส่วนที่เกี่ยวข้องกันกับหลายๆส่วนในระบบเรา (ก็ทดสอบทั้งระบบอะ)
Layer 4 : User acceptance testing ( UAT )
จะเป็นการทดสอบระดับ User เพื่อดูพฤติกรรมของ user ว่าตรงตาม Requirement เราหรือไม่ ซึ่งเราจะใช้ส่วนนี้ขึงการทดสอบทุกอย่างเลย เพราะเราจะเห็นการทำงาน end-to-end
จากที่กล่าวมาทั้งหมดจะเห็นแล้วว่าแต่ละ Layer test นั้นมีจุดประสงค์การทดสอบที่แตกต่างกันนะ อย่าหลงดีใจที่เรา Test UI ผ่านหมด เพราะมันเป็นระดับ System test เราจะไม่ได้เห็นส่วนข้างในอื่นๆเลยว่ามีส่วนไหนบ้างที่พัง “จะทดสอบแบบไหนก็เลือกให้ตรงกับจุดประสงค์ของเรานะ”
แปะแนบรูปเพิ่มเติม
ถ้าเราทำ test ไว้ทุก layer รับรอง bug หรือ defect ที่จะเกิดนั้นเกิดขึ้นน้อยลงแน่นวลลล ลลล
“System test ที่ผ่าน ทำให้เรามีความมั่นใจสูงขึ้น
แต่คุณค่าที่ได้จาก Unit test ที่ไม่ผ่าน มันมีมากกว่า System test ที่ไม่ผ่านมากมายครับ — somkiat.cc”