ฝึกสอน สิ่งที่ Software Tester จะต้องทำทั้งใน Traditional และ Agile

what-tester-must-do-in-traditional-and-agile

สวัสดีบ่ายวันพฤหัสบดีที่ 19 มีนาคม พ.ศ. 2558 วันนี้มาสอนเรื่อง Agile Testing in Practice ที่โรงแรมจัสมิน จัดโดย สถาบันไอเอ็มซี ตอนนี้กำลังสนุกสนานกับเรื่องของ Unit Testing ของการสอนด้วยพี่ปุ๋ยแห่ง www.somkiat.cc ก็เลยแวบมานั่งเขียน Blog เรื่องที่พูดในการสอนครั้งนี้ไปคือ สิ่งที่ Software Tester จะต้องทำทั้งในการพัฒนาซอฟต์แวร์ทั้งแบบ Traditional และ Agile

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

หยุดแป๊ปและกลับมาคิดนิดนึงหน่อยว่า จริงๆ แล้ว Software Tester นั้นทำอะไรบ้างทั้งใน Traditional และ Agile?

Software Tester ทำอะไร?

แต่ละองค์กร แต่ละบริษัท แต่ละที่ ที่มีตำแหน่ง Software Tester หรือบางที่ก็เรียกขานว่า QA หน้าที่ความรับผิดชอบก็จะคล้ายๆ กันในตัวหลักๆ หรืออาจจะไม่ได้ทำ โดยผมขอสรุปออกมาจากประสบการณ์ของตัวเองและสิ่งที่ส่งต่อให้น้องๆ ทั้งที่มาฝึกงานและทำงานร่วมกับผมในสายงานของ Software Tester ดังนี้

  1. วิเคราะห์ความต้องการ (Requirement)
  2. วางแผนการทดสอบ (Test Planning)
  3. คิดและออกแบบการทดสอบ (Test Design) ทั้ง Test Case, Test Scenario, Test Data และTest Environment
  4. สร้าง Test Case และTest Scenarios
  5. เตรียม Test Data และTest Environment
  6. ทดสอบ
  7. บันทึก Bug ที่พบเจอ

ย้ำอีกรอบว่า แล้วแต่ที่นะครับว่า Software Tester ณ ที่นั้นๆ ถูกกำหนดไว้ว่าจะทำอะไร

ปัญหาส่วนใหญ่ประสบ

จากประสบการณ์ของตัวเองที่ผ่านงานด้านนี้มา รวมทั้งพูดคุยกับหลายๆ คนที่ทำงานในสายของ Software Tester และ Programmer/Developer เมื่อพูดถึงเรื่องของการทดสอบซอฟต์แวร์ (Software Testing) ส่วนใหย่จะมองที่การเขียน Test Case เป็นเรื่องหลัก แต่จริงๆ แล้วนั้น กระบวนการของการวิเคราะห์ คิด และออกแบบ Test Case รวมทั้ง Test Data ยาวไปจนถึง Test Environment เป็นเรื่องที่สำคัญมากกว่าการเขียน Test Case

Programmer/Developer จะเจอกับคิดไม่ออกว่าจะต้องทดสอบอะไรยังไงบ้าง?

Software Tester ที่ชั่วโมงบินยังน้อย หรืออยู่กับระบบเดิมๆ ก็จะเจอปัญหาคล้ายๆ กับ Programmer/Developer คือ คิดไม่ออกว่าจะต้องทดสอบอะไรบ้าง?

ฝึก

ผมขอเจาะจงลงไปที่ตัวของ Software Tester ก่อนเลยว่า ด้ายหน้าที่การงานและความรับผิดชอบ กระบวนการของการคิดวิเคราะห์ความต้องการ และออกแบบการทดสอบ (Test Design) เป็นสิ่งที่จะต้องทำได้อย่างคล่องแคล่ว และสามารถที่จะต้องถ่ายทอดต่อให้กับคนอื่นๆ ได้

ในการออกแบบการทดสอบ (Test Design) นั้น มีอยู่หลายกระบวนท่าทั้งแบบ White Box และ Black Box ซึ่งเป็นเรื่องที่ Software Tester ทั้งหลายต้องศึกษาหาความรู้ ฝึกฝนอยู่เรื่อยๆ และนำไปใช้งานอยู่ตลอด

สำหรับตัวผมเองนั้นจะใช้กระบวนท่าเทคนิคพื้นฐานอยู่ 6 กระบวนท่า

  • Equivalent Partition
  • Boundary Value Analysis
  • State Transition
  • Decision Table
  • Requirement Base Testing
  • Specification by Example

และยังใช้ Flow Chart ในการอธิบายภาพของการทำงานของ Function อยู่

ดังนั้นเน้นย้ำว่า Software Tester ต้องศึกษา ฝึกฝน และนำไปใช้อยู่อย่างต่อเนื่อง

สอน

การที่ Software Tester สามารถทำการคิดวิเคราะห์และออกแบบการทดสอบ (Test Design) ได้เพียงแค่คนเดียวนั้น สำหรับผมถือว่าเป็น คอขวดอย่างแรง ดังนั้น Software Tester จะต้องสอนสมาชิกคนอื่นๆ ในทีมพัฒนาซอฟต์แวร์ให้สามารถคิดวิเคราะห์และออกแบบการทดสอบได้ด้วยเช่นกันในทุกๆ ระกับของการทดสอบตั้งแต่ Unit Testing ยัน End-to-End Testing เลยนะจ๊ะ

การสอนเป็นทักษะหนึ่งที่ต้องการการฝึกฝนด้วยเช่นกัน การได้สอนบ่อยๆ ทำให้ทักษะนี้เพิ่มมากขึ้นเรื่อยๆ การสอนเริ่มจากเรื่องที่ตนเองใช้อยู่เป็นประจำก่อนโดยผมขอแนะนำขั้นตอนของการเตรียมตัวดังนี้

  • กำหนดเวลาของการสอนประมาณ 30–45 นาที
  • คิดและวางหัวข้อการสอนให้เหมาะสมกับเวลา
  • ทฤษฎีพอประมาณ เน้นลงมือปฏิบัติมากๆ เพื่อให้เกิดการใช้งาน
  • เขียนบทที่จะพูดและฝึกพูด
  • เน้นการเขียนอธิบายบนกระดานมากกว่าทำ Slide หรือ Presentation
  • เก็บผลลัพธ์ของการสอนในแต่ละครั้งทันทีจากผู้เรียนเมื่อสอนจบ
  • ปรับปรุงการสอนให้ดีขึ้นจากสิ่งที่ได้รับจากคนเรียน และสิ่งที่เราสังเกตเห็นเอง

ที่สำคัญ ลงสนามบ่อยๆ เพื่อเพิ่มพูนทักษะของเราเอง

สรุป

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

เริ่มฝึกตั้งแต่วันนี้ใช้เวลาประมาณวันละ 30–45 นาที ทุกวัน

เริ่มสอนตั้งแต่วันนี้ใช้เวลาประมาณวันละ 30–45 นาที สัปดาห์ละครั้งก่อน แล้วค่อยๆ ขยับปรับเปลี่ยนให้บ่อยขึ้น

ในครั้งต่อไปจะเจาะลงไปในรายละเอียดว่า เมื่อทำงานในกระบวนการพัฒนาซอฟต์แวร์แบบดั้งเดิม Software Tester จะต้องทำอะไรเพื่อให้ใช้กำลังที่เรามีได้อย่างคุ้มค่าที่สุด และการพัฒนาซอฟต์แวร์แบบแอลไจล์นั้นด้วยเช่นกัน

วันพุธที่ 25 มีนาคม พ.ศ. 2558
พญาไท กรุงเทพมหานคร

One clap, two clap, three clap, forty?

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