เริ่มต้นกับ Unit Testing: ทำความรู้จัก PHPUnit
ในโลกของการพัฒนาซอฟต์แวร์ การทดสอบ (Testing) เป็นขั้นตอนที่สำคัญอย่างยิ่ง เพื่อให้มั่นใจว่าโค้ดที่เราเขียนทำงานได้อย่างถูกต้องตามที่คาดหวัง บทเรียนนี้จะพาคุณเข้าสู่โลกของการทดสอบแบบ Unit Testing โดยใช้เครื่องมือที่ชื่อว่า PHPUnit ซึ่งเป็นเครื่องมือยอดนิยมสำหรับภาษา PHP
PHPUnit คืออะไร?
PHPUnit คือ Framework สำหรับการทำ Unit Testing ในภาษา PHP พูดง่ายๆ ก็คือ มันเป็นชุดเครื่องมือและฟังก์ชันที่ช่วยให้เราเขียนและรันการทดสอบโค้ดของเราได้ง่ายขึ้น มันช่วยให้เราตรวจสอบได้ว่าแต่ละส่วนของโค้ด (Unit) ทำงานได้อย่างถูกต้องหรือไม่
Unit ในที่นี้หมายถึง ส่วนที่เล็กที่สุดของโปรแกรมที่เราสามารถทดสอบได้ เช่น ฟังก์ชัน หรือ Method ใน Class
ความสำคัญของการทำ Unit Testing
ทำไมเราต้องเสียเวลาเขียน Unit Test? นี่คือเหตุผลสำคัญ:
- ตรวจจับข้อผิดพลาดตั้งแต่เนิ่นๆ: การทดสอบ Unit Test ช่วยให้เราพบข้อผิดพลาด (Bug) ได้ตั้งแต่ขั้นตอนการพัฒนา ทำให้แก้ไขได้ง่ายและรวดเร็วกว่าการรอให้ผู้ใช้งานพบเจอ
- มั่นใจในการเปลี่ยนแปลงโค้ด: เมื่อเราทำการเปลี่ยนแปลงโค้ด การมี Unit Test จะช่วยให้เรามั่นใจได้ว่าการเปลี่ยนแปลงนั้นจะไม่ส่งผลกระทบต่อส่วนอื่นๆ ของโปรแกรม
- โค้ดที่อ่านง่ายและเข้าใจง่าย: การเขียน Unit Test บังคับให้เราต้องออกแบบโค้ดให้สามารถทดสอบได้ ซึ่งโดยทั่วไปแล้วจะนำไปสู่โค้ดที่มีโครงสร้างที่ดีขึ้น อ่านง่าย และเข้าใจง่าย
- ลดค่าใช้จ่ายในการบำรุงรักษา: การมี Unit Test ที่ครอบคลุมจะช่วยลดความเสี่ยงในการเกิดข้อผิดพลาด ทำให้การบำรุงรักษาโปรแกรมในระยะยาวเป็นไปได้ง่ายขึ้นและประหยัดค่าใช้จ่าย
- ช่วยในการ Refactoring: เมื่อเราต้องการปรับปรุงโค้ด (Refactoring) Unit Test จะเป็นตัวช่วยยืนยันว่าการปรับปรุงนั้นไม่ทำให้ฟังก์ชันการทำงานเดิมเสียหาย
ลองนึกภาพว่าคุณกำลังสร้างบ้าน ถ้าคุณไม่ตรวจสอบโครงสร้างแต่ละส่วนก่อนที่จะสร้างส่วนอื่นๆ ต่อไป บ้านทั้งหลังอาจถล่มลงมาได้ การทำ Unit Testing ก็เหมือนกับการตรวจสอบโครงสร้างแต่ละส่วนของโปรแกรมก่อนที่จะสร้างส่วนอื่นๆ ต่อไป
ตัวอย่างง่ายๆ: ฟังก์ชันบวกเลข
สมมติว่าเรามีฟังก์ชันง่ายๆ ที่ใช้สำหรับบวกเลขสองจำนวน:
<?php
function add(int $a, int $b): int
{
return $a + $b;
}
เราจะเขียน Unit Test เพื่อตรวจสอบว่าฟังก์ชันนี้ทำงานได้อย่างถูกต้องได้อย่างไร? PHPUnit จะช่วยเราในเรื่องนี้
การติดตั้ง PHPUnit
ก่อนที่เราจะเริ่มเขียน Unit Test เราต้องติดตั้ง PHPUnit ก่อน วิธีที่ง่ายที่สุดในการติดตั้ง PHPUnit คือการใช้ Composer ซึ่งเป็นเครื่องมือจัดการ Dependencies สำหรับ PHP
- ตรวจสอบว่าคุณมี PHP และ Composer ติดตั้งแล้ว: ตรวจสอบโดยการรันคำสั่ง
php -vและcomposer -vใน Command Line หรือ Terminal ถ้ายังไม่มี ให้ทำการติดตั้งก่อน - สร้าง Project Directory: สร้าง Folder สำหรับเก็บ Project ของเรา เช่น "my-project"
- สร้าง `composer.json`: ใน Folder "my-project" ให้สร้างไฟล์ชื่อ `composer.json` และใส่ Code ด้านล่างนี้:
{ "require-dev": { "phpunit/phpunit": "^9.0" } }Code นี้บอก Composer ว่าเราต้องการติดตั้ง PHPUnit เวอร์ชั่น 9 หรือสูงกว่า (
^9.0) ในส่วน Development (require-dev) - ติดตั้ง PHPUnit: เปิด Command Line หรือ Terminal และ Navigate ไปยัง Folder "my-project" จากนั้นรันคำสั่ง:
composer installComposer จะดาวน์โหลดและติดตั้ง PHPUnit พร้อมทั้ง Dependencies ที่จำเป็นทั้งหมด
- ตรวจสอบการติดตั้ง: หลังจากติดตั้งเสร็จสิ้น คุณสามารถตรวจสอบได้ว่า PHPUnit ถูกติดตั้งอย่างถูกต้องหรือไม่ โดยการรันคำสั่ง:
./vendor/bin/phpunit --versionถ้าทุกอย่างเป็นไปด้วยดี คุณจะเห็น Version ของ PHPUnit ที่ติดตั้งไว้
เมื่อคุณติดตั้ง PHPUnit เรียบร้อยแล้ว คุณก็พร้อมที่จะเริ่มต้นเขียน Unit Test แรกของคุณได้เลย ในบทเรียนถัดไป เราจะมาสร้าง Test Case แรกและทดสอบฟังก์ชัน `add()` ที่เราได้ยกตัวอย่างไป
สรุป
ในบทเรียนนี้ เราได้ทำความรู้จักกับ PHPUnit ซึ่งเป็นเครื่องมือสำคัญสำหรับการทำ Unit Testing ในภาษา PHP เราได้เรียนรู้ว่า Unit Testing มีความสำคัญอย่างไร และวิธีการติดตั้ง PHPUnit ด้วย Composer ในบทเรียนถัดไป เราจะลงมือเขียน Test Case จริงๆ เพื่อทดสอบโค้ดของเรา