Screen Shot 2558-04-30 at 10.39.14 PM
จากงาน Agile Testing Day Netherlands 2015 นั้น
มีการพูดถึง Continuous Testing มากๆ
เลยนำบทสัมภาษณ์ที่น่าสนใจมาสรุปไว้นิดหน่อย
ต้นฉบับการสัมภาษณ์อยู่ที่ Benefits of Continuous Testing

เป็น Lesson learn จากบริษัท Unruly

นำแนวคิด และ แนวปฏิบัติจาก Extreme Programming มาประยุกต์ใช้งานตั้งแต่ปี 2006
โดยทีมพัฒนา software จะเป็นทีมเล็กๆ และไม่มี tester ประจำทีม
แต่ละทีมจะปฏิบัติดังนี้

  • ใช้แนวคิด Test-First ในการเขียน code
  • ทำ pair programming
  • ทำ mop programming
  • ทำงานไปกับฝั่ง business และ ลูกค้า

และลงทุนเรื่องของ Automated เพื่อทำการตรวจสอบว่า
ระบบงานทำงานได้บน production หรือไม่
แทนที่จะไปนั่งทำ mannual testing บนเครื่อง staging

มาดูการสัมภาษณ์ดีกว่า !!

คำถาม
Automated testing มีความสำคัญต่อทีมพัฒนาอย่างไร ?
คำตอบ
แน่นอนว่ามันมีความสำคัญมากๆ
เนื่องจากระบบ Automated มันสามารถ
ทำการตรวจสอบระบบงานได้รวดเร็ว และ น่าเชื่อถือ
กว่าการทดสอบแบบ manual ที่มันน่าเบื่อมากๆ

ระบบต้องสามารถ deploy ได้ตามความต้องการอยู่เสมอ
ตามความต้องการของทางฝั่ง business
สิ่งที่น่าสนใจ คือ จะตอบรับกับความต้องการนี้ได้อย่างไร
ถ้ายังมีขั้นตอนการทำงานแบบ manual ที่มันเทอะทะไปหมด
ดังนั้น จึงต้องมีขั้นตอนการ deploy แบบอัตโนมัติ
และแน่นอนว่าต้องมีการตรวจสอบด้วย Automated testing เสมอ

ทำให้สามารถส่งมอบ software/product ที่มีคุณค่าต่อลูกค้า
ออกมาได้อย่างรวดเร็ว ต่อเนื่อง และมีคุณภาพที่สูง

คำถาม
ช่วยยกตัวอย่างหน่อยสิ ว่า Automated testing มันเข้าไปช่วยทีมอย่างไร ?
คำตอบ
ตัวอย่างเช่นทาง business ต้องการให้ทำการแก้ไขระบบบน production
แน่นอนว่าต้องทำทันที ไม่ใช่ใช้เวลาเป็นวันๆ ในการแก้ไข และ deploy
และแน่นอนว่า มันคงต้องใช้เวลาการแก้ไขน้อยสุดๆ
ซึ่งสิ่งที่ทำได้เร็วสุดคือ แก้ไข code บน production ไปเลยไงล่ะ !!!
แต่ว่าไม่ใช่ที่นี่นะ !!!

เพราะว่า สิ่งที่ทีมทำก็คือ
ลดขั้นตอนการ deploy ให้น้อย สั้นกระชับ ไม่ซับซ้อน
และต้องมี Automated test เพื่อตรวจสอบพฤติกรรมการทำงานต่างๆ

แต่ถ้ามีปัญหาอะไรขึ้นมา ทีมก็จะกลับมา retrospective กันว่า
มันเกิดอะไรขึ้น และ จะแก้ไข และ ป้องกันกันอย่างไรต่อไป

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

ต่อมาทางทีมมีระบบ Automated Monitoring ของ service ต่างๆ ของระบบ
เพื่อช่วยดูว่าแต่ละส่วนของระบบงานมีพฤติกรรมการทำงานอย่างไร
มีการใช้งานมากหรือน้อยเท่าไร
ส่วนไหนที่เริ่มส่งปัญหา จะได้วางแผนและแก้ไขต่อไป

ซึ่งแนวทางการพัฒนา software/product ไปพร้อมกับ test นั้น
ช่วยทำให้ทีม focus ได้ว่าทีมกำลังทำอะไร
ช่วยทำให้ทีม focus ได้ว่าทีมกำลังจะส่งมอบอะไร
ช่วยทำให้ทีมได้รู้ว่า ระบบยังทำงานได้ดีอยู่เสมอนะ

คำถาม
มีคำแนะนำสำหรับทีม หรือ บริษัท ที่ต้องการลงทุนกับ Continuous Testing บ้างไหม ?
คำตอบ
เริ่มต้นด้วยการสร้าง automated สำหรับ regression test ก่อน
เริ่มต้นด้วยการสร้าง Automated test แบบง่ายๆ คือ
ระบบการตรวจสอบการทำงานต่างๆ ของระบบว่ายังทำงานได้ไหม
หรือพวก health check ต่างๆ นั่นแหละ
หรือพวก smoke test ต่างๆ

จากนั้นจึงเริ่มปรับปรุงเรื่อง test coverage
หรือสร้างชุดการทดสอบให้ครอบคลุมมากขึ้นเรื่อยๆ

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

ลองดูว่า คุณสามารถนำแนวทางเหล่านี้ไปประยุกต์ใช้ได้อย่างไร