ข้ามไปเนื้อหา

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

จากวิกิพีเดีย สารานุกรมเสรี

การทดสอบซอฟต์แวร์ (อังกฤษ: 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 - เป็นการทดสอบการใช้งานซอฟต์แวร์โดยผู้เชียวชาญส่วนติดต่อผู้ใช้ ว่าใช้งานได้ง่าย เข้าใจได้ง่าย หรือไม่

ขั้นตอนการทดสอบ

[แก้]

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

  1. วิเคราะห์ความต้องการ
  2. จัดทำแผนงานการทดสอบ
  3. จัดทำแนวทางการทดสอบ
  4. ทดสอบจริง
  5. รายงานผลการทดสอบ
  6. ทดสอบผลจากการแก้ไข

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

[แก้]

ขอบเขต

[แก้]

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

ข้อบกพร่อง และความผิดพลาด

[แก้]

ความสามารถเข้ากันได้

[แก้]

การรวมข้อมูล และเงื่อนไขก่อนการทดสอบ

[แก้]

เปรียบเทียวบการทดสอบแบบคงที่ และแปรผัน

[แก้]

การตรวจสอบและยืนยันความถูกต้องของระบบ

[แก้]

ทีมการทดสอบระบบ

[แก้]
  1. ↑ "8 Functional Testing Types Explained With Examples". Insights on Latest Technologies - Simform Blog (ภาษาอังกฤษแบบอเมริกัน). 2019-02-27.