หลายๆคนที่เคยเล่นเกมหรือ ลองใช้โปรแกรมต่างๆ จะคุ้นเคยกันดีกับคำว่า ฺBeta กันเป็นอย่างดี และเราน่าจะเคยชินกับความหมายของมันที่ว่าเป็น ช่วงทดลองเล่น ใช่มั้ยล่ะ แต่รู้มั้ยว่าคำว่า Beta ในเชิง Testing นั้นที่จริงแล้วคืออะไร เราจะมาลองทำความรู้จักกัน ก่อนอื่นต้องบอกก่อนว่า Beta นั้นเป็นส่วนหนึ่งใน phase ของ Software Testing ที่มีอยู่ด้วยกันทั้งหมด 4 phase ดังนั้นเพื่อให้เห็นภาพเราจะมาทำความรู้จักกับ Phase ต่างๆของ Software Testing กันก่อน
Software Testing Phase
- Unit Testing : การที่จะพัฒนาซอฟแวร์ขึ้นมาหนึ่งตัว แน่นอนว่าเราจะต้องเริ่มจากการเขียนฟังก์ชันการทำงานขึ้นมาหนึ่งอย่างใช่มั้ยล่ะ การเทสก็เช่นกัน unit testing คือการทดสอบการทำงานของซอฟแวร์ที่แยกย่อยเฉพาะส่วนเล็กๆเท่านั้น โดยที่ phase นี้คนที่ทดสอบหลักๆคือ Develper ที่เขียนโค้ดนั่นเอง
- Intregation Testing : เมื่อทดสอบการทำงานย่อยๆเสร็จแล้ว ถัดมาใน phase นี้จะเป็นการทดสอบการติดต่อกันของส่วนย่อยๆทั้งหมด โดย phase นี้จะเน้นการตรวจสอบความถูกต้องของการส่งข้อมูลหากันในแต่ละส่วนย่อยๆ ซึ่งผู้ทดสอบของ phase นี้จะเป็น Tester
- System Testing : การทดสอบของ phase นี้จะทำได้ก็ต่อเมื่อผ่าน Intregating Test อย่างสมบูรณ์มาแล้ว โดยที่ phase นี้จะทดสอบความสมบูรณ์ของ software โดยมองที่ภาพรวมว่า ครบถ้วนตามความต้องการหรือไม่ ประสิทธิภาพในการทำงานเป็นอย่างไร ความปลอดภัยของระบบเป็นต้น
- Acceptance Testing : เมื่อมาถึงการทดสอบที่ phase นี้แสดงว่า software ของเราใกล้ถึงขั้นที่สมบูรณ์แล้ว และการทดสอบของ phase นี้จะเป็นการทดสอบก่อนที่จะปล่อยใช้จริงเพื่อดูว่า software ของเราเมื่อถูกใช้จริงแล้วเป็นอย่างไร ตรงตามความต้องการของผู้ใช้จริงๆหรือเปล่า โดยที่ phase นี้การทดสอบจะแบ่งเป็น 2 ส่วนคือการทดสอบแบบ Alpha และแบบ Beta โดยผู้ทดสอบก็คือ ผู้ที่จะใช้ software ของเราจริงๆ และผู้ที่เกี่ยวข้องทั้งหมด
ความแตกต่างระหว่าง Alpha กับ Beta Testing
Alpha Testing เป็นส่วนหนึ่งของ User Acceptance Testing ที่ทดสอบเพื่อให้แน่ใจว่าซอฟต์แวร์จะเป็นไปตามที่ออกแบบไว้ โดย Alpha Testing จะเป็นการทดสอบซอฟต์แวร์เพื่อที่จะหาบั๊กหรือปัญหาต่างๆก่อนที่จะเผยแพร่ออกไปให้ผู้ใช้ได้ใช้กันจริงๆ ในการทดสอบนั้นจะมีทั้งที่เป็น black box และ white box โดยจะทดสอบในทุกๆส่วนที่ผู้ใช้น่าจะได้ใช้งานกันจริงๆ โดยอาจจะทำภายใต้สภาพแวดล้อมที่จำลองขึ้นมาเพื่อการทดสอบโดยเฉพาะ
จากการที่มีการทดสอบแบบ white box อยู่ด้วยนั้น ทำให้ส่วนมากแล้วการทำ Alpha Testing มักจะทดสอบโดยคนที่มีความรู้ความเข้าใจเกี่ยวกับตัวซอฟต์แวร์อยู่ในระดับหนึ่ง ซึ่งคนที่มาทดสอบก็มักจะเป็น Tester ที่อยู่ในทีมพัฒนา โดยจะทำการหา บั๊ก, ข้อผิดพลาด, ฟังก์ชันที่ขาดหายไป หรือแม้แต่ส่วนส่วนของเอกสารต่าง ถัดจาก Tester แล้วก็มี QA หรือ Quality Assurance เข้ามาทำการรับช่วงทดสอบต่อโดยจะเป็นการทดสอบในภาพที่กว้างขึ้นมาอีกเช่นเกี่ยวกับสภาพแวดล้อมที่ซอฟต์แวร์จะถูกนำไปใช้งาน เป็นต้น
ประโยชน์ที่ได้จากการทำ Alpha Testing ก็คือจะได้ฟีดแบคกลับมาเร็ว ไม่ต้องรอปล่อยออกไปให้คนภายนอกทดสอบให้ ทำให้มีเวลาในนการปรับปรุงแก้ไขให้ซอฟต์แวร์มีคุณภาพยิ่งขึ้น และยังสามารถทดสอบด้วยสภาพแวดล้อมและเหตุการณ์ที่จำลองขึ้นมาได้เองซึ่งอาจมีโอกาสเกิดขึ้นได้ยากในการใช้ของผู้ใช้จริง โดยรวมแล้วทำให้เราสามารถลบข้อผิดพลาดต่างๆที่ร้ายแรงออกไปจากซอฟต์แวร์ของเราได้
Beta Testing เป็นการทดสอบโดยผู้ใช้จริง ซึ่งเป็นส่วนหนึ่งของ User Acceptance Testing โดยในการทำ Beta Test นั้นซอฟต์แวร์ที่ผู้ใช้จะได้ใช้งานจะมีความเป็นรูปเป็นร่าง มีฟีเจอร์ต่างๆใกล้เคียงกับเวอร์ชันที่สมบูรณ์ ในการทำ Beta Testing อาจจะยังมีการจำกัดจำนวนผู้เข้าร่วมทดสอบเนื่องจากความพร้อมของตัวระบบ และเพื่อความง่ายในการเก็บฟีดแบค และจากการที่ผู้ทดสอบเป็นผู้ใช้จริง สภาพแวดล้อมในการทดสอบจึงเป็นสภาพแวดล้อมจริงต่างกับ Alpha Testing ที่เป็นสภาพแวดล้อมที่จำลองขึ้น โดยปกติแล้ว Beta Testing จะเป็นการทดสอบแบบ black box โดยมีเป้าหมายเพื่อทดสอบความสมบูรณ์โดยรวมของซอฟต์แวร์และเก็บตกบั๊กต่างๆที่อาจจะหลุดรอดมาจากการทดสอบครั้งก่อนๆ ซึ่ง Beta Testing นั้นมักจะใช้เวลาในการทดสอบไม่นานนักเพื่อรีบปรับปรุงและสร้างออกมาเป็นซอฟต์ที่สมบูรณ์ออกมาให้เร็วที่สุดนั่นเอง
ต้องวางแผนในการทดสอบยังไง และ ทดสอบอะไรบ้าง ?
การทำ Beta Testing ที่ผู้ทดสอบจะเป็นผู้ใช้งานหรือลูกค้าของเราในอนาคตเข้ามาทดสอบ ดังนั้นจึงต้องมีการวางแผนให้เป็นระบบเพื่อให้ผลลัพธ์จากการทดสอบออกมาตรงตามที่ต้องการมากที่สุด โดยขึ้นตอนในการทดสอบคร่าวๆมีดังนี้
- วางแผน ขั้นตอนแรกของการวางแผนก็คือการวางแผนนั่นเอง โดยเราจะต้องกำหนดวัตถุประสงค์และเป้าหมายที่จะทดสอบซอฟต์แวร์ของเราให้ชัดเจน จะได้ทำการจัดเตรียมสิ่งที่จำเป็นในการทำการทดสอบให้พร้อม ไม่อย่างนั้นการเสียเวลาไปในการทดสอบอาจจะไม่ได้อะไรกลับมาเลย
- หาคนมาทดสอบ เราต้องคิดว่าเราต้องการผู้เข้าร่วมทดสอบจำนวนเท่าไหร่ มีข้อกำหนดอะไรเป็นพิเศษหรือไม่ในการคัดเลือกผู้ทดสอบ โดยขึ้นอยู่กับเป้าหมายในการทดสอบของเราว่าเราต้องการจำนวนผู้ทดสอบจำนวนมาก หรือต้องการผู้ทดสอบที่เป็นกลุ่มเฉพาะบางกลุ่ม
- เปิดให้ทดสอบ เมื่อมีเป้าหมายและคนที่จะมาทดสอบแล้ว ก็ถึงขั้นเริ่มการทดสอบจริง โดยเราต้องหาช่องทางในการประชาสัมพันธ์ออกไปให้ผู้ทดสอบสามารถเข้ามาดาวน์โหลดหรือเข้าถึงซอฟต์แวร์ที่จะทำการทดสอบได้ในกรณีที่ไม่ได้คัดเลือกผู้ทดสอบมาก่อน โดยควรมีคู่มือระบุวิธีการใช้งาน หรือบอกถึงปัญหาข้อจำกัดบางอย่างในซอฟต์แวร์ของเรา เพื่อให้ผู้ใช้ทราบและไปโฟกัสที่การใช้งานส่วนอื่นๆที่อยากจะทดสอบจริงๆ นอกจากนี้สิ่งที่สำคัญมากที่สุดก็คือต้องบอกถึงวิธีการแจ้งปัญหาข้อผิดพลาดที่ผู้ทดสอบเจอ เพื่อที่เราจะได้รู้แล้วนำไปปรับปรุงแก้ไขได้
- เก็บผลตอบรับ หลังจากมีผู้เข้ามาทดสอบใช้งานแล้ว นอกจากบั๊กต่างๆที่ผู้ใช้รายงานเข้ามา เราก็ต้องรับเอาฟีดแบคหรือผลตอบรับจากผู้ทดสอบด้วยเช่นกัน เพราะบางครั้งอาจจะมีสิ่งที่เราอออกแบบเอาไว้แต่ผู้ใช้รู้สึกไม่ถูกใจ หรือมีอะไรที่อยากจะให้เราทำเพิ่มเราก็ควรจะรับเอามาพิจารณา เพราะอาจจะเป็นผลดีกับภาพรวมของซอฟต์ตอนที่ปล่อยเวอร์ชันถัดไปก็ได้
- จบการทดสอบ เมื่อทำการทบสอบไปจนครบเวลาที่วางแผนไว้หรือจนถึงตอนที่ไม่มีบั๊กถูกพบเพิ่มขึ้น ก็ถึงเวลาที่จะต้องยุติการทำ Beta Test ลง โดยสิ่งที่ควรทำก็คือการแจ้งกับผู้เข้าร่วมทดสอบให้รู้ล่วงหน้า และอาจจะประกาศถึงช่วงเวลาที่ซอฟต์แวร์เวอร์ชันจริงจะออกมาให้ได้ใช้งาน หรือบางครั้งอาจจะมีการให้รางวัลหรือข้อเสนอพิเศษกับผู้เข้าร่วมทดสอบ เพื่อเป็นรางวัลในการเข้ามาช่วยปรับปรุงพัฒนาในครั้งนี้ ในอนาคตถ้ามีการเปิดให้ร่วม Beta Testing อีกเราก็อาจจะได้รับความสนใจมากยิ่งขึ้น
การพัฒนาซอฟต์แวร์กว่าจะเป็นรูปเป็นร่างและออกมาถึงมือผู้ใช้งาน ก็ต้องผ่านขั้นตอนการทดอบต่างๆมามากมาย หลังจากได้อ่านบทความนี้กันแล้วก็คงจะเข้าใจกันมากขึ้นว่าคำว่า Alpha หรือ Beta Testing นั้นหมายถึงอะไร เวลาได้เข้าไปร่วมทดลอบใช้งานจะได้มีความเข้าใจ และเป็นส่วนหนึ่งในการทำให้ซอฟต์แวร์เหล่านั้นออกมาสมบูรณ์นั่นเอง