ความแตกต่างของ Unit Test และ Integration Test

Unit Test คือ การทดสอบ Code ในส่วนที่เล็กที่สุดของ Developer เพื่อทดสอบว่าสิ่งที่เขียนมามันใช้ได้จริงนะ และมี Test ตามที่ผู้พัฒนาเห็นว่ามันสำคัญ (พยายามทำให้ได้เยอะที่สุดครับ) และ Test ควรทำได้ง่าย เขียนสั้น และกระชับ เพราะกลุ่มคนหลักๆที่ใช้ คือ ตัว Developer เองครับ เวลาเขียนเทส พยายามให้นึกถึงอนุชนรุ่นหลักด้วย ว่าถ้าเข้ามาดู Code ต่อจะเข้าใจไหมด้วยนะครับ ส่วนคนกลุ่มอื่นๆที่เกี่ยวข้อง ถึงแม้ว่าจะไม่ได้ใช้งานโดยตรง แต่จะได้ผลประโยชน์ไปเต็ม เพราะ การทำ Unit Test ทำให้คนที่อยู่ปลายทาง อย่าง Tester หรือ แม้แต่ User เอง เจอ Defect น้อยลงครับ
 robot
สิ่งที่เป็นหัวใจหลักของ Unit Test คือ ทำให้มันอยู่ได้ด้วยตัวมันเอง ไม่มี Dependency ไปยุ่งกับ Code ตัวอื่นๆ ถ้าจำเป็นต้องใช้จริงๆ ให้ Mock มันเข้ามาให้หมด เพราะจุดประสงค์ของ Unit Test ดูเฉพาะ Logic การทำงานในส่วนที่เราสนใจจริงๆ ไม่จำเป็นต้องสนใจสภาพแวดล้อมภายนอก อย่างที่คนกลุ่มอื่นๆสนใจ ได้แก่ Tester หรือ User สนใจครับ
 chatriRobot
ถัดมาเป็น Integration Test ระดับการทดสอบนี้มีไว้ เพื่อแสดงภาพรวมของระบบ ควรมีความใก้ลเคียงกับ Production มากที่สุด ห้ามมี Mock ถ้าไม่จำเป็นต้องใช้จริงๆ ว่าระบบมันสามารถทำงานได้จริงในทุกส่วน ต้องเขียน Test ให้คลุม อาจจะทำเป็น UI Test เป็นต้น โดยการเทสแบบนั้น พยายามให้สภาพแวดล้อมเหมือนจริงที่สุดครับ เช่น ถ้ามีการเชื่อมต่อกับ DB จริงๆ ก็ต้องมี DB เอาไว้เทส หรือถ้ามี API เปิดไว้ ก็ควรมีเจ้า API สำหรับ Test เหมือนกันครับ เป้าหมายของ Integration Test คือ ให้คนที่ไม่ใช่ Develop เข้าใจภาพรวมการทำงานครับ

 

จะว่าไปส่วนใหญ่ ผมก็พยายามทำ Integration Test มากกว่า Unit Test นะ เผางานให้รีบทันส่ง
 

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.