Screen Shot 2558-03-21 at 3.46.00 PM
ทางทีมพัฒนาของ Spotify.com เพิ่งปล่อย Git-test ออกมา
ซึ่งแน่นอนว่าต้องทำงานร่วมกับ Git
โดยที่สร้างมาเพื่ออำนวยความสะดวก
ในการทดสอบระบบที่พัฒนาในทุกๆ commit
บน branch ที่คุณกำลังทำงานอยู๋ได้เลย

ดังนั้น มาดูกันว่าเราจะใช้งานอย่างไรกัน ?

เริ่มต้นที่แนวคิดของการสร้าง Git test

ถ้าเราสามารถทำการทดสอบ code ได้ทุกๆ commit จะดีไหม ?
ปกติถ้าเราทดสอบ code แล้วเกิดปัญหา หรือ ไม่ผ่าน เราจะแก้ไขปัญหาอย่างไร ?

ถ้าใช้ Git ก็จะทำการกลับไปยัง commit ก่อนหน้าหรือไม่ ?
เพื่อทำการทดสอบว่าผ่านหรือไม่ ?
ทำไปเรื่อยๆ จนกว่าจะพบปัญหา!!

หรือทำการแก้ไขตาม test case นั้นๆ เลย …

ดังนั้น ถ้าเราสามารถทดสอบได้ทุกๆ commit เลยล่ะ มันจะสะดวกกว่าไหม ?

ยังไม่พอ ทางทีมพัฒนายังมีเป้าหมายการสร้าง Git test เพิ่มอีกคือ
ต้องใช้งานง่ายๆ
ต้องใช้งานสะดวก สำหรับคนใช้งาน git

การทำงานพื้นฐานของ Git test

จะทำการวนทดสอบ code แต่ละ commit จากการใช้คำสั่ง git rev-list
ซึ่งเป็นการดึง commit ทั้งหมดขึ้นมานั่นเอง
โดยเราจะต้องกำหนดไปว่า จะให้ run test ด้วยคำสั่งอะไร
จากนั้นก็ทำการทดสอบแต่ละ commit

ตัวอย่าง

$git rev-list HEAD

ได้ผลการทำงานดังรูป
Screen Shot 2558-03-21 at 3.16.43 PM

ยังไม่พอนะ Git test จะทำการเก็บ caching ของการทดสอบแต่ละ commit ไว้ด้วย
เพื่อช่วยให้การทดสอบมันรวดเร็วขึ้น

ตัวอย่างการทดสอบครั้งที่ 1

$git test -v --verify="mvn test" HEAD

ผลการทำงานเป็นดังรูป
Screen Shot 2558-03-21 at 3.28.51 PM

ตัวอย่างการทดสอบครั้งที่ 2 จะเห็นว่าทำการดึงข้อมูลจาก caching แทน

$git test -v --verify="mvn test" HEAD

ผลการทำงานเป็นดังรูป
Screen Shot 2558-03-21 at 3.31.27 PM

ถ้าต้องการ clear ผลการทดสอบในแต่ละ commit ออกไปทั้งหมด
ใช้คำสั่งดังนี้

$git test --clear

ยังไม่พอนะ Git test ยังเปิดช่องทางให้เรากำหนดได้ว่า

  • pre คือ ก่อนทำการทดสอบจะให้ทำอะไร
  • post คือ หลังจากการทดสอบจะให้ทำอะไร

ถ้าต้องการรู้ว่ามีอะไรให้ใช้บ้าง
สามารถดูเพิ่มเติมได้ที่ Git-test repository

ปิดท้ายด้วยการติดตั้ง

โดยผมติดตั้งบนเครื่อง Mac ก็จะติดตั้งแบบง่ายๆ ดังนี้

1. ทำการ download หรือ clone Git test มาดังนี้

$git clone git@github.com:spotify/git-test.git

2. ทำการติดตั้งผ่าน install ดังนี้

$cd git-test
$install git-test   /usr/local/bin
$install git-test.1 /usr/local/share/man1

เพียงเท่านี้ก็สามารถใช้งานได้แล้วครับ