การพัฒนาซอฟต์แวร์เป็นงานที่มีความท้าทาย และสลับซับซ้อน แต่การได้มาซึ่งซอฟต์แวร์ที่ดี และมีคุณภาพเป็นเรื่องที่สำคัญไม่ต่างกัน ผู้พัฒนาจะมั่นใจได้อย่างไรว่าซอฟต์แวร์ที่ถูกสร้างขึ้นนั้นทำงานได้อย่างมีประสิทธิภาพ ตอบโจทย์ความต้องการกระบวนงาน โดยผู้ใช้งานสามารถนำไปใช้ได้จริง วันนี้ Keancode.com จะพามาเรียนรู้หลักการ Verification and Validation Confidence กระบวนการที่ช่วยสร้างความมั่นใจ ตรวจสอบซอฟต์แวร์ และความพร้อมใช้งานให้ซอฟต์แวร์ก่อนที่จะทำการ Launch ไปสู่ผู้ใช้ในวงกว้าง
การตรวจสอบซอฟต์แวร์ เปรียบเสมือนขั้นตอนสุดท้ายที่ช่วยการันตีคุณภาพของซอฟต์แวร์ก่อนส่งมอบให้ผู้ใช้งานต่อไป ~
ทำความรู้จัก Verification and Validation คืออะไร ?
สัญลักษณ์ V&V Software Testing ถูกย่อเพื่อให้จดจำได้ง่ายคือ การตรวจสอบ (Verification) และ การตรวจสอบความถูกต้อง (Validation) ถึงแม้ว่าความหมายของคำทั้งสองจะฟังดูคล้ายกัน แต่มีจุดประสงค์ที่แตกต่างกันในแง่ของมุมมองการใช้งาน
![Verification and Validation](http://keancode.com/wp-content/uploads/2024/06/confidence-1-opt.png)
Verification ตรวจสอบซอฟต์แวร์ เพื่อให้มั่นใจได้ว่าซอฟต์แวร์ทำงานได้อย่างถูกต้องตามกระบวนการที่วิเคราะห์ และออกแบบระบบไว้ในช่วงเริ่มต้นพัฒนา หรือแม้แต่ข้อกำหนดต่างๆ การตรวจสอบจะประกอบไปด้วย
- การตรวจสอบโค้ด (Code Reviews) : ให้ตรงตามมาตรฐานที่วางไว้ และสามารถระบุข้อผิดพลาดที่เกิดขึ้นได้ เพื่อที่จะดำเนินการแก้ไขให้เรียบร้อย
- การใช้เครื่องมืออัตโนมัติเพื่อสำรวจโค้ด (Automated tools) : เป็นการค้นหาสาเหตุเบื้องหลังของปัญหาอัตโนมัติ เพื่อระบุจุดอ่อนที่อาจส่งผลต่อประสิทธิภาพตัวซอฟต์แวร์ทั้งในปัจจุบัน และอนาคต
- การทดสอบส่วนย่อยของโค้ด (Unit Testing) : เพื่อยืนยันว่าการทำงานในแต่ละโมดูลย่อยของโค้ดที่พัฒนาขึ้นทำงานได้อย่างราบรื่นไม่สะดุด
ในขณะเดียวกัน Validation หรือการตรวจสอบความถูกต้องเช่นเดียวกัน แต่จะพูดถึงความต้องการ และความคาดหวังของผู้ใช้งานเป็นหลัก ว่าซอฟต์แวร์ที่ถูกพัฒนาขึ้นมาตรงตามวัตถุประสงค์ดังที่ตั้งใจไว้ในตอนแรกหรือไม่ ผู้ใช้งาน OK หลังจากได้ทดลองใช้งานมากน้อยแค่ไหน ? ซึ่งประกอบไปด้วยการทดสอบ ดังนี้
- การทดสอบการยอมรับของผู้ใช้ ด้วยหลักการ UAT : ผู้ใช้งานทำการทดสอบใช้งานจริงกับแอปพลิเคชันเพื่อตรวจสอบว่าใช้งานได้ง่าย และตรงกับความต้องการ
- การทดสอบประสิทธิภาพ : จำลองผู้ใช้งานพร้อมกันจำนวนมากๆ เพื่อประเมินประสิทธิภาพการรองรับการโหลดสูงสุดพร้อมกัน และวิเคราะห์กิจกรรมอื่นๆ เพิ่มเติมเพื่อป้องกันปัญหาที่อาจเกิดขึ้นล่วงหน้า ..
- การทดสอบความปลอดภัย : จำลองการโจมตีของแฮ็กเกอร์เพื่อระบุช่องโหว่ที่อาจทำให้ข้อมูล หรือฟังก์ชันการทำงานเสียหายขณะที่ระบบกำลังดำเนินงาน
![Easy to Use Software](http://keancode.com/wp-content/uploads/2024/06/confidence-2-opt.png)
หากยังนึกภาพไม่ออก ยก Case Study กันเลยดีกว่า !
สร้างความมั่นใจใน ระบบจองห้องประชุม ให้บริษัท Keancode Inc.
![](http://keancode.com/wp-content/uploads/2024/06/Keancode-Inc.-meeting-room-opt.png)
Scenario : Keancode Inc. กำลังพัฒนาระบบจองห้องประชุมออนไลน์สำหรับภายในองค์กรที่กำลังเติบโต โดยระบบที่ราบรื่นเสถียร และเชื่อถือได้ถือเป็นสิ่งสำคัญ เพื่อหลีกเลี่ยงความขัดแย้งในการใช้ห้องประชุมร่วมกัน
Verification :
- Functional Testing : ทดสอบการทำงานฟังก์ชันทั้งหมด เช่น การค้นหาห้อง การจองในแต่ละช่วงเวลา การเชิญผู้เข้าร่วมประชุม การกำหนดสิทธิ์ และการยกเลิก เป็นต้น
- Usability Testing : ประเมินอินเทอร์เฟซด้านผู้ใช้ และประสบการณ์การใช้งานของระบบ ว่าสามารถช่วยให้ผู้ใช้ค้นหา และจองห้องประชุมได้ง่าย ?
- API Integration Testing : ระบบทำงานร่วมกัน API ที่เกี่ยวข้องได้อย่างราบรื่น ?
Validation :
- Load Testing : จำลองการจองห้องประชุมในช่วงเวลาเดียวกัน (Peak time) เพื่อทดสอบความพร้อมในการใช้งาน และระยะเวลาการโหลดหน้าระบบ ทำให้มั่นใจได้ว่าระบบจะไม่ขัดข้อง หรือทำงานช้าลง
- Performance Testing : วัดประสิทธิภาพการตอบสนองว่าระบบจ้องห้องประชุมสามารถทำงานในกรอบเวลาที่ยอมรับได้อย่างสม่ำเสมอ
- Accessibility Testing : ระบบสามารถเข้าถึงได้สำหรับผู้ใช้ที่พิการ โดยเป็นไปตามมาตรฐานการเข้าถึง และง่ายต่อการใช้งาน
การเลือกใช้เครื่องมือเพื่อตรวจสอบประสิทธิภาพต่างๆ จำเป็นต้องคำนึงถึงปัจจัยอื่นๆ ร่วมด้วย แม้กระทั่งทั้งทรัพยากร และความเชี่ยวชาญของผู้ตรวจสอบซอฟต์แวร์เองก็ถือเป็นอีกปัจจัยหนึ่งที่ควรให้ความสำคัญ ก่อนที่จะนำไปสู่กระบวนการใช้งาน – กระตุ้นการยอมรับเทคโนโลยี Technology Acceptance สู่การนำมาซึ่ง Adoption