Unit Test มีประโยชน์อย่างไรในการทำงาน

Unit test คือ
การเขียน Test ในส่วนเล็กๆ ของ code ในระดับ ฟังก์ชัน เมธอด หรือ คลาส
โดยไม่มี dependency เลย ย้ำ ต้องไม่มี dependency เลย ถึงจะถูกเรียกว่า
Unit Test และการเขียน Unit Test นั้น ต้องสามารถ Test การเรียกใช้ตัวมันเอง
ภายในระดับ Project ได้โดยไม่มีการติดต่อกับ Database หรือฐานข้อมูลใดๆ
เป้าหมายของการเขียน Unit Test
เป้าหมายของ Unit Test คือการแยกแต่ละส่วนของโปรแกรมและแสดงให้เห็นว่าแต่ละส่วนถูกต้องตามการทำงานของ Code ที่ developer ได้รับ Requirement มา
ความคาดหวัง
โดยการเขียน Unit Test นั้น เราเขียน Test เพื่อคาดหวังว่า Code ที่เราเขียนนั้น
ต้องทำงานอย่างที่เราหวังไว้โดยที่ยังไม่ได้ทำการติดต่กับฐานข้อมูล หรือ Database เลย ด้วยเหตุผลนี้ Developer หลายคนจึงให้ความสำคัญของการเขียน Test เพราะสามารถทำการ Test Code ของตัวเองว่ามันจะทำงานอย่างที่เราคาดหวังไว้หรือเปล่า
ถ้าไม่ได้ตามที่เราคาดหวังไว้ก็ต้องแก้ Code ให้มันทำงานตามที่เราคาดหวังให้ได้
นี้คือข้อดีของการเขียน Unit Test แต่ถ้า Code Test ผ่านเราก็จะรู้และมั่นใจว่าถ้าเรา
นำ Code ชุดที่เรา Test นี้ไปใช้งานจริงหรือขึ้น Production ที่ติดต่อกับ Database มันจะไม่ส่งผลกระทบต่อ Database อย่างแน่นอน(แต่บางครั้งคนเขียน Test เองอาจจะพลาดได้ ยังไงก็ดูกันให้ดีๆ นะคับ)
พบเจอปัญหาเบื้องต้น
การเขียน Unit Test พบว่าปัญหาที่เกิดขึ้นในช่วงแรกของการเขียน code ซึ่งรวมถึงข้อผิดพลาดทั้งในการใช้งาน developer และอาจมีข้อบกพร่องหรือปัญหาบางส่วนที่ขาดหายไปของข้อกำหนดที่ต้องการ(Requirement)
สำหรับ Unit Test กระบวนการเขียน Test อย่างละเอียดจะทำให้ผู้เขียนคิดถึงผลลัพธ์ของเอาท์พุทที่จะออกมา และเงื่อนไขข้อผิดพลาดที่ทำให้คิดถึงปัญหาที่จะตามมามากขึ้นอย่างกระทันหัน
ค่าใช้จ่ายในการค้นหาข้อผิดพลาดก่อนที่การเขียน code จะเริ่มขึ้นครั้งแรกจะต่ำกว่าต้นทุนในการตรวจหาและแก้ไขข้อผิดพลาดในภายหลัง ข้อบกพร่องอาจก่อให้เกิดปัญหากับผู้ใช้ปลายทางของซอฟต์แวร์ตัวนั้น บางคนแย้งว่า code ที่เขียนเป็นไปไม่ได้หรือยากที่จะทดสอบถ้าเขียนไม่ดี จึงใช้ Unit Test เข้ามาช่วยและสามารถบังคับให้ developer ทำ เพื่อให้โครงสร้างและรูปแบบของ code ที่ดีขึ้น
ส่วน Integration Test เป็นการเขียน Test ที่ติดต่อกับหลังบ้านหรือฐานข้อมูล พูดให้เข้าใจง่ายๆก็คือ เหมือนเอา Unit Test มาเขียนให้ทำงานด้วยกันเพื่อทำการติดต่อกับฐานข้อมูลจริง หรือฐานข้อมูลนั้นอาจจะเป็นฐานข้อมูลที่ใช้สำหรับ Test เท่านั้น เพื่อป้องกันไม่ให้ส่งผลกระทบต่อ Production จึงใช้ฐานข้อมูลแบบจำลอง การที่เขียน Unit Test ให้ทำงานด้วยกันได้ถึงจะเรียกว่า Integration Test