การทดสอบซอฟต์แวร์
บทความนี้ต้องการการจัดหน้า จัดหมวดหมู่ ใส่ลิงก์ภายใน หรือเก็บกวาดเนื้อหา ให้มีคุณภาพดีขึ้น คุณสามารถปรับปรุงแก้ไขบทความนี้ได้ และนำป้ายออก พิจารณาใช้ป้ายข้อความอื่นเพื่อชี้ชัดข้อบกพร่อง |
มีการแนะนำว่า บทความนี้ทั้งหมดหรือบางส่วนควรย้ายไปโครงการวิกิตำรา (อภิปราย) เนื่องจากการจัดรูปแบบเนื้อหาไม่ตรงตามนโยบายของวิกิพีเดียที่เป็นสารานุกรม และอาจเข้ากับโครงการวิกิตำรามากกว่า |
บทความนี้อาจต้องปรับปรุงให้มีมุมมองที่เป็นกลาง เนื่องจากนำเสนอมุมมองเพียงด้านเดียว ดูหน้าอภิปรายประกอบ โปรดอย่านำป้ายออกจนกว่าจะมีข้อสรุป |
| เป็นส่วนหนึ่งของเนื้อหา |
| การพัฒนาซอฟต์แวร์ |
|---|
การทดสอบซอฟต์แวร์ (อังกฤษ: software testing) เป็นกระบวนการเพื่อช่วยให้ซอฟต์แวร์ที่พัฒนามี ความถูกต้อง, ความสมบูรณ์, ปลอดภัย และมีคุณภาพที่ดี
การทดสอบ เป็นกระบวนการทดลองใช้ซอฟต์แวร์อย่างมีแนวทาง โดยใช้ความรู้ทางด้านเทคนิค เพื่อให้สามารถระบุหรือค้นหาความผิดพลาด (error) ของซอฟต์แวร์ที่อาจจะซ่อนอยู่ให้ปรากฏออกมา และสามารถระบุถึงแนวทางการเกิดปัญหา พร้อมสมมุติฐานของความผิดพลาดที่เกิดขึ้นได้
การทดสอบซอฟต์แวร์ คือการตรวจสอบหาความจริง เชิงประจักษ์ ที่ต้องทำตามข้อกำหนดของผู้รับผลประโยชน์ ในเรื่องของคุณภาพของผลิตภัณฑ์หรือบริการภายใต้การทดสอบ กับสารสนเทศในด้านคุณภาพ ของผลิตภัณฑ์ หรือการบริการบนการทดสอบ กับสิ่งที่กำหนดไว้ในบริบทให้ดำเนินการตามแผนที่กำหนดไว้ การทดสอบซอฟต์แวร์ กำหนดตรมวัตถุประสงค์แสดงการไม่ขึ้นต่อกันของซอฟต์แวร์ถึงการอนุญาต ทางธุรกิจคือการตระหนัก และเข้าใจการจัดทำความเสี่ยงของซอฟต์แวร์ การรวบรวมเทคนิคการทดสอบ แต่ไม่มีขอบเขต กระบวนการของการดำเนินการโปรแกรมหรือ โปรแกรมประยุกต์ กับการตั้งใจจากการค้นพบข้อบกพร่องของซอฟต์แวร์ สามารถกำหนดกระบวนการ จากการตรวจสอบว่าระบบสามารถทำงานตามความต้องการของผู้ใช้หรือไม่ หรือ การตรวจสอบว่าการพัฒนาสร้างระบบทำอย่างถูกต้องหรือไม่ โปรแกรมซอฟต์แวร์/โปรแกรมประยุกต์/ผลิตภัณฑ์ จัดประชุมทางธุรกิจและ เทคนิคและความต้องการเพื่อหาแนวทาง ในการออกแบบและการพัฒนา นั่นเป็นสิ่งที่คาดหวังและสามารถออกแบบเหมือนคุณลักษณะ การทดสอบซอฟต์แวร์ ขึ้นอยู่กับวิธีการทดสอบของผู้จ้าง สามารถออกแบบหลาย ๆ เวลาในการพัฒนากระบวนการ อย่างไรก็ตาม ผลกระทบในการทดสอบมากที่สุด คือ ผู้ว่าจ้าง หลังจากมี การกำหนดความต้องการ และกระบวนการเขียนโค้ดอย่างสมบูรณ์
ภาพรวม
[แก้]การทดสอบไม่สามารถขจัดข้อบกพร่องภายในซอฟต์แวร์ได้ทั้งหมดอย่างสมบูรณ์ ต้องจัดให้มี การประเมินผล หรือการเปรียบเทียบสถานะและ พฤติกรรมของผลิตภัณฑ์ที่เกี่ยวข้องกับทฤษฎีโอราเคล หรือกลไก โดยบางชนิดที่สามารถยอมรับปัญหา โอราเคลสามารถรวมอยู่ (แต่ไม่มีข้อจำกัด) คุณสมบัติ, ข้อตกลง, ข้อเปรียบเทียบผลิตภัณฑ์ ส่วนของเวอร์ชันของผลิตภัณฑ์เดียวกัน, ข้อสรุปเรื่องการวางแผน หรือตามวัตถุประสงค์ที่คาดหวัง มาตรฐานที่คาดหวังจากผู้ใช้คนสุดท้ายหรือลูกค้า, เข้าใจประเด็น, สามารถปรับใช้กับกฎหมาย หรือกฎเกณฑ์อื่น ๆ ทุก ๆ ผลิตภัณฑ์ซอฟต์แวร์มีผู้เข้าร่วมประชุมเพื่อหาจุดมุ่งหมายร่วมกัน ตัวอย่างเช่น ประชุมร่วมสำหรับ ระบบวิดีโอเกม ความสมบูรณ์ต่างจาก ระบบธุรกรรมผ่านธนาคาร เพราะฉะนั้น เมื่อการพัฒนาองค์กรหรือมิฉะนั้น การลงทุนผลิตภัณฑ์ซอฟต์แวร์ สามารถประเมินมูลค่า หรือผู้ใช้สามารถยอมรับได้ในผลิตภัณฑ์ที่ซอฟต์แวร์ กลุ่มผู้ฟังที่เป็นเป้าหมาย, ผู้ซื้อ และผู้มีส่วนร่วมอื่น ๆ การทดสอบซอฟต์แวร์ คือกระบวนการ การพยายามทำการประเมินราคา การจัดการศึกษาโดยหน่วยงานด้านมาตรฐาน และกฎระเบียบทางเทคนิคของสหรัฐฯ ในปี 2002 รายงานว่า ซอฟต์แวร์การหาข้อบกพร่องมีต้นทุน ในสหรัฐฯ สามารถทำรายได้ถึง 59.5 ล้าน ดอลลาร์สหรัฐ ในทุก ๆ ปี มากกว่าอันดับสามของต้นทุนถ้าสามารถหลีกเลี่ยง ถ้าทำการทดสอบซอฟต์แวร์
ประวัติ
[แก้]ในการแยกของการหาข้อบกพร่องจากการทดสอบ ในขั้นต้น แนะนำโดย Glenford J. Myers ในปี 1979 ถึงแม้นว่าเป็นการตัดสินใจมีการทดสอบน่าเสียหาย (การทดสอบเป็นหนึ่งในการค้นหาข้อบกพร่อง) มีภาพประกอบการออกแบบจากสมาคมวิศวกรรมซอฟต์แวร์ เป็นพื้นฐานการพัฒนากิจกรรม เช่น การหาข้อบกพร่อง, จากการทวนสอบ, ของการตรวจสอบความถูกต้องตามที่ออกแบบไว้ Dave Gelperin และ William C. Hetzel กำหนดใน ปี 1988 และเป้าหมายในการทดสอบซอฟต์แวร์ ตามลำดับต่อไปนี้
- ก่อน 1956 – การตรวจสอบข้อบกพร่อง
- 1957 - 1978 – การสาธิต
- 1979 - 1982 – การทำลาย
- 1983 - 1987 – การประเมินผล
- 1988 - 2000 – การป้องกัน
แนวทางการทดสอบ
[แก้]แนวทางการทดสอบ มีหลายวิธีการ แนวทางหนึ่งที่สามารถทำได้ดีคือ กระบวนการตั้งคำถามต่อซอฟต์แวร์ เพื่อดำเนินการทดสอบและประเมินตัวซอฟต์แวร์ ว่าสามารถตอบคำถามที่ตั้งไว้ได้อย่างถูกต้องหรือไม่
- คำถาม มักหมายถึง เหตุการณ์หรือวิธีการที่จะกระทำกับตัวซอฟต์แวร์
- คำตอบ มักหมายถึง ผลลัพธ์ที่พฤติกรรมของซอฟต์แวร์ต่อคำถามที่เกิดขึ้น
คุณภาพของซอฟต์แวร์ที่สามารถทดสอบได้ ได้แก่
- reliability - ความน่าเชื่อถือ
- efficiency - ประสิทธิภาพ
- portability - ความสามารถในการเคลื่อนย้าย
- maintainability - ความสามารถในการดูแลรักษา
- compatibility - ความสามารถเข้ากันได้
- usability - สามารถใช้ได้ง่ายเข้าใจได้ง่าย
รูปแบบการทดสอบ
[แก้]- Unit test - เป็นการทดสอบในระดับ function call เพื่อเป็นการยืนยันการทำงานระดับย่อยที่สุดว่าทำงานได้ถูกต้อง เป็นการทดสอบโดยนักเขียนโปรแกรมผู้เขียนโค๊ด[1]
- Integration test - เป็นการทดสอบการเชื่อมต่อส่วนย่อย ๆ (Component หรือ Module) ที่นำมาประกอบกันให้ได้ซอฟต์แวร์ที่สมบูรณ์
- System test - เป็นการทดสอบการเชื่อมต่อหรือติดต่อสื่อสารกันระหว่างซอฟต์แวร์ หรือระบบอื่นๆ
- Acceptant test - เป็นการทดสอบโดยผู้ใช้ (End user) หรือโดยลูกค้า เพื่อดูว่าซอฟต์แวร์ทำงานถูกต้องตามต้องการหรือไม่
- Usability test - เป็นการทดสอบการใช้งานซอฟต์แวร์โดยผู้เชียวชาญส่วนติดต่อผู้ใช้ ว่าใช้งานได้ง่าย เข้าใจได้ง่าย หรือไม่
ขั้นตอนการทดสอบ
[แก้]ขั้นตอนการทดสอบซอฟต์แวร์นั้นส่วนใหญ่แล้วขึ้นอยู่กับระเบียบวิธีการทำงานของ แต่ละองค์กรหรือทีมงานในแต่ละแห่ง ไม่ได้มีรูปแบบตายตัวแน่นอน แต่สามารถระบุอย่างคร่าว ๆ ได้ดังนี้
- วิเคราะห์ความต้องการ
- จัดทำแผนงานการทดสอบ
- จัดทำแนวทางการทดสอบ
- ทดสอบจริง
- รายงานผลการทดสอบ
- ทดสอบผลจากการแก้ไข
การทดสอบซอฟต์แวร์
[แก้]ขอบเขต
[แก้]ในขั้นแรก วัตถุประสงค์สำหรับการทดสอบเป็นการตรวจหาข้อผิดพลาดซอฟต์แวร์ ดังนั้น ความสามารถตรวจสอบที่ไม่ครอบคลุม และแก้ไขให้ถูกต้อง การดำเนินตามที่ไม่ชัดเจน การทดสอบสามารถสร้างฟังชั่นผลิตภัณฑ์ อย่างเหมาะสมภายใต้เงื่อนไขทั้งหมด แต่สามารถสร้างฟังก์ชันที่ไม่สามารถภายใต้ข้อกำหนดเฉพาะขอบเขตการทดสอบซอฟต์แวร์บ่อยครั้งที่การตรวจสอบของโค้ดและการดำเนินการของโค้ดที่แตกต่างกันของสิ่งแวดล้อมและเงื่อนไขและการตรวจสอบในแง่ของโค้ด ทำในสิ่งที่คาดการณ์ไว้ว่าต้องทำ และทำอะไรที่ต้องการทำ ในปัจจุบันวัฒนธรรมของการพัฒนาซอฟต์แวร์ องค์กรจะทำการทดสอบโดยแยกออกจากทีมพัฒนาระบบ หลาย ๆ หน้าที่ของสมาชิกในทีมการทำการทดสอบ แหล่งสารสนเทศจากการทดสอบซอฟต์แวร์สามารถแก้ไขให้ถูกต้องโดยกระบวนการพัฒนาซอฟต์แวร์
ข้อบกพร่อง และความผิดพลาด
[แก้]ความสามารถเข้ากันได้
[แก้]การรวมข้อมูล และเงื่อนไขก่อนการทดสอบ
[แก้]เปรียบเทียวบการทดสอบแบบคงที่ และแปรผัน
[แก้]การตรวจสอบและยืนยันความถูกต้องของระบบ
[แก้]ทีมการทดสอบระบบ
[แก้]ส่วนนี้รอเพิ่มเติมข้อมูล คุณสามารถช่วยเพิ่มข้อมูลส่วนนี้ได้ |
- ↑ "8 Functional Testing Types Explained With Examples". Insights on Latest Technologies - Simform Blog (ภาษาอังกฤษแบบอเมริกัน). 2019-02-27.