Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

Continuous Integration และ Testing ควรอยู่ด้วยกันเสมอ

$
0
0

ci-testing-00

ci-testing-00 ในการพัฒนา software ได้นำเอาแนวคิด Continuous Integration(CI) เข้ามาใช้งาน ซึ่งผมคิดว่าเป็นสิ่งที่ขาดไม่ได้เลย เพื่อช่วยทำให้ทีมทำการ integrate บ่อย ๆ เพื่อช่วยทำให้ software ที่สร้างค่อย ๆ เติบโตอย่างยั่งยืน เพื่อช่วยทำให้ทีมได้รับ feedback กลับมาอย่างรวดเร็วทั้งดีและร้าย เพื่อจะได้แก้ไขและปรับปรุงได้อย่างทันท่วงที
แต่สิ่งที่น่าแปลกใจก็คือ ไม่นำการทดสอบ (Testing) เข้ามาร่วมทำงานกับ Continuous Integration !!

ทีมที่มีการนำแนวคิด Continuous Integration มาใช้นั้น

จะเริ่มจากการสร้างระบบ Continuous Integration Server ทำหน้าที่ build, package และ deploy/release ระบบงาน ส่วนการทดสอบยังคงทำแบบเดิม หรือ แบบ manual !! ถ้าถามว่ามันมีข้อดีไหม ? ตอบได้เลยว่ามีข้อดีมาก เช่น
  • ทำให้ทีมพัฒนารู้ว่า source code สามารถ compile ได้หรือไม่
  • ทำให้ทีมพัฒนารู้ว่า source code ทั้งหมดยังคงทำได้ได้ ไม่มีปัญหา
  • ทำให้สามารถ deploy ไปยัง server ต่าง ๆ ได้อย่างรวดเร็ว โดยไม่ต้องใช้คน
ดังนั้นเรื่องของ source code จะเป็น version ล่าสุดเสมอ เรื่องของกระบวนการ build->deploy->release เร็วและสะดวกขึ้น
แต่ปัญหาที่ตามมาคือ เรื่องของคุณภาพของระบบ !!
เนื่องจากในแต่ละการ build/deploy นั้น ไม่มีชุดการทดสอบแบบอัตโนมัติอะไรเลย หรือไม่มีกระบวนการทดสอบเข้ามาอยู่ในระบบ Continuous Integration ซึ่งก่อให้เกิดปัญหาตามมามากมายเช่น
  • ทีมพัฒนาไม่ทำการทดสอบทั้งระบบ
  • ทีมทดสอบทำการทดสอบไม่ไหว
  • ทีมทดสอบทำการทดสอบช้า
  • ทีมทดสอบไม่ทดสอบทุก ๆ test case
  • ทีมพัฒนาและทีมทดสอบไม่ทำการ regression test
ลองคิดดูสิว่า ถ้าต้อง deploy ระบบงานไปในแต่ละ environment ทั้ง Dev, Test, SIT, SUT, UAT, Staging, Production จะต้องทำการทดสอบกันอย่างไร ?
ปัญหาเหล่านี้มันสะท้อนถึงโครงสร้างและกระบวนการขององค์กร ดังนั้นสิ่งที่ต้องแก้ไขทีคือ ต้องนำเอาการทดสอบเข้ามาอยู่ใน Continuous Integration ด้วยเสมอ โดยการทดสอบควรที่จะทำงานแบบอัตโนมัติอีกด้วย (Automated Testing)

โดยในระบบ Continuous Integration ควรมีความสามารถดังนี้ เพื่อทำให้การทดสอบมีประสิทธิภาพ

  • Scalability สามารถทำการทดสอบทุก ๆ test case ได้ทุกครั้งเมื่อ source code เปลี่ยนแปลง
  • Automation สามารถทำการทดสอบได้แบบอัตโนมัติ เมื่อเกิดปัญหาระบบจะหยุดทำงาน และแจ้งปัญหาออกมา
  • Parallel testing เมื่อจำนวนของชุดการทดสอบเยอะขึ้น ดังนั้นระบบควรทำการทดสอบแบบขนานได้ เพื่อเพิ่มความเร็วของการทดสอบ

คำถามสำหรับทีมพัฒนาคือ

  • วันนี้คุณนำแนวคิด Continuous Integration มาใช้แล้วหรือยัง ?
  • วันนี้คุณนำกระบวนการทดสอบมารวมเข้ากับ Continuous Integration แล้วหรือยัง ?
  • ถ้ามีแล้วจากนั้นคือ มันมีคุณค่า มีคุณภาพมากน้อยเพียงใด ?
เรื่องต่าง ๆ เหล่านี้มันไม่ใช่ว่า ใช้เครื่องมืออะไร ? แต่มันคือเรื่องของวิธีคิดว่าจะสร้างระบบกันอย่างไรให้ยั่งยืนมากกว่า ดังนั้นมันคือเรื่องของคนล้วน ๆ และขอแนะนำให้ค่อย ๆ ทำ ค่อย ๆ ปรับปรุงทีละเล็กทีละน้อย แล้วมันจะดีขึ้นเองครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles