คุณเคยสงสัยไหมว่าเกิดอะไรขึ้นเบื้องหลังก่อนที่ซอฟต์แวร์จะเผยแพร่สู่สาธารณะ? โปรแกรมเมอร์ตระหนักดีถึงจำนวนงานที่จะเข้าสู่การสร้างโปรแกรม เวลาที่ใช้พยายามรีดทุกข้อผิดพลาดออกมากมายที่ดึงเส้นผมออก และจนกว่าผลิตภัณฑ์จะเป็นที่พอใจของผู้มีส่วนได้ส่วนเสียทั้งหมดจะไม่สามารถใช้งานในเชิงพาณิชย์ได้
บริษัท ซอฟต์แวร์ขนาดใหญ่เช่น Google ประสบความสำเร็จแม้จะมีข้อบกพร่องที่มีความสำคัญต่ำในซอฟต์แวร์ แต่ บริษัท ขนาดเล็กและ บริษัท ที่เพิ่งเริ่มต้นไม่ได้มีความหรูหราดังกล่าว
ลูกค้าคาดหวังให้ผลิตภัณฑ์ทำในสิ่งที่พวกเขาอ้างสิทธิ์ในหน้าการขายหรือในเอกสารประกอบ มีหลายทางเลือกออกมีพวกเขาจะไม่คิดสองครั้งเกี่ยวกับการกระโดดเรือถ้าผลิตภัณฑ์เสียเวลาและเงินของพวกเขา ดังนั้นซอฟท์แวร์จึงได้รับการทดสอบอย่างเข้มงวดก่อนปล่อยเพื่อให้:
-
เน้นความแตกต่างระหว่างแนวคิดดั้งเดิมกับผลลัพธ์สุดท้าย
ตรวจสอบว่าซอฟต์แวร์ทำงานตามแบบที่นักวางแผนกำหนด -
ตรวจสอบผลิตภัณฑ์สิ้นสุด - ผลิตภัณฑ์ต้องเป็นไปตามข้อกำหนดของลูกค้า
-
ประเมินคุณลักษณะและคุณภาพ
-
การทดสอบเป็นไปตามแบบพิมพ์เขียวที่เข้มงวด การเพิ่มประสิทธิภาพการใช้ทรัพยากรที่มีคุณค่า ได้แก่ ทักษะเวลาและเงินในขณะเดียวกันก็ให้ข้อมูลที่จำเป็นแก่ผู้มีส่วนได้ส่วนเสียเพื่อนำเสนอผลิตภัณฑ์ต่อไป เป้าหมายคือการอำนวยความสะดวกประสบการณ์ของผู้ใช้ที่ดีผ่านโปรแกรมการประกันคุณภาพที่แข็งแกร่ง ด้วยสัดส่วนการลงทุนที่สูงดังนั้นผู้จัดการฝ่ายบริหารคุณภาพจึงเป็นผู้ที่มีรายได้สูงที่สุดในด้านเทคโนโลยี การทดสอบมักทำตามขั้นตอนต่อไปนี้:
-
การทดสอบจะเริ่มต้นและผลลัพธ์จะได้รับการวิเคราะห์
-
ข้อบกพร่องใด ๆ ได้รับการแก้ไขและซอฟต์แวร์จะผ่านการทดสอบการถดถอย - ระบบตรวจสอบโปรแกรมยังคงทำงานหลังจากการแก้ไข
-
รายงานการปิดการทดสอบจะอธิบายกระบวนการทั้งหมดและผลลัพธ์
-
วิธีการทดสอบซอฟต์แวร์
ต่อไปนี้เป็นวิธีการต่างๆที่ใช้ในการตัดสินพฤติกรรมและประสิทธิภาพของผลิตภัณฑ์
กล่องดำและการทดสอบกล่องสีขาวเป็นสองวิธีหลัก
การทดสอบกล่องดำ
- - หรือที่เรียกว่าการทดสอบตามฟังก์ชันหรือตามข้อกำหนดโดยวิธีนี้จะเน้นที่เอาท์พุท ผู้ทดสอบไม่ได้เกี่ยวข้องกับกลไกภายใน พวกเขาเพียงตรวจสอบซอฟต์แวร์ไม่สิ่งที่ควร. ความรู้เกี่ยวกับการเขียนโค้ดไม่จำเป็นและผู้ทดสอบจะทำงานในระดับอินเตอร์เฟซผู้ใช้ การทดสอบกล่องสีขาว
- - วิธีนี้ใช้การเข้ารหัสความรู้เป็นส่วนหนึ่งของขั้นตอนการทดสอบ เมื่อผลิตภัณฑ์ล้มเหลวผู้ทดสอบจะเข้าไปลึกเข้าไปในโค้ดตามที่จำเป็นเพื่อหาสาเหตุ นักพัฒนาซอฟต์แวร์ทำแบบนี้เพราะพวกเขากำหนดว่าผลิตภัณฑ์ควรจะทำงานอย่างไร การทดสอบโครงสร้างและกล่องแก้วเป็นชื่ออื่นสำหรับวิธีนี้ การทดสอบแบบสถิต
- - เครื่องทดสอบจะตรวจสอบโค้ดและเอกสารของซอฟต์แวร์ แต่ไม่ใช้งานโปรแกรมการทดสอบแบบคงที่เริ่มต้นในช่วงต้นของการพัฒนาผลิตภัณฑ์ระหว่างกระบวนการตรวจสอบ การทดสอบแบบไดนามิก
- - ซอฟต์แวร์ทำงานด้วยอินพุตต่างๆและผู้ทดสอบจะเปรียบเทียบผลลัพธ์กับลักษณะการทำงานที่คาดไว้ด้วยวิธีนี้ การทดสอบ GUI
- - การทดสอบลักษณะ GUI นี้ - การจัดรูปแบบข้อความกล่องข้อความปุ่มรายการเค้าโครงสีแบบอักษรขนาดตัวอักษรและอื่น ๆ การทดสอบ GUI เป็นเรื่องที่ต้องใช้เวลามากและ บริษัท ที่เป็นบุคคลที่สามมักใช้งานแทนนักพัฒนาซอฟต์แวร์ ระดับการทดสอบ
จำเป็นต้องระบุจุดอ่อนและซ้อนทับกันในแต่ละเฟสของวงจรชีวิตการพัฒนาซอฟต์แวร์
การทดสอบหน่วย
- - นักพัฒนาซอฟต์แวร์ทดสอบส่วนพื้นฐานของโค้ดเช่นคลาสอินเทอร์เฟซและฟังก์ชัน / ขั้นตอน พวกเขารู้ว่าโค้ดของพวกเขาควรตอบสนองอย่างไรและสามารถปรับเปลี่ยนได้ขึ้นอยู่กับผลลัพธ์ การทดสอบส่วนประกอบ
- - ชื่ออื่น ๆ ได้แก่ การทดสอบโมดูลหรือโปรแกรม คล้ายกับการทดสอบหน่วย แต่มีการรวมระบบในระดับที่สูงขึ้น โมดูลของซอฟต์แวร์จะได้รับการทดสอบเพื่อหาข้อบกพร่องเพื่อตรวจสอบความถูกต้องของแต่ละฟังก์ชัน การทดสอบการรวมระบบ
- - ระบุข้อผิดพลาดเมื่อติดตั้งโมดูล การทดสอบการรวมระบบต่างๆกันคือด้านล่างขึ้นด้านบนและการทำงานที่เพิ่มขึ้น การทดสอบระบบ
- - ส่วนประกอบของโครงการได้รับการทดสอบโดยรวมในสภาพแวดล้อมที่แตกต่างกันด้วยวิธีนี้ มันอยู่ภายใต้วิธีการกล่องดำและเป็นหนึ่งในการทดสอบขั้นสุดท้ายในกระบวนการ จะกำหนดว่าระบบสามารถทำงานได้ตามความต้องการของธุรกิจและผู้ใช้หรือไม่ การทดสอบอัลฟ่า
- - พนักงานภายในทดสอบซอฟต์แวร์ที่ไซต์ของนักพัฒนาซอฟต์แวร์ในสภาพแวดล้อมจำลองหรือที่เกิดขึ้นจริง หลังจากนั้นนักพัฒนาจะแก้ไขข้อบกพร่องและปัญหาอื่น ๆ การทดสอบเบต้า
- - หรือที่เรียกว่าการทดสอบภาคสนามด้วยเหตุนี้ไคลเอ็นต์จะทดสอบผลิตภัณฑ์บนไซต์ของตนเองในสภาพที่แท้จริง ลูกค้าอาจเสนอกลุ่มผู้ใช้ปลายทางทดสอบซอฟต์แวร์ผ่านทางรุ่นก่อนวางจำหน่ายหรือรุ่นเบต้า ข้อเสนอแนะเกี่ยวกับการปรับปรุงที่เป็นไปได้จะถูกส่งไปยังนักพัฒนา การทดสอบการยอมรับ
- - นอกจากนี้ภายใต้ขอบเขตของการทดสอบกล่องดำไคลเอ็นต์จะทดสอบซอฟต์แวร์เพื่อดูว่านักพัฒนาซอฟต์แวร์ได้สร้างโปรแกรมตามข้อกำหนดที่ต้องการหรือไม่ ประเภททดสอบ
การทดสอบซอฟต์แวร์เหล่านี้มุ่งเน้นไปที่วัตถุประสงค์เฉพาะ
การทดสอบการติดตั้ง
- - วิศวกรทดสอบซอฟต์แวร์และผู้จัดการการกำหนดค่าดำเนินการทดสอบนี้เพื่อให้แน่ใจว่าผู้ใช้ปลายทางสามารถติดตั้งและเรียกใช้โปรแกรมได้ ครอบคลุมพื้นที่เช่นไฟล์การติดตั้งสถานที่ติดตั้งและสิทธิ์การดูแลระบบ การทดสอบการพัฒนา
- - ใช้กลยุทธ์การตรวจจับและป้องกันข้อบกพร่องหลายรูปแบบ ประกอบด้วยการวิเคราะห์โค้ดแบบคงที่การตรวจสอบความคิดเห็นแบบ peercode การตรวจสอบย้อนกลับและการวิเคราะห์เมตริก เป้าหมายคือเพื่อลดความเสี่ยงและประหยัดค่าใช้จ่าย การทดสอบความสามารถในการใช้งาน
- - ประสบการณ์การใช้งานของผู้ใช้จะได้รับความสนใจภายใต้การทดสอบนี้ วัดว่า GUI ได้รับการออกแบบและใช้งานง่ายเพียงใด การทดสอบจะตรวจสอบความถูกต้องและประสิทธิภาพของฟังก์ชันและการตอบสนองทางอารมณ์ของผู้เข้าร่วมการทดสอบ การทดสอบความรุนแรง
- - ระบุว่าซอฟต์แวร์มีค่าเวลาและค่าใช้จ่ายในการดำเนินการทดสอบต่อไปหรือไม่มีข้อบกพร่องและการทดสอบเชิงรุกมากเกินไป การทดสอบควัน
- - การทดสอบควันแสดงให้เห็นถึงความล้มเหลวขั้นพื้นฐานที่ร้ายแรงพอที่จะป้องกันการปลดปล่อย เมื่อดำเนินการในเวอร์ชันใหม่จะเรียกว่าการทดสอบยืนยันการสร้าง การทดสอบการถดถอย
- - เมื่อระบบผ่านการปรับเปลี่ยนการทดสอบการถดถอยจะตรวจสอบพฤติกรรมที่ไม่คาดคิด มันชี้ให้เห็นผลกระทบต่อโมดูลหรือส่วนประกอบ การทดสอบทำลาย
- - เครื่องทดสอบป้อนข้อมูลผิดปกติและตรวจสอบความสามารถของซอฟต์แวร์ในการจัดการข้อมูลที่ไม่คาดคิด ซึ่งแสดงให้เห็นว่านักพัฒนาซอฟต์แวร์มีความสามารถในการจัดการข้อผิดพลาดได้อย่างไร การทดสอบการกู้คืน
- - เมื่อฮาร์ดแวร์หรือฟังก์ชันอื่น ๆ ล้มเหลวการทดสอบนี้แสดงให้เห็นว่าซอฟต์แวร์สามารถกู้คืนและดำเนินการต่อได้ดีเพียงใด การทดสอบโดยอัตโนมัติ
- - การทำงานนี้ทำได้ยากที่จะใช้งานด้วยตนเอง ใช้ซอฟต์แวร์เฉพาะเพื่อใช้การทดสอบและเพื่อให้ข้อมูลเกี่ยวกับผลลัพธ์ที่เกิดขึ้นจริงเทียบกับที่คาดไว้ การทดสอบความเข้ากันได้
- - ซอฟต์แวร์ต้องทำงานในสภาพแวดล้อมการประมวลผลที่แตกต่างกันดังนั้นจึงจะตรวจสอบความเข้ากันได้กับระบบต่างๆ ตัวอย่างเช่นซอฟต์แวร์ทำงานร่วมกับระบบปฏิบัติการและเว็บเบราเซอร์ต่างๆหรือไม่? การทดสอบสมรรถนะ
- - เป็นการทดสอบเชิงลึกเพื่อตรวจสอบประสิทธิภาพของซอฟต์แวร์ในสถานการณ์ต่างๆ ข้อมูลเกี่ยวกับการตอบสนองความมั่นคงการจัดสรรทรัพยากรและความเร็วในการรวบรวม นอกจากนี้การทดสอบย่อยเช่นความจุความจุและการทดสอบการขัดขวางเป็นส่วนหนึ่งของกระบวนการนี้ การทดสอบความปลอดภัย
- - เป็นการวัดความสามารถของซอฟต์แวร์ในการปกป้องความปลอดภัยของผู้ใช้ ซึ่งหมายถึงการให้สิทธิ์การทำงานการตรวจสอบความถูกต้องความลับความสมบูรณ์ความพร้อมใช้งานและการไม่ปฏิเสธ การทดสอบการเข้าถึง
- - ไม่เหมือนกับการทดสอบการใช้งาน นี้กำหนดขอบเขตที่ผู้ใช้ความสามารถที่แตกต่างกัน - การเรียนรู้และความพิการทางร่างกายรวมถึงสามารถใช้ซอฟต์แวร์ การทดสอบระหว่างประเทศและการทดสอบที่ใช้ภาษาท้องถิ่น
- - ผลลัพธ์แสดงว่าซอฟต์แวร์สามารถปรับให้เข้ากับภาษาต่างๆและความต้องการของภูมิภาคได้อย่างไร ซึ่งรวมถึงการเพิ่มส่วนประกอบสำหรับสถานที่เฉพาะและการแปลข้อความ การทดสอบซอฟต์แวร์เป็นส่วนสำคัญในการนำผลิตภัณฑ์สู่ตลาด และหากไม่มีผู้ทดสอบคุณจะไม่มีซอฟต์แวร์ที่พร้อมใช้งานมากมาย เป็นผู้ทดสอบซอฟต์แวร์ที่ได้รับการรับรองผ่านทางองค์กรต่างๆเช่น BCS, สถาบัน Chartered Institute for IT, ISTQB® (International Software Testing Qualifications Board) และ ASQ (เดิมชื่อ American Society for Quality)