การทดสอบซอฟต์แวร์ (Software Testing)
การทดสอบซอฟต์แวร์ (Software Testing) หมายถึง กระบวนการในการวิเคราะห์ ตรวจสอบ และติดตามผล การพัฒนาซอฟต์แวร์ เพื่อให้แน่ใจว่าซอฟต์แวร์ที่จะส่งมอบงานมีความถูกต้อง สมบูรณ์ และมีประสิทธิภาพตามที่ผู้ใช้งานคาดหวังไว้
การทดสอบซอฟต์แวร์ Software Testing
- มีการกำหนดเกณฑ์มาตรฐานที่จะยอมรับซอฟต์แวร์ (Acceptance Criteria)
- การตรวจสอบข้อผิดพลาด ทำหลังจากที่เขียนโปรแกรมเสร็จเรียบร้อยแล้ว โดยตรวจสอบประสิทธิภาพการทำงานของซอฟต์แวร์ให้สัมพันธ์กับคุณภาพของซอฟต์แวร์
- การทดสอบซอฟต์แวร์แบ่งได้เป็น 2 กระบวนการหลัง ดังนี้
- กระบวนการตรวจสอบความถูกต้องของซอฟต์แวร์ที่ถูกพัฒนาขึ้นว่าเป็นไปตามข้อกำหนดคุณลักษณะความต้องการใช้งานซอฟต์แวร์ที่ได้กำหนดไว้หรือไม่ (Verification)
- กระบวนการตรวจสอบผลการพัฒนาซอฟต์แวร์ที่เกิดขึ้นจริงว่าตรงกับความคาดหวังของผู้ใช้หรือไม่ (Validation)
ระดับการทดสอบซอฟต์แวร์ สามารถแบ่งระดับการทดสอบได้ดังนี้
- การทดสอบโมดูลหรือทดสอบหน่วย (Module Testing หรือ Unit testing)
- การทดสอบภาพรวม (Integration Testing)
- การทดสอบฟังก์ชัน (Functional testing)
- การทดสอบประสิทธิภาพ (Performance Testing)
- การทดสอบการยอมรับ (Acceptance Testing)
- การทดสอบการติดตั้ง (Installation Testing)
การทดสอบหลังจากที่ผู้พัฒนาโปรแกรมได้เขียนคำสั่งโปรแกรมตามที่ได้รับมอบหมายเสร็จสิ้น ประกอบด้วย
- การทบทวนโปรแกรม (Program Review) เป็นกระบวนการทบทวนคำสั่งโปรแกรมและเอกสารที่โปรแกรมเมอร์พัฒนาขึ้น
- การพิสูจน์ความถูกต้องของโปรแกรม (Proving Programs Correct) เป็นการทดสอบข้อเท็จจริงทางโครงสร้างของโปรแกรม พิจารณาตรรกะการทำงานตามคำสั่งของโปรแกรม
- การทดสอบโปรแกรม (Testing Programs) เป็นการตรวจสอบความถูกต้องของโปรแกรมในมุมมองที่แต่กต่าง กลยุทธ์ของการทดสอบในลักษณะนี้เรียกว่ากล่องขาว (White box)
การทดสอบซอฟต์แวร์ โดยใช้ White Box และ Black Box
White Box Testing
การทดสอบแบบกล่องขาว หรือ กล่องแก้ว (Glass Box Testing) เป็นวิธีที่ใช้เส้นทางควบคุมการทำงานและโครงสร้าง เพื่อใช้ทดสอบสิ่งต่อไปนี้
- ทดสอบว่าเส้นทางในกระบวนการจะต้องสามารถทำงานได้อย่างถูกต้อง
- ทดสอบการตัดสินใจทางตรรกะทุกการตัดสินใจทั้งค่าที่เป็นจริงและค่าที่เป็นเท็จ
- ทดสอบการทำงานภายใน Loop ทุก Loop ตามจำนวนครั้งของการวนรอบ
- ทดสอบโครงสร้างข้อมูลภายในให้ถูกต้องก่อนที่จะส่งไปประมวลผลต่อยังโปรแกรมหรือหน่วยอื่น ๆ
การสร้าง Case Test
- สร้างผังงาน (Flow Chart) หรือ กราฟการไหลของงาน (Process Flow Graph) จากประโยคสั่งการในโปรแกรม
- กำหนดเส้นทางการทดสอบจากกราฟ
- กำหนดชุดข้อมูลทดสอบของแต่ละเส้นทางได้อย่างครบถ้วน
- ทดสอบทุกเส้นทางอย่างน้อย 1 ครั้ง
ไม่สนใจโครงสร้างของระบบ แต่สนใจสิ่งที่ระบบสามารถกระทำได้เท่านั้น เป็นลักษณะกล่องปิด (Closed Box) หรือ กล่องดำ (Black box)
Black Box Testing การทดสอบแบบกล่องดำ หรือ การทดสอบเชิงพฤติกรรม (Behavioral Testing) เนื่องจากเป็นการทดสอบผลการทำงานของซอฟต์แวร์ในแต่ละหน้าที่ ตามข้อกำหนดความต้องการเท่านั้น
- การทดสอบแบบกล่องดำใช้เพื่อดูว่าซอฟต์แวร์ทำงานได้ถูกต้องตามที่กำหนดไว้หรือไม่ โดยไม่คำนึงถึงคำสั่งภายใน
- การทดสอบแบบกล่องดำยังใช้ทดสอบประสิทธิภาพชองซอฟต์แวร์แบะเงื่อนไขของขอบเขตข้อมูลที่จะนำเข้าด้วย
การทดสอบแบบกล่องดำ ไม่ได้ถูกคิดค้นขึ้นมาเพื่อแทนที่การทดสอบแบบกล่องขาว แต่เป็นการทดสอบที่สนับสนุนซึ่งกันและกัน ทำให้การทำงานระดับหน่วยสมบูรณ์ขึ้น โดยการทดสอบแบบกล่องดำจะช่วยให้ทีมงานค้นพบข้อผิดพลาดต่างชนิดจากการทดสอบแบบกล่องขาว ดังนี้
- หน้าที่ที่ทำงานผิดพลาด
- หน้าที่ที่ขาดหายไป
- ความผิดพลาดของส่วนประสานกับระบบอื่น
- ความผิดพลาดของการตัดสินใจทำงานต่อ หรือหยุดการทำงาน
- ความผิดพลาดของการประมวลผลข้อมูล
การทดสอบการติดตั้ง เป็นการทดสอบระบบเพื่อให้แน่ใจว่าสามารถทำงานได้จริง โดยทดสอบการติดตั้งระบบในสภาพแวดล้อมจริงบนอุปกรณ์ต่าง ๆ รวมทั้งการจัดการแฟ้มข้อมูล การกำหนดการเข้าถึงฟังก์ชันและข้อมูล การติดต่อสื่อสารกับอุปกรณ์อื่นได้ โดยมุ่งไปที่ความสมบูรณ์ ของการติดตั้งระบบและการตรวจสอบ คุณลักษณะที่เป็นฟังก์ชัน (Functions Requirement) และไม่เป็นฟังก์ชัน (Non Function Requirement) ที่ส่งผลต่อสถานที่ติดตั้ง
ระดับการทดสอบซอฟต์แวร์ (Level Software Testing) คือ การจัดขั้นตอนการทดสอบของซอฟต์แวร์ โดยจะรวมวิธีการทดสอบระบบโดยจะเเบ่งเป็น 6 ระดับได้แก่ การทดสอบโมดูล การทดสอบภาพรวม การทดสอบฟังก์ชัน การทดสอบประสิทธิภาพ การทดสอบการยอมรับ และการทดสอบการติดตั้งระบบ
ระดับการทดสอบซอฟต์แวร์ สามารถแบ่งระดับการทดสอบได้ดังนี้
- การทดสอบโมดูลหรือทดสอบหน่วย (Module Testing หรือ Unit testing)
- การทดสอบภาพรวม (Integration Testing)
- การทดสอบฟังก์ชัน (Functional testing)
- การทดสอบประสิทธิภาพ (Performance Testing)
- การทดสอบการยอมรับ (Acceptance Testing)
- การทดสอบการติดตั้ง (Installation Testing)
การทดสอบโมดูลหรือทดสอบหน่วย (Module Testing หรือ Unit Testing)
เป็นการทดสอบหลังจากที่ผู้พัฒนาโปรแกรมได้เขียนคำสั่งโปรแกรมตามที่ได้รับมอบหมายเสร็จสิ้น ประกอบด้วย
- การทบทวนโปรแกรม (Program Review) เป็นกระบวนการทบทวนคำสั่งโปรแกรมและเอกสารที่โปรแกรมเมอร์พัฒนาขึ้น
- การพิสูจน์ความถูกต้องของโปรแกรม (Proving Programs Correct) เป็นการทดสอบข้อเท็จจริงทางโครงสร้างของโปรแกรม พิจารณาตรรกะการทำงานตามคำสั่งของโปรแกรม
- การทดสอบโปรแกรม (Testing Programs) เป็นการตรวจสอบความถูกต้องของโปรแกรมในมุมมองที่แต่กต่าง กลยุทธ์ของการทดสอบในลักษณะนี้เรียกว่ากล่องขาว (White Box)
การทดสอบรวม (Integration Testing) เป็นการทดสอบการทำงานของโมดูลโปรแรกมทั้งหมด โดยนำโมดูลทั้งหมดมาทดสอบรวมกัน ประกอบด้วย
- วิธีการจากล่างขึ้นบน (Bottom - up Approach) โมดูลในระดับล่างสุดถูกทดสอบก่อนต่อจากนั้นเรียกโมดูลในลำดับชั้นที่อยู่ก่อนนำมาทดสอบรวมกัน
- วิธีจากบนลงล่าง (Top - down Approach) โมดูลระดับชั้นบนสุดซึ่งจะทดสอบก่อนจากนั้นโมดูลในลำดับชั้นถัดมาจะถูกเรียกเพื่อรวมและทดสอบเป็นหน่วยใหญ่ขึ้น
- วิธีการบิก - แบง (Big - Bang Approach) นำทุกโมดูลในระบบทั้งหมดทดสอบแยกออกจากกัน ต่อจากนั้นจึงนำโมดูลทั้งหมดมารวมกันเพื่อทดสอบรวม
การทดสอบฟังก์ชัน (Function Testing) เป็นการทดสอบมุ่งเน้นไปที่การทำงานตามที่ลูกค้าต้องการนโดยตรวจสอบจากเอกสารระบุความต้องการ
การทดสอบประสิทธิภาพ (Performance Testing) เป็นการเปรียบเทียบโมดูลที่ผ่านการทดสอบรวม (Integrated Module) กับความต้องการที่ไม่เป็นฟังก์ชัน (Non Function Requirement) โดยการทดสอบสามารถกระทำในสภาพแวดล้อมผู้ใช้งานจริง ประกอบด้วย
- การทดสอบความตึงเครียด (Stress Test) เป็นการทดสอบความสามารถของระบบเมื่อเกิดความตึงเครียดในช่วงเวลาสั้น ๆ
- การทดสอบปริมาณ (Volume Test) เป็นการทดสอบปริมาณของข้อมูลที่มากที่สุดที่ระบบสามารถจัดการได้
- การทดสอบความเข้ากันได้ (Compatibility Test) เป็นการทดสอบที่จำเป็นสำหรับระบบที่มีการปฏิสัมพันธ์กับระบบอื่น
- การทดสอบความปลอดภัย (Security Test) เป็นการทดสอบความปลอดภัยของระบบ
- การทดสอบระยะเวลา (Timing Test) เป็นการประเมินผลเวลาในการประมวลผลการทำงานและตอบสนองต่อผู้ใช้งาน
- การทดสอบการกู้คืน (Recovery Test) เป็นการทดสอบการตอบสนองของระบบกรณีเกิดข้อผิดพลาด การสูญหายของข้อมูล อุปกรณ์ เพื่อให้เห็นว่าระบบสามารถกูคืนได้อย่างถูกต้อง
การทดสอบการยอมรับ (Acceptance Testing) เป็นการเปรียบเทียบประสิทธิภาพของระบบกับความคาดหวังของลูกค้า โดยตรวจสอบจากเอกสารกำหนดความต้องการ (Requirement Definition Document) ประกอบด้วย
- ทดสอบเกณฑ์มาตรฐาน (Benchmark Test) ลูกค้าจะเตรียม Test Case ซึ่งแทนการปฏิบัติงานของระบบจริง ๆ ลูกค้าจะทดสอบประสิทธิภาพของระบบในแต่ละกรณีทดสอบ
- ทดสอบแบบขนาน (Parallel Test) ในกรณีที่พัฒนาระบบใหม่แทนที่ระบบปัจจุบันหรือระบบใหม่เป้นส่วนหนึ่งของระยะของการพัฒนา (Phase Development) การทดสอบแบบขนานเป็นวิธีหนึ่งที่เหมาะสมเพราะเป็นวิธีการทดสอบที่ทำให้ผู้ใช้คุ้นเคยกับระบบใหม่ก่อน
- ทดสอบนำร่อง (Pilot Test) เป็นการทดสอบบนพื้นฐานของการทดสอง โดยผู้ใช้ทำการทดสอบฟังก์ชันทั้งหมดที่ต้องทำงานเป็นประจำทุก ๆ วัน เหมาะสำหรับระบบที่มีปรับปรุงหรือแก้ไขการทำงานของระบบเดิม อาจแบ่งการทดสอบเป็นรอบ ดังนี้ การทดสอบรอบแรก (Alpha Test) และการทดสอบรอบสอง (Beta Test)
- การทดสอบรอบแรก (Alpha Test) การนำเอาโปรแกรมไปให้ผู้ใช้ทดลองใช้โดยข้อมูลสมมุติ เพื่อให้ผู้ใช้ตรวจสอบเบื้องต้น
- การทดสอบรอบสอง (Beta Test) การนำเอาโปรแกรมไปให้ผู้ใช้ทดลองใช้เป็นครั้งที่สอง โดยใช้ข้อมูลจริงภายใต้สถานการณ์จริงในการทดสอบ
การทดสอบการติดตั้ง (Installation Testing) เป็นการทดสอบระบบเพื่อให้แน่ใจว่าสามารถทำงานได้จริง โดยทดสอบการติดตั้งระบบในสภาพแวดล้อมจริงบนอุปกรณ์ต่าง ๆ รวมทั้งการจัดการแฟ้มข้อมูล การกำหนดการเข้าถึงฟังก์ชันและข้อมูล การติดต่อสื่อสารกับอุปกรณ์อื่นได้ โดยมุ่งไปที่ความสมบูรณ์ (Completeness) ของการติดตั้งระบบและการตรวจสอบ (Verification) คุณลักษณะที่เป็นฟังก์ชัน (Function Requirement) และไม่เป็นฟังก์ชัน (Non Function Requirement) ที่ส่งผลต่อสถานที่ติดตั้ง
ระดับการทดสอบโปรแกรม เป็นการทดสอบระบบเพื่อให้เเน่ใจว่าระบบนั้นสามารถนำไปใช้ได้จริง โดยการทดสอบการติดตั้งสภาพเเวดล้อมจริงบนอุปกรณ์ต่าง ๆ รวมทั้งการจัดการแฟ้มข้อมูล การกำหนดการเข้าถึงของฟังก์ชัน เพื่อให้ระบบมีความพร้อมในการใช้งาน
Type of Software Testing มีอะไรบ้าง
Six Types of Testing. มีลักษณะการทดสอบของระบบหลายๆ แบบ ซึ่งสามารถนํามาใชกับระบบ Software System ขนาดใหญได โดยมี6 แบบหลักๆ ดังนี้ ➢ Unit Testing ➢ Integration Testing ➢ Function and System Testing ➢ Acceptance Testing ➢ Regression Testing ➢ Beta Testing.
งาน Software Tester ต้องมี Skill อะไรบ้าง
ทักษะที่ต้องมีถ้าอยากเป็น Software Tester - มีความรู้เรื่องเทคโนโลยี รู้จักวงจรของการเทสระบบซอฟต์แวร์ (Testing the Software Life Cycle) - มีความรู้ด้านสถิติ และสามารถอ่านสถิติได้อย่างแม่นยำ - รู้จักการจัดการและขั้นตอนพื้นฐานเพื่อใช้ในการเทส - มีความรู้เรื่อง Tool ต่าง ๆ ที่จะสามารถเอามาใช้เทสระบบได้
กระบวนการทดสอบระบบมีกี่ขั้นตอน อะไรบ้าง
- ก าหนดขั้นตอนในการทดสอบ - จัดเตรียมกรณีทดสอบและข้อมูลทดสอบ - เตรียมหน่วยย่อยของระบบที่ต้องการทดสอบ - ท าการทดสอบจริง - จัดท าเอกสารรายงานการทดสอบระบบ - ท าการทดสอบผลจากการแก้ไข
การทดสอบโปรแกรม (Testing) หมายถึงอะไร
การทดสอบซอฟต์แวร์(software testing) เป็น ขั้นตอนหลักของการพัฒนาซอฟต์แวร์ เป็นกระบวนการ ค้นหาข้อผิดพลาดที่มีอยู่ในระบบ ช่วยให้ซอฟต์แวร์ที่ พัฒนาขึ้นมีความถูกต้อง สมบูรณ์ ปลอดภัย และมี ประสิทธิภาพและคุณภาพที่ดี ผู้ที่ท าการทดสอบเรียกว่า ทีมทดสอบ (test team) โดยทั่วไปประกอบไปด้วย นัก ทดสอบมืออาชีพ นักวิเคราะห์ นักออกแบบ ...