วันเสาร์ที่ 31 กรกฎาคม พ.ศ. 2564

วิธีการทดสอบ (white box, black box) Software Testing

 วิธีการทดสอบ (white box, black box) Software Testing

วิธีการทดสอบจะเแบ่งออกเป็น 2 วิธีคือ
- Functional testing (Black box testing)
- Structural (White box testing
1. Functional testing (Black box testing) จะมองทั้งระบบเป็นเหมือน กล่องดำ(black box) ไม่สนใจว่าการทำงานภายในเป็นอย่างไร เช่น การทำงานของเครื่องจักร โดยเราแค่ป้อนคำสั่งให้เครื่องจักร แล้วดูว่าเครื่องจักรทำงานถูกต้องหรือไม่ โดยที่ไม่สนใจกระบวนการทำงานว่าข้างในทำอะไรบ้าง เป็นต้น ส่วนการสร้างกรณีทดสอบจะต้องใช้เอกสารกำหนดคุณลักษณะความต้องการใช้งานซอฟต์แวร์(Requirement specification)
ข้อดีของการทดสอบแบบ functional Testing คือ
- กรณีทดสอบจะไม่ขึ้นกับวิธีการสร้างซอฟต์แวร์ แม้ว่าจะมีการเปลี่ยนแปลงขั้นตอนการทำงานภายใน แต่กรณีทดสอบก็ยังสามารถใช้ได้อยู่
- สามารถออกแบบกรณีทดสอบไปพร้อมๆกับการพัฒนาซอฟต์แวร์ได้ ทำให้ลดเวลาโดยรวมของการพัฒนาซอฟแวร์ลงไปได้
ข้อด้อยของการทดสอบแบบ functional Testing คือ
- กรณีทดสอบอาจมีการซ้ำซ้อนกันได้ โดยอาจจะไปทดสอบซ้ำกับการทำงานเดิมภายใน black box ทำให้เสียเวลาโดยเปล่าประโยชน์
- การทดสอบอาจจะไม่ครอบคลุมการทำงานทั้งหมดภายใน black box อาจมีช่องว่าที่ไม่ได้ทดสอบโดยที่เราไม่รู้
ตัวอย่างการใช้งาน


Test-CaseTest-StepExpect-Result
(ตัวอย่าง valid case) 
ผู้ใช้งานเข้าสู่ระบบด้วย username และ password ที่ถูกต้อง
1. เปิดหน้า login
2. ใส่ username <user>
3. ใส่ password <1234>
4. กดปุ่ม login
1. ผู้ใช้งานสามารถเข้าสู่ระบบได้
2. ระบบแสดงหน้าข้อมูลส่วนตัว
3. ระบบแสดงข้อความ "ยินดีต้อนรับ"
(ตัวอย่าง Invalid case) 
ผู้ใช้งานไม่สามารถเข้าสู่ระบบด้วย password ผิด
1. เปิดหน้า login
2. ใส่ username <user>
3. ใส่ password <43211234>
4. กดปุ่ม login
1. ผู้ใช้งานไม่สามารถเข้าสู่ระบบได้
2. ระบบแสดงข้อความ "ไม่สามารถเข้าสู่ระบบได้" กรุณาตรวจสอบ user name หรือ password
2. Structural testing(White box testing) การทดสอบแบบ white box นั้นจะต้องรู้ว่าซอฟต์แวร์สร้างขึ้นมาอย่างไร และใช้การทำงานนั้นสร้างกรณีทดสอบขึ้นมาโดยจะต้องกำหนดกรณีทดสอบตามขั้นตอนการทำงานของฟังก์ชันที่สร้างขึ้นมาจริงๆ
เปรียบเทียบการทำงาน
ทั้งการทดสอบแบบ Black box และ White box มีวัตถุประสงค์เพื่อสร้างกรณีทดสอบขึ้นมาทดสอบซอฟต์แวร์ ในส่วนของ Black box จะอาศัยข้อมูลจาก requirement specification เพียงอย่างเดียวในการสร้างกรณีทดสอบ ส่วนการทดสอบแบบ White box นั้น จะอาศัยขั้นตอนการทำงาน ของซอฟต์แวร์ หรือ source code เพียงอย่างเดียวในการสร้างกรณีทดสอบ ดังนั้นเราจะต้องใช้การทดสอบทั้ง 2 วิธีร่วมกัน  เช่น
- ถ้าเราใช้การทดสอบแบบ White box เพียงอย่างเดียวเราก็จะไม่รู้ว่าเราพัฒนาฟังก์ชันต่างๆ ตาม
requirement specification ครบแล้วหรือไม่ และไม่สามารถบอกได้ว่ายังมี requierment specification ส่วนไหนที่ยังไม่ได้พัฒนา
- ถ้าเราใช้การทดสอบแบบ Black box เพียงอย่างเดียว ในกรณีที่มีการสร้างฟังก์ชันที่นอกเหนือไปจากที่กำหนดไว้ใน requirement specification จะไม่สามารถบอกได้ว่าสร้างฟังก์ชันที่นอกเหนือกับที่กำหนดไว้
--------------------------------------------------------------------------------------------------------------------------