10 หลักปฏิบัติของ Agile Tester ที่ไม่ใช้ Agile ก็นำไปทำได้ ตอน เริ่มต้น

10-Principles-for-Agile-Testers

สวัสดีเช้าวันจันทร์ที่ 4 พฤษภาคม พ.ศ. 2558 เว้นช่วงสำหรับการมาแบ่งปันไประยะหนึ่งเนื่องจากหลายสิ่งอย่าง เช้าวันนี้เลยมานั่งนิ่งๆ เสพกาแฟดำ และเขียนเรื่องของ 10 หลักปฏิบัติของ Agile Tester ที่ไม่ใช้ Agile ก็สามารถนำมาใช้งานได้ โดยอ้างอิงจากหนังสือชื่อ Agile Testing, A Practical Guide for Testers and Agile Teams เขียนโดย Lisa Crispin และ Janet Gregory

จากประสบการณ์ของผมเองนั้นจากหนังสือเล่มนี้ ไม่จำเป็นว่าจะต้องพัฒนาซอฟต์แวร์ด้วยแนวคิดแบบ Agile เท่านั้น การพัฒนาซอฟต์แวร์ด้วยกระบวนการอื่นๆ ที่แต่ละที่ใช้งานอยู่ก็สามารถปรับใช้หรือประยุกต์ใช้หลักปฏิบัติทั้ง 10 ข้อเข้าไปใช้งานได้ด้วยเช่นกัน

การพัฒนาซอฟต์แวร์ด้วยแนวทางแบบ Agile คืออะไร?

cycle-of-agile-for-sw-dev

เพื่อนพ้องน้องพี่ที่กำลังเสพบทความนี้มาจนถึงบรรทัดนี้ส่วนหนึ่งน่าจะอยู่ในกลุ่มบริษัทหรือทีมที่นำ Agile เข้ามาปรับใช้ในการพัฒนาซอฟต์แวร์ และอีกส่วนหนึ่งอาจจะเคยได้ยินได้ฟังได้อ่านเรื่องแนวคิดการพัฒนาซอฟต์แวร์แบบ Agile ผมเลยขอสรุปภาพของการพัฒนาซอฟต์แวร์แบบ Agile นั้นขออธิบายด้วยภาพนี้แบบสั้นๆ

  • กำหนดรอบการพัฒนาและส่งมอบซอฟต์แวร์โดยทั่วไปจะเรียกว่า Iteration หรือถ้าใช้ Scrum จะเรียกว่า Sprint
  • รับความต้องการ (Requirement) ที่ต้องการพัฒนาและส่งมอบในรอบการทำงานนั้นๆ เข้ามา
  • ดำเนินการวางแผนการพัฒนาและส่งมอบในรอบการทำงานนั้นๆ และแผนภาพรวมของโครงการ
  • ทุกๆ วันทำกิจกรรมเรียกว่า Daily Standup Meeting เพื่อให้ทีมทำงานรับรู้ความก้าวหน้าและเรื่องต่างๆ ที่เกิดขึ้นทุกวัน ณ เวลาเดิม สถานที่เดิม
  • ในแต่ละวันก็จำดำเนินกระบวนการพัฒนาซอฟต์แวร์ตามกระบวนการของ Software Development Life Cycle (SDLC)
  • นำเสนอผลงานเมื่อจบรอบการทำงานแก่ลูกค้าและเก็บความคิดความเห็นต่างๆ ที่เกิดขึ้น หากลูกค้าพอใจและตรวจรับงานก็ดำเนินการส่งมอบเพื่อเปิดให้บริการต่อไป
  • จบรอบการทำงานทีมพัฒนาและส่งมอบซอฟต์แวร์ใช้เวลาประมาณ 1–2 ชม. เพื่อพูดคุยสรุปสิ่งที่เกิดขึ้นตลอดรอบการทำงานนั้นเพื่อปรับปรุงกระบวนการพัฒนาและส่งมอบซอฟต์แวร์ให้ดีขึ้นในรอบการทำงานต่อๆ ไป

10 หลักปฏิบัติของ Agile Tester มีอะไรบ้าง?

จากหนังสือ Agile Testing, A Practical Guide for Testers and Agile Teams ได้พูดถึงเรื่องของหลักปฏิบัติ 10 ข้อของ Agile Tester ไว้ดังนี้

  • Provide Continuous Feedback
  • Deliver Value to Customer
  • Enable Face-to-Face Communication
  • Have Courage
  • Keep It Simple
  • Practice Continuous Improvement
  • Respond to Change
  • Self-Organize
  • Focus on People
  • Enjoy

ประสบการณ์จากการที่ลงมือทำและช่วยเหลือคนอื่นๆ ผมขอสรุปออกมาว่าจากทั้ง 10 ข้อนั้นสำหรับผมมันบอกถึงอะไรบ้าง

  • Tester จะต้องเน้นเรื่องหลักคือการส่งมอบซอฟต์แวร์ให้ลูกค้าเป็นหลักในรอบการทำงานสั้นๆ ดังนั้นเราให้ความสำคัญกับ Test Case ที่ทดสอบว่าซอฟต์แวร์นั้นทำงานได้ถูกต้องตรงกับความต้องการแต่ละข้อหรือไม่ มากกว่า Test Cases แบบฟุ้งฟิ้งๆ กรณีแปลก หรือนานๆ ทีเกิดขึ้น อะไรพวกนี้ แต่ไม่ได้หมายความว่าไม่ทดสอบนะอย่าเข้าใจผิด
  • เมื่อซอฟ์ตแวร์มีการปรับเปลี่ยนอยู่ตลอดเวลาหลังจากที่ลูกค้าได้เห็นได้ลองได้เล่นซอฟต์แวร์ที่ส่งมอบออกไปในรอบสั้นๆ การเปลี่ยนแปลงต่างๆ ก็จะตามมา ดังนั้น Tester เองก็ต้องพร้อมรับกับการเปลี่ยนแปลงเหล่านั้นที่เกิดขึ้นมาที่ส่วนของการทดสอบซอฟต์แวร์เช่น Test Cases หรือ Test Data เป็นต้น
  • เรื่องสำคัญที่สุดคือการให้ผลกลับไปว่าการทดสอบเป็นอย่างไร ความคืบหน้าของการทดสอบเป็นเช่นไร ดังนั้นเรื่องของผลต่างๆ ที่ต้องส่งไปยังผู้ที่เกี่ยวข้องทั้งหมด Tester เองจะต้องดูว่าจะหากระบวนการ วิธีการ และเครื่องไม้เครื่องมืออะไรเข้ามาช่วยเพื่อให้ผู้ที่เกี่ยวข้องสามารถรับรู้ข้อมูลต่างๆ ได้อย่างต่อเนื่อง เช่น การนำ Dashboard สรุปผลการทดสอบต่างๆ สรุปผล Defects ที่พบ สถานะของ Defects ความคืบหน้าของการทดสอบ รวมทั้งผลการทำ Regression Testing ในแต่ละรอบด้วยเช่นกัน
  • เมื่อ Tester จะต้องให้ข้อมูลต่างๆ อย่างต่อเนื่องและรวดเร็วก็หลีกเลี่ยงไม่ได้ที่เราจะต้องมองเรื่องของ Automate Testing ที่จะนำเข้ามาช่วยเพื่อให้รับรู้ผลได้อย่างต่อเนื่องในทุกๆ ระดับของการทดสอบตั้งแต่ Unit Testing ยัน End-to-End Testing ในระดับของ Functional Testing และ Performance Testing เป็นต้น นั่นก็สะท้อนกลับมาอีกหนึ่งเรื่องว่า Tester เองต้องขวนขวายหาความรู้ต่างๆ เพิ่มเติมในเรื่องของ Automate Testing และเครื่องหมายเครื่องมือที่จะนำเข้ามาช่วยงานได้
  • การเลือกเครื่องหมายเครื่องมือต่างๆ ที่จะนำเข้ามาช่วยในส่วนของ Automate Testing ให้เน้นเรื่องความเรียบง่ายในการใช้งานและไม่ยากมากที่จะเรียนรู้และปรับใช้กับทีมพัฒนาซอฟต์แวร์ เน้นย้ำว่า Automate Testing เป็นเรื่องของทีมพัฒนาซอฟต์แวร์ มิใช่เรื่องของ Tester นะจ๊ะที่จะต้องรับผิดชอบ
  • ความไว้เนื้อเชื่อใจเป็นเรื่องที่สำคัญมากของคนในทีมพัฒนาซอฟต์แวร์ที่ต้องทำงานด้วยกันร่วมกันเพื่อส่มอบซอฟต์แวร์ที่ครบถ้วนตามที่ได้ตกลงกับลุกค้าพร้อมกับคุณภาพงานที่ตกลงกับลูกค้าด้วยเช่นกันดังนั้นการทำงานมันต้องสนุกและมีความสุข
  • เมื่อเราใช้คำว่าทำงานเป็นทีม Tester ก็ถือเป็นหนึ่งในสมาชิกของทีมพัฒนาซอฟต์แวร์และมีทักษะบวกกับความชำนาญในส่วนของการควบคุมคุณภาพของซอฟต์แวร์และทดสอบดังนั้นสมาชิกของทีมก็จะต้องไว้เนื้อเชื่อใจและในการคิดวางแผนเพื่อส่งมอบคุณภาพของซอฟต์แวร์ตามที่ได้ตกลงไว้กับลูกค้าโดยพิจารณาว่าจะมีการทดสอบแบบ Manual Testing เท่าไร และการทดสอบแบบ Automate Testing เท่าไร ทีมทำงานจะต้องร่วมกันวางแผนและตัดสินใจ โดย Tester จะเป็นผู้ให้ข้อมูลและแนวทางกับทีม
  • การสื่อสารเป็นเรื่องที่สำคัญมากการสื่อสารของการทำงานเป็นทีมทรงพลังที่สุดคือ การพุดคุยแบบตัวเป็นๆ (Face-to-Face) และจะทรงพลังขึ้นอีกถ้ามี Whiteboard หรือ Flipchart เข้ามาร่วมด้วย ลด ละ เลิก การสื่อสารผ่านตัวอักษรเป็นหลัก เช่น การนั่งเขียน Defects บันทึกลงใน Defect Management System แล้วทุกๆ คนก็ไปสื่อสารกันผ่านทางการ Reply ทางหน้าเว็บหรือทางมือถือเป็นต้น

แลดูจะเยอะหากเขียนต่อไปดังนั้นในรายละเอียดของแต่ละข้อนั้น ผมขอแยกเขียนเป็นตอนๆ รวมทั้งหมด 10 ตอน 10 วัน เพื่อให้ได้เห็นความหมาย วิธีการ และประสบการณ์ของตัวผมเองผสมเข้าไป

สรุปปิด

คำว่า Agile Testing นั้น ส่วนใหญ่จะมองว่าต้องพัฒนาซอฟต์แวร์ด้วย Agile เท่านั้นเราถึงจะต้องทำ Agile Testing แต่จริงๆ แล้วนั้นไม่จำเป็น เน้นย้ำว่า ไม่จเป็น จากประสบการณ์ของตัวผมเองนั้น การพัฒนาซอฟต์แวร์แบบเดิมๆ ไม่ว่าจะรูปแบบไหน เราสามารถที่จะนำหลักปฏิบัติบางข้อหรือทั้ง 10 ข้อของ Agile Testing เข้าไปทั้งปรับใช้และประยุกต์ใช้ได้

ตอนต่อไปจะพูดถึงเรื่องของหลักปฏิบัติข้อที่ 1 Provide Continuous Feedback นะจ๊ะ

เริ่มเขียน Blog นี้ต้องแต่เช้าแต่ก็ค้างคาไว้มาต่อให้จบในยามดึกวันนี้ ราตรีสวัสดิ์

วันอังคารที่ 5 พฤษภาคม พ.ศ. 2558 เวลา 00:17น.
หลักสี่ กรุงเทพมหานคร
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.