การทดสอบซอฟต์แวร์

การทดสอบซอฟต์แวร์ () เป็นกระบวนการเพื่อช่วยให้ซอฟต์แวร์ที่พัฒนามี ความถูกต้อง, ความสมบูรณ์, ปลอดภัย, และมีคุณภาพที่ดี

การทดสอบ เป็นกระบวนการทดลองใช้ซอฟต์แวร์อย่างมีแนวทาง โดยใช้ความรู้ทางด้านเทคนิค เพื่อให้สามารถระบุหรือค้นหาความผิดพลาด(error)ของซอฟต์แวร์ที่อาจจะซ่อนอยู่ให้ปรากฏออกมา และสามารถระบุถึงแนวทางการเกิดปัญหา พร้อมสมมุติฐานของความผิดพลาดที่เกิดขึ้นได้

การทดสอบซอฟต์แวร์ คือการตรวจสอบหาความจริง เชิงประจักษ์ ที่ต้องทำตามข้อกำหนดของผู้รับผลประโยชน์ ในเรื่องของคุณภาพของผลิตภัณฑ์หรือบริการภายใต้การทดสอบ กับสารสนเทศในด้านคุณภาพ ของผลิตภัณฑ์ หรือการบริการบนการทดสอบ กับสิ่งที่กำหนดไว้ในบริบทให้ดำเนินการตามแผนที่กำหนดไว้ การทดสอบซอฟต์แวร์ กำหนดตรมวัตถุประสงค์แสดงการไม่ขึ้นต่อกันของซอฟต์แวร์ถึงการอนุญาต ทางธุรกิจคือการตระหนัก และเข้าใจการจัดทำความเสี่ยงของซอฟต์แวร์ การรวบรวมเทคนิคการทดสอบ แต่ไม่มีขอบเขต กระบวนการของการดำเนินการโปรแกรมหรือ โปรแกรมประยุกต์ กับการตั้งใจจากการค้นพบข้อบกพร่องของซอฟต์แวร์ สามารถกำหนดกระบวนการ จากการตรวจสอบว่าระบบสามารถทำงานตามความต้องการของผู้ใช้หรือไม่ หรือ การตรวจสอบว่าการพัฒนาสร้างระบบทำอย่างถูกต้องหรือไม่ โปรแกรมซอฟต์แวร์/โปรแกรมประยุกต์/ผลิตภัณฑ์ จัดประชุมทางธุรกิจและ เทคนิคและความต้องการเพื่อหาแนวทาง ในการออกแบบและการพัฒนา นั่นเป็นสิ่งที่คาดหวังและสามารถออกแบบเหมือนคุณลักษณะ
การทดสอบซอฟต์แวร์ ขึ้นอยู่กับวิธีการทดสอบของผู้จ้าง สามารถออกแบบหลายๆเวลาในการพัฒนากระบวนการ อย่างไรก็ตาม ผลกระทบในการทดสอบมากที่สุด คือ ผู้ว่าจ้าง หลังจากมี
การกำหนดความต้องการ และกระบวนการเขียนโค้ดอย่างสมบูรณ์

การทดสอบไม่สามารถขจัดข้อบกพร่องภายในซอฟต์แวร์ได้ทั้งหมดอย่างสมบูรณ์ ต้องจัดให้มี การประเมินผล หรือการเปรียบเทียบสถานะและ พฤติกรรมของผลิตภัณฑ์ที่เกี่ยวข้องกับทฤษฎีโอราเคล หรือกลไก โดยบางชนิดที่สามารถยอมรับปัญหา โอราเคลสามารถรวมอยู่(แต่ไม่มีข้อจำกัด) คุณสมบัติ, ข้อตกลง, ข้อเปรียบเทียบผลิตภัณฑ์ ส่วนของเวอร์ชันของผลิตภัณฑ์เดียวกัน, ข้อสรุปเรื่องการวางแผน หรือตามวัตถุประสงค์ที่คาดหวัง มาตรฐานที่คาดหวังจากผู้ใช้คนสุดท้ายหรือลูกค้า, เข้าใจประเด็น, สามารถปรับใช้กับกฎหมาย, หรือกฎเกณฑ์อื่นๆ ทุกๆ ผลิตภัณฑ์ซอฟต์แวร์มีผู้เข้าร่วมประชุมเพื่อหาจุดมุ่งหมายร่วมกัน ตัวอย่างเช่น ประชุมร่วมสำหรับ ระบบวิดีโอเกม ความสมบูรณ์ต่างจาก ระบบธุรกรรมผ่านธนาคาร เพราะฉะนั้น เมื่อการพัฒนาองค์กรหรือมิฉะนั้น การลงทุนผลิตภัณฑ์ซอฟต์แวร์ สามารถประเมินมูลค่า หรือผู้ใช้สามารถยอมรับได้ในผลิตภัณฑ์ที่ซอฟต์แวร์ กลุ่มผู้ฟังที่เป็นเป้าหมาย, ผู้ซื้อ และผู้มีส่วนร่วมอื่นๆ การทดสอบซอฟต์แวร์ คือกระบวนการ การพยายามทำการประเมินราคา การจัดการศึกษาโดยหน่วยงานด้านมาตรฐาน และกฎระเบียบทางเทคนิคของสหรัฐฯ ในปี 2002 รายงานว่า ซอฟต์แวร์การหาข้อบกพร่องมีต้นทุน ในสหรัฐฯ สามารถทำรายได้ถึง 59.5 ล้าน ดอลลาร์สหรัฐ ในทุกๆปี มากกว่าอันดับสามของต้นทุนถ้าสามารถหลีกเลี่ยง ถ้าทำการทดสอบซอฟต์แวร์

ในการแยกของการหาข้อบกพร่องจากการทดสอบ ในขั้นต้น แนะนำโดย Glenford J. Myers ในปี 1979 ถึงแม้นว่าเป็นการตัดสินใจมีการทดสอบน่าเสียหาย (การทดสอบเป็นหนึ่งในการค้นหาข้อบกพร่อง) มีภาพประกอบการออกแบบจากสมาคมวิศวกรรมซอฟต์แวร์ เป็นพื้นฐานการพัฒนากิจกรรม เช่น การหาข้อบกพร่อง, จากการทวนสอบ, ของการตรวจสอบความถูกต้องตามที่ออกแบบไว้ Dave Gelperin และ William C. Hetzel กำหนดใน ปี 1988 และเป้าหมายในการทดสอบซอฟต์แวร์ ตามลำดับต่อไปนี้

แนวทางการทดสอบ มีหลายวิธีการ แนวทางหนึ่งที่สามารถทำได้ดีคือ กระบวนการตั้งคำถามต่อซอฟต์แวร์ เพื่อดำเนินการทดสอบและประเมินตัวซอฟต์แวร์ ว่าสามารถตอบคำถามที่ตั้งไว้ได้อย่างถูกต้องหรือไม่

คุณภาพของซอฟต์แวร์ที่สามารถทดสอบได้ ได้แก่ขั้นตอนการทดสอบซอฟต์แวร์นั้นส่วนใหญ่แล้วขึ้นอยู่กับระเบียบวิธีการทำงานของ แต่ละองค์กรหรือทีมงานในแต่ละแห่ง ไม่ได้มีรูปแบบตายตัวแน่นอน แต่สามารถระบุอย่างคร่าวๆได้ดังนี้

ในขั้นแรก วัตถุประสงค์สำหรับการทดสอบเป็นการตรวจหาข้อผิดพลาดซอฟต์แวร์ ดังนั้น ความสามารถตรวจสอบที่ไม่ครอบคลุม และแก้ไขให้ถูกต้อง การดำเนินตามที่ไม่ชัดเจน การทดสอบสามารถสร้างฟังชั่นผลิตภัณฑ์ อย่างเหมาะสมภายใต้เงื่อนไขทั้งหมด แต่สามารถสร้างฟังก์ชันที่ไม่สามารถภายใต้ข้อกำหนดเฉพาะขอบเขตการทดสอบซอฟต์แวร์บ่อยครั้งที่การตรวจสอบของโค้ดและการดำเนินการของโค้ดที่แตกต่างกันของสิ่งแวดล้อมและเงื่อนไขและการตรวจสอบในแง่ของโค้ด ทำในสิ่งที่คาดการณ์ไว้ว่าต้องทำ และทำอะไรที่ต้องการทำ ในปัจจุบันวัฒนธรรมของการพัฒนาซอฟต์แวร์ องค์กรจะทำการทดสอบโดยแยกออกจากทีมพัฒนาระบบ หลายๆหน้าที่ของสมาชิกในทีมการทำการทดสอบ แหล่งสารสนเทศจากการทดสอบซอฟต์แวร์สามารถแก้ไขให้ถูกต้องโดยกระบวนการพัฒนาซอฟต์แวร์