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

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