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

Agile Testing คืออะไร ?

$
0
0

Screen Shot 2559-02-18 at 8.13.07 PM

Screen Shot 2559-02-18 at 8.13.07 PM ก่อนจะมาเรียน Course The Whole Team Approach to Agile Testing ที่สิงคโปร์ สอนโดยคุณ  Janet Gregory ผู้ร่วมเขียนหนังสือ Agile Testing และ More Agile Testing
มีคำถามที่ถามตัวเองอยู่เสมอว่า Agile Testing มันคืออะไร ? มันคือ methodology หรือ ระเบียบวิธี หรือ ขั้นตอนวิธีหรือไม่ ? มันคือ กลุ่มของ principle หรือ แนวคิดหรือไม่ ? มันคือ กลุ่มของ practice หรือ แนวปฏิบัติหรือไม่ ? มันคือ framework หรือ กรอบของการทำงานหรือไม่ ?
เมื่อผ่านวันแรกของการเรียน พบว่ามีรายละเอียดต่าง ๆ เยอะมาก ซึ่งทำให้ตอบคำถามของตัวเองได้บ้างแล้ว

เริ่มจากเรื่องของ Agile ก่อน

มันประกอบไปด้วย 4 core value มันประกอบไปด้วย 12 principle ดังนั้น Agile ไม่ใช่ methodology อย่างแน่นอน Extreme Programming หรือ XP Programming มันคือ method หรือ framework หนึ่งในการพัฒนา software แน่นอนว่า ต้องมีแนวคิดตาม Agile ทั้ง core value และ principle และมีกลุ่มของ practice เฉพาะ เพื่อให้ปฏิบัติตาม ส่วน Scrum มันคือ project management framework ที่ปฏิบัติตามแนวคิดของ Agile เช่นเดียวกัน ต่างจาก XP Programming ก็คือ กลุ่มของ practice เท่านั้นเอง

กลับมาที่ Agile Testing กันบ้าง มีความหมายอย่างไร ?

ถ้าแปลกันตามตรง ก็สามารถตีความได้สองแบบ คือ
  1. การทดสอบ Agile project นะสิ เป็นสิ่งที่คนส่วนใหญ่คิด
  2. การทำให้การทดสอบใน project อะไรก็ได้ มีความเป็น Agility หรือ กระฉับกระเฉง ว่องไว
ซึ่งไม่มีข้อใดผิด แต่ Agile Testing ไม่ใช่ methodology อย่างแน่นอน เนื่องจาก Agile Testing มันคือ แนวทางหนึ่งของการการทำงาน เนื่องจาก Agile Testing มันคือ แนวทางหนึ่งของการทดสอบระบบ เนื่องจาก Agile Testing มันคือ กระบวนการคิด สามารถนำไปใช้ในวิธีการพัฒนาแบบไหนก็ได้ ไม่ว่าจะเป็น Agile, Scrum, Kanban และ XP Programming เนื่องจาก Agile Testing มันคือ การพูดคุย และ ทำงานร่วมกันของ Whole Team หรือ Delivery team โดยการทดสอบนั้นจะเป็นกิจกรรม (Activity) ที่เกิดขึ้นขึ้นตลอด มิใช่เป็น phase หรือ แยกทีมไปทดสอบอีกแล้ว เนื่องจาก Agile Testing เน้นในเรื่องของการป้องกันไม่ให้เกิด defect หรือ ข้อผิดพลาดเกิดขึ้น มิใช่การค้นหา defect ให้ได้มากที่สุด ดังนั้นเรื่อง mindset สำคัญอย่างมาก จะต้องทำการปรับเปลี่ยนด้วยทั้งตัวเราเอง ทีม และ องค์กร เนื่องจากเมื่อใดก็ตาม มีการจับวัดด้วยตัวเลขแล้ว วิธีการทำงานของคนเราจะเปลี่ยนไปทีนที ซึ่งมันไม่ใช่แนวทางการทำงานที่ดีเลย ตัวอย่างเช่น ถ้าเกิด defect จากงานที่ทำในรอบนี้ ไม่ต้องบันทึก defect ไม่ต้องสรุปผล แต่ให้ทำการแจ้ง defect กับทีมทันที ใครจะรู้ปัญหาได้ดีกว่าคนสร้างมัน เพื่อจะได้ทำการแก้ไขทันที ซึ่งเป็นวิธีการที่มีค่าใช้จ่ายถูกที่สุดแล้ว โดยขั้นตอนการแก้ไข defect ที่ดีเป็นดังนี้
  1. เมื่อเจอ defect ให้ทำการเขียนชุดการทดสอบเพื่อให้เกิด defect นั้นจริง ๆ
  2. ทำการแก้ไข
  3. ทำการทดสอบด้วยชุดการทดสอบที่สร้างขึ้นมา (ได้ชุดของ Automate test มาแล้ว)
  4. ถ้าผ่านทั้งหมดแล้ว ให้ลืม defect นั้นไปซะ เพราะว่า มีชุดการทดสอบครอบคลุมไว้แล้ว เอาเวลาไปคิดอย่างอื่นที่มีประโยชน์ดีกว่านะ
เนื่องจาก Agile Testing เน้นเรื่องการทำงานร่วมกันของทีม และร่วมกันสร้าง automate regression test ขึ้นมา เพื่อทำให้ทีมรับรู้ feedback ของการทำงานได้อย่างรวดเร็ว (Fast Feedback) มันทำให้ทีมสามารถรับรู้ถึงปัญหา และ ทำการแก้ไขได้อย่างรวดเร็ว และพร้อมรับต่อการเปลี่ยนแปลงอีกด้วย เมื่อทีมทั้งหมดทำงานร่วมกัน สิ่งที่สมาชิกทุกคนในทีมต้องรู้คือ การ testing จะต้องมาคู่กับการ coding เสมอ นั่นหมายความว่า งานที่เสร็จ (Done) หมายถึงงานที่ต้องผ่านการ testing และ coding เสร็จนั่นเอง ไม่มีการตามมาทดสอบในภายหลัง มิเช่นนั้น จะเกิดการทำงานแบบ mini-Waterfall ซึ่งไม่ควรทำอย่างเด็ดขาด !! เนื่องจาก Agile Testing เปิดเผยให้ทีม และ องค์กร เห็นถึงสถานะของการทดสอบระบบว่าเป็นอย่างไร โดยที่ Agile tester นั้นจะช่วยยกปัญหาต่าง ๆ ของการทดสอบระบบขึ้นมา เพื่อให้ทีมรับรู้ และให้ทีมช่วยกันคิดวิธีแก้ไข เพื่อเรียนรู้ที่จะปรับและเปลี่ยนการทำงานให้ดีขึ้นกว่าเดิม (Make it Better) นี่มันคือ Visibility และ Transparency ของการทำงานเลยนะ ตัวอย่างเช่น ทาง Tester อาจจะยกปัญหาของการทำ manual regression test ขึ้นมา ว่าต้องใช้เวลาการทดสอบนานมาก ๆ แถมเป็นการทดสอบแบบช้ำ ๆ มากมาย ดังนั้น ทีมช่วยออกความคิดเห็นหน่อยว่า จะแก้ไขอย่างไรดี ? ซึ่งหนึ่งในวิธีการก็คือ
  • สร้าง Automate regression test สิ
  • ช่วยกันการทดสอบสิ
ไม่ว่าจะเป็นทางไหน มันดีขึ้นกว่าเดิมแน่นอน ยังไม่พอนะ ยังมีการใช้ Test Pyramid มาเพื่อ ช่วยให้ทีมพูดคุยกันว่า ในแต่ละชั้นของการทดสอบทั้ง Unit test, Functional test, UI test และ Manual Test นั้น จะทำการทดสอบเรื่องอะไรบ้าง ซึ่งทำให้แต่ละคนในทีมมีความรู้ความเข้าใจเรื่องของการทดสอบตรงกัน สุดท้ายแล้ว ไม่ใช่เพียงแค่ทำงานเสร็จเท่านั้น ไม่ใช่เพียงแค่ทดสอบเสร็จเท่านั้น แต่ยังช่วยให้เราสร้างระบบงาน หรือ product ที่แจ่ม และประสบความสำเร็จตามมาอีกด้วย
คุณล่ะ คิดอย่างไรกับ Agile Testing บ้าง ?

Viewing all articles
Browse latest Browse all 1997

Trending Articles