Topic 5: PHP Project Structure

- Part 1: Continuous Integration
Continuous Integration มีความสามารถในการทดสอบประสิทธิภาพ หรือปรับปรุงคุณภาพของการพัฒนา Software ให้ดีขึ้น เช่น สามารถทดสอบ test case เมื่อ source code มีเปลี่ยนแปลง และสามารถทดสอบได้แบบอัตโนมัติ เมื่อเกิดปัญหาระบบจะหยุดทำงาน และแสดงรายละเอียดของปัญหา

- Part 2: Jenkins
Jenkins คือ CI (Continuous Integration) ไม่ใช่ library หรือเครื่องมือที่ใช้ทดสอบประสิทธิภาพของ code แต่จะเขียน bash script หรือ build.xml สั่งงานให้แสดงผลลัพธ์ของการทดสอบ code โดยใช้ปลั๊กอินของ PHPUnit คือ junit  ในการทำ Project PHP จะต้องเขียน code เพื่อทดสอบชุดคำสั่งหรือ function การทำงาน โดยใช้ PHPUnit ทำ unit test และ gen xml file ออกมาเพื่อให้ junit ทำ report แสดงผลลัพธ์ของการทดสอบ เพราะถ้าหากไม่เขียนเป็น PHPUnit จะไม่สามารถทดสอบ code ได้ ในการเขียน code จะไม่มีการโยน code เข้าไปตรง ๆ แต่ต้องเขียน unit test เป็น test case ต่าง ๆ ครอบอีกชั้นนึง ซึ่งต้องเขียนก่อน นำขึ้นไป run บน Jenkins
  
- Part 3Automate build ใน Jenkins
1. จัดเรียงไฟล์ใน PHP Project ดังนี้
PHP Project
|-- src
    |-- source codes for PHP Project
|-- test
    |-- source codes for PHPUnit test
|-- build.xml
|-- phpunit.xml.dist

          รายละเอียดของ directory มีดังนี้
          1. src จะใช้เก็บ source code หรือ application ต่าง ๆ
          2. test จะแก็บ source code เพื่อใช้ในการทดสอบ function ด้วย PHPUnit test
          3. build.xml คือ script ในการสร้าง Ant แบบ autoload ใน Jenkins
          4. phpunit.xml.dist คือ ไฟล์การตั้งค่าของ PHPUnit สำหรับใช้ใน Jenkins
   
- Part 4ตั้งค่าให้กับ PHP tools ใน PHP Project
1. ในการใช้ Apache Ant เพื่อทำ automate build ของ Jenkins จะต้องสร้างไฟล์ build.xml เพื่อเรียกใช้งาน PHPUnit สามารถเขียน script ดังนี้

          2. ตั้งค่าให้กับ PHPUnit โดยการสร้างไฟล์ phpunit.xml.dist  เพื่อเรียกใช้งาน junit ให้สร้าง report ของการทดสอบ สามารถเขียน script ดังนี้



อ้างอิง: http://jenkins-php.org/index.html

ตัวอย่างผลลัพธ์ที่ได้ มีดังนี้

ความคิดเห็น