a-dev-test-ops
ในปัจจุบันคำว่า DevOps (Development + Operation) นั้น
ถูกพูด และ นำไปใช้งานกันอย่างมากมายสำหรับการพัฒนา software
เพื่อทำให้การพัฒนา software เป็นไปอย่างรวดเร็ว และมีคุณภาพ
ให้ตามความต้องการของผู้ใช้งานที่เปลี่ยนแปลงรวดเร็วอย่างมาก

เป็นสาเหตุว่าทำไม
ต้องมีระบบ Continuous Integration เช่น Jenkins, Bamboo เป็นต้น
ต้องมีเครื่องมือพวก Infrastructure as Code เช่น Puppet และ Chef เป็นต้น
ต้องมีเครื่องมือเกี่ยวกับ Release Automation

หมายความว่า
การพัฒนา software กำลังหาแนวทางและกระบวนการใหม่ ๆ
เพื่อให้สนองตอบความต้องการของทาง business และ ลูกค้า
ให้ได้ดี และ รวดเร็วที่สุด (Quality and Fast)

แต่ปัญหาในการพัฒนา software นั้น ไม่ใช่มีเพียงทีม Development และ Operation เท่านั้น !!

ยังมีปัญหากับทีม Testing/QA อีกด้วย
แน่นอนว่ามันจึงเกิด 3 กลุ่มที่แยกออกจากกัน
ส่งผลให้เกิดปัญหามากมายตามมา
แต่จะขาดส่วนใดส่วนหนึ่งไม่ได้เลย
แสดงดังรูป
devtestops

ในความเป็นจริงแล้ว เรามักจะขาดเรื่องของ Quality กันไป

ถึงแม้จะนำแนวคิด DevOps มาประยุกต์ใช้เแล้วก็ตาม
บ่อยครั้งจะพบว่า กระบวนการทดสอบจะอยู่ในช่วงท้ายของการพัฒนา
ซึ่งเป็นสิ่งที่ไม่ถูกต้อง และทำการทดสอบแบบ manual เสียส่วนใหญ่อีก !!

ดังนั้น เราควรปรับปลี่ยนกระบวนการพัฒนา
ด้วยการนำการทดสอบไปไว้ในทุก ๆ ส่วนของการพัฒนา
หรือใช้แนวคิด Test-First มาใช้
นั่นคือ คิดก่อนสิว่า
จะทดสอบแต่ละส่วน แต่ละ feature กันอย่างไร ก่อนที่จะเริ่มพัฒนา
จากนั้นจึงหาเครื่องมือมาช่วย
ที่สำคัญการทดสอบควรจะทำงานแบบอัตโนมัติให้ได้มากที่สุดเท่าที่จะเป็นไปได้

ปล.
การทดสอบไม่ใช่เพียงแค่ทดสอบในระดับ code เท่านั้น
ควรทำการทดสอบในระดับ requirement
ควรทำการทดสอบในระดับ infrastructure
ควรทำการทดสอบในระดับ system หรือ end-to-end
ควรทำการทดสอบ performance ของระบบโดยรวม

บางครั้งเราอาจจะต้องเปลี่ยนจากคำว่า DevOps ไปเป็น DevTestOps ก็เป็นได้
เรื่องคุณภาพในการพัฒนา software นั้น มันต่อรองไม่ได้นะครับ

สำหรับ Developer
ความสามารถทั้งสามก็เป็นสิ่งที่ขาดไม่ได้เช่นเดียวกัน !!