จากประสบการณ์ที่ผ่านมาเรื่องของการพัฒนา Software ตั้งแต่หัดเขียน Software ใหม่ๆ ข้ามมาเรียนแบบเป็นหลัก เป็นการ ในสมัยมหาวิทยาลัย จนกระทั่งอาจหาญลองรับงานเขียน Software เองเลย ก็ไม่เคยได้้รู้จักว่า Software Testing หรือ Tester หรือ Software Tester นี่มันคืออะไร แทบจะบอกว่าไม่เคยได้ยินซะด้วยซ้ำ ก็เป็นไปได้ (เท่าที่พอจะนึกลำดับความทรงจำกลับไปได้)
จนกระทั่งวันหนึ่งชีวิตก็พลิกผัน จากที่การเป็น System Administrator มาเป็น Tester ถึงได้สัมผัสรสชาติของ Software Testing และชีวิตแบบ Software Tester ว่ามันเป็นเช่นไร ซึ่งก็ต้องยอมรับกันจริงๆ ว่างานทางด้าน Software Testing ยังเป็นที่รู้จักน้อยจริงๆ แต่ก็ยังดีกว่าเมื่อก่อนที่รู้จักกันอยู่ในวงแคบๆ เท่านั้น
ผมลองมานั่งคิดทบทวนดูว่า ในช่วง 2 – 3 ปีที่ผ่านมาในงานทางด้าน Software Testing ได้พบเจอปัญหาอะไรบ้างของ Software Development Process ที่ส่งผลกับงานทางด้าน Software Testing บ้าง จนไ้ด้ออกมาเป็น 5 ปัญหาคลาสสิค ของ Software Development Process ที่มีผลต่อ Software Testing เท่าที่เคยประสบพบเจอมา

1. ความต้องการที่สุดแย่ (Poor Requirement)

Requirement เป็นจุดเริ่มต้นของการพัฒนา Software ใดๆ บนโลกนี้เลยก็ว่าได้ เปรียบเสมือนถ้าเริ่มต้นดี มันก็พอจะใจชื้นได้ว่า Project จะออกมาดี แต่เท่าได้ประสบพบเจอมานั้น Requirement ส่วนหนึ่งที่ผ่านมามันจะ
  • ไม่ชัดเจน คลุมเครือ อ่านแล้วไม่เข้าใจว่าเค้าต้องการอะไร (Unclear)
  • ไม่สมบูรณ์ ประมาณรีบๆ ส่งมา (Incomplete)
  • พื้นๆ บ้านๆ มากๆ จนไม่รู้ว่าต้องการอะไร เนี่ย (Too General)
  • นึกไม่ออกเลยว่าจะ Test แบบไหน (Not Testable)
Requirement เหล่านั้นจะ ออกดอก ออกผล มาเป็น Defects หรือ Bugs จำนวนมากมาย ซึ่งส่งผลต่อ Project Plan ทันที เนื่องจากจะต้องเสียเวลาในการมานั่งถกเถียง หรือสรุป ถึงสาเหตุ หรือหาข้อสรุป เพื่อปิด Defects หรือ Bugs เหล่านั้นว่าอันไหนที่จะไม่แก้ เนื่องจาก Requirement ไม่บอก หรือไม่ชัดเจน หรือถ้าอันไหนจะแก้ไข ก็ต้องไปเก็บข้อมูลมาเพิ่มเนื่องจาก Requirement ไม่ชัดเจนอีกเช่นกัน
จากสถิติคราวๆ ของ Defects Originate in Project Phase
  • 56% เกิดจาก Requirement
  • 27% เกิดจาก Design
  • 10% เกิดจาก Coding
  • 7% เกิดจาก Other

2. แผนงานที่เพ้อฝัน (Unrealistic Schedule)

หากวางแผนการรบไม่ดี อย่าริิอาจคิดว่าจะชนะศึกใดได้ ก็ไม่ต่างอะไรกับการวางแผนงาน หรือ Project Plan ที่แบบเพ้อฝัน โดยไม่คิด หรือปรึกษาสมาชิกคนอื่นๆ ในทีมพัฒนา Software มันก็เป็นสัญญาณอย่างหนึ่งแล้วว่า เหนื่อยแน่แน่ เนื่องจากอะไร ต้องยอมรับกันตรงๆ ว่า ในแต่ละ Project ก็จะมี Project Manager เป็นผู้ควบคุมเรื่องของ Project Plan หากเมื่อใดที่ Project Manager (บางคน) ทำแผนงานเสนอไปยังลูกค้า โดยมิได้ปรึกษาในส่วนของแผนงานย่อยๆ ในแต่ละส่วนที่อยู่ใน Project อาศัยเพียงความเข้าใจของตัวเองเป็นหลัก รับรองได้ว่า เหนื่อยแน่แน่ (ย้ำครั้งที่ 2)
งานเยอะ แต่เวลาน้อย อย่าได้คิดเลยว่า Software Tester จะสามารถที่จะทำการทดสอบ Software นั้นๆ และหา Defects หรือ Bugs ต่างๆ ออกมาเพื่อทำการแก้ไขให้ Software นั้นๆ เสร็จ สมบูรณ์ พร้อมคุณภาพ หรือมีปัญหาให้น้อยที่สุด แค่ลำพัง Developer เขียน Coding ให่้เสร็จทันตามระยะเวลาก็จะแน่แล้ว ไฉนเลยจะมีเวลามาทำ Unit Test ละครับ

3. Testing ไม่เพียงพอ (Inadequate Testing)

บ่อยครั้งที่จะได้ยินคำบ่น “Test มายังไงเนี่ย Software มีปัญหาเยอะแยะเลย” หรือไม่ก็ “โห ตอน Test ไม่เจอเลยหรือ Bug พวกนี้” หรือไม่ก็ “ผ่าน Test มาได่้ไง ไม่มีคุณภา่พเลย” เป็นต้น เหล่านี้เป็นภาพสะท้อน หลังจากส่งมอบงานให้่ลูกค้าบ้าง หรือบางทีก็คนในทีมพัฒนา Software เองก็ตาม (ละไว้ในฐานที่เข้าใจ)
คุณภาพของงาน หรือสินค้าใดๆ ใช่ว่าใช้เวลาเพียงไม่นานจะสร้าง หรือผลิตให้ออกมามีคุณภาพได้ เช่นเดียวกันงานทางด้าน Software Testing นั้น เป็นงานที่ต้่องใช้เวลา และความละเอียดรอบคอบในการทำงาน
ต้องยอมรับกันเลยว่าเวลาที่ให้มาในส่วนของ Software Testing นั้น น้อยจริงๆ หรือบางครั้งได้มาเยอะ แต่ก็จะถูกเบียดบังเวลาจากงานก่อนหน้านั้น ที่ไม่เสร็จแล้วมาแอบกินเวลาของ Software Testing ไป จนหดสั้น เหลือนิดเดียว ฉะนั้นอย่าได้หวังว่า Defects หรือ Bugs จะน้อยครับ
หากลูกค้าบ่น หรือติ มาเรื่องของคุณภาพ หรือความไม่สมบูรณ์ของ Software เมื่อท่านๆ เหล่้านั้น พบว่า Software มีปัญหา หรือล่มไประหว่างใช้งาน ก็ต้องยิ้ม และก้มหน้าแก้ไขไป …

4. เพิ่มโน้น เพิ่มนี่ ไม่จบไม่สิ้น (Featuritis)

Developer เริ่มพัฒนา Software ไป ในระหว่างก็มีการขอเปลี่ยนแปลง Features หรือ Functions ไม่ว่าจะเพิ่มขึ้นมา หรือตัดออกไป ไม่ว่าจะด้วยเหตุผลใดๆ ก็ตาม ใช่ว่า่จะสร้างความปวดหัว, ขุ่นเคือง หรือไม่ปลื้ม ให้กับเหล่า Developer เท่านั้น ทางทีม Software Tester ก็ได้รับผลกระทบด้วยเช่นกัน
เมื่อมีการปรับเพิ่ม หรือลด Features หรือ Functions เกิดขึ้น สิ่งที่ตามมาก็คือการต้องปรับในส่วนของ Solution Design ที่ได้ถูกออกแบบมาแล้ว โชคดีไปหากการปรับเปลี่ยน Features หรือ Functions เหล่านั้น ไม่กระทบกับ Solution Design มากเท่าไร แต่หากว่าการปรับเปลี่ยนมีผลทำให้้ต้องรื้อ Solution Design ใหม่ทั้งหมด ดีไม่ดี ต้่องออกแบบกันใหม่
ทางทีม Software Testing เองก็ต้องออกแบบการ Testing รวมทั้งต้องเตรียมงานต่างๆ เพื่อใช้ในการ Testing ไม่ว่าจะเป็น Test Cases, Test Data และ Test Environment ต่างๆ ซึ่งการปรับเพิ่ม หรือลด Features หรือ Functions เองก็มีผลกับทางทีม Software Testing ด้วยเช่นกัน

5. ไม่เข้าใจก็ไม่คุยกัน (Miscommunication)

อีกหนึ่งเรื่องคลาสสิกก็คือ ไม่ค่อยจะคุยกัน หรือไม่ก็เข้าใจกันไปคน ละทิศ ละทาง Developer เองก็ไม่เข้าใจ หรือไม่รู้ว่าลูกค้าต้องการอะไร หรือไม่ Developer ก็พบว่าลูกค้าเข้าใจในบางเรื่องไม่ถูกต้อง ก็ไม่ชี้แจ้ง หรืออธิบาย เป็นต้น เหล่านี้ก็เลยเป็นที่มาของปัญหาในระหว่างการพัฒนา Software และก็ตามมาด้วย Defects หรือ Bugs ที่เกิดขึ้นเนื่องพัฒนา Software ออกมาไม่ตรงตาม Requirement หรือ System Design ที่ออกแบบไว้ก็ตาม
แต่ก็เช่นกันใช่ว่าจะเกิดปัญหาเรื่อวนี้เฉพาะ Developer กับลูกค้าเท่านั้น Software Tester กับ Developer เองก็เช่นกัน ไม่เข้าใจก็ไม่คุยกัน มีปัญหา หรือข้อสงสัยต่างๆ ก็ไม่คุยกัน ดังนั้นก็ก่อให้เกิด Defects หรือ Bugs ที่ไม่น่าจะแจ้งไปทาง Developer เองก็มี
ฉะนั้นหันหน้ามาคุยกัน หรือคุยกัน เมื่อพอปัญหา หรือมีข้อสงสัยใดๆ ของทีมพัฒนา Software แต่บางครั้งการคุย หรือประชุม กันมากเกินไป ก็ใช่ว่าจะทำให้อะไรๆ ดีขึ้น หรือเข้่าใจกันมากขึ้นนะครับ…
ทั้งหมดที่เล่ามานั้นก็เป็นจากประสบการณ์ที่ได้ประสบพบเจอมาจากการทำงาน Software Testing ซึ่งทั้งนี้ทั้งนั้น มันอยู่ที่ทุกๆ คน ทุกๆ ส่วน ในทีมพัฒนา Software จะต้องร่วมกันทำงาน และช่วยเหลือกันเมื่อประสบปัญหาต่างๆ ไม่ว่าจะเรื่องใดๆ เื่ำพื่อให้บรรลุเป้าหมายเดียวกัน พัฒนา Software ออกมาให้ตรงตาม Requirement ที่ได้รับ และมีคุณภาพด้วยเช่นกัน