ภาพรวมการทดสอบซอฟต์แวร์
การทดสอบซอฟต์แวร์เป็นการประเมินซอฟต์แวร์เทียบกับข้อกำหนดที่รวบรวมจากผู้ใช้และข้อกำหนดของระบบ การทดสอบจะดำเนินการที่ระดับเฟสในวงจรชีวิตการพัฒนาซอฟต์แวร์หรือที่ระดับโมดูลในโค้ดโปรแกรม การทดสอบซอฟต์แวร์ประกอบด้วย Validation and Verification
การตรวจสอบซอฟต์แวร์
การตรวจสอบความถูกต้องเป็นกระบวนการตรวจสอบว่าซอฟต์แวร์ตรงตามความต้องการของผู้ใช้หรือไม่ ดำเนินการในตอนท้ายของ SDLC หากซอฟต์แวร์ตรงกับข้อกำหนดที่สร้างขึ้นจะมีการตรวจสอบความถูกต้อง
- การตรวจสอบความถูกต้องทำให้มั่นใจได้ว่าผลิตภัณฑ์ที่อยู่ระหว่างการพัฒนาเป็นไปตามความต้องการของผู้ใช้
- การตรวจสอบความถูกต้องตอบคำถาม - "เรากำลังพัฒนาผลิตภัณฑ์ที่พยายามทั้งหมดที่ผู้ใช้ต้องการจากซอฟต์แวร์นี้หรือไม่"
- การตรวจสอบความถูกต้องเน้นความต้องการของผู้ใช้
การตรวจสอบซอฟต์แวร์
การตรวจสอบเป็นกระบวนการยืนยันว่าซอฟต์แวร์ตรงตามข้อกำหนดทางธุรกิจหรือไม่และได้รับการพัฒนาโดยยึดตามข้อกำหนดและวิธีการที่เหมาะสม
- การตรวจสอบทำให้มั่นใจได้ว่าผลิตภัณฑ์ที่กำลังพัฒนาเป็นไปตามข้อกำหนดการออกแบบ
- การยืนยันตอบคำถาม - "เรากำลังพัฒนาผลิตภัณฑ์นี้โดยปฏิบัติตามข้อกำหนดการออกแบบทั้งหมดอย่างมั่นคงหรือไม่"
- การตรวจสอบจะเน้นที่การออกแบบและข้อกำหนดของระบบ
เป้าหมายของการทดสอบคือ -
Errors- นี่เป็นข้อผิดพลาดในการเข้ารหัสที่เกิดขึ้นโดยนักพัฒนา นอกจากนี้ยังมีความแตกต่างในผลลัพธ์ของซอฟต์แวร์และเอาต์พุตที่ต้องการถือเป็นข้อผิดพลาด
Fault- เมื่อมีข้อผิดพลาดเกิดข้อผิดพลาด ข้อผิดพลาดหรือที่เรียกว่าข้อผิดพลาดเป็นผลมาจากข้อผิดพลาดที่อาจทำให้ระบบล้มเหลว
Failure - ความล้มเหลวกล่าวว่าเป็นความไม่สามารถของระบบในการทำงานที่ต้องการ ความล้มเหลวเกิดขึ้นเมื่อมีข้อบกพร่องในระบบ
คู่มือ Vs การทดสอบอัตโนมัติ
การทดสอบสามารถทำได้ด้วยตนเองหรือใช้เครื่องมือทดสอบอัตโนมัติ:
Manual- การทดสอบนี้ดำเนินการโดยไม่ต้องใช้เครื่องมือทดสอบอัตโนมัติ ผู้ทดสอบซอฟต์แวร์จะเตรียมกรณีทดสอบสำหรับส่วนและระดับต่างๆของโค้ดดำเนินการทดสอบและรายงานผลให้ผู้จัดการ
การทดสอบด้วยตนเองใช้เวลาและทรัพยากรมาก ผู้ทดสอบจำเป็นต้องยืนยันว่าใช้กรณีทดสอบที่ถูกต้องหรือไม่ การทดสอบส่วนใหญ่เกี่ยวข้องกับการทดสอบด้วยตนเอง
Automatedการทดสอบนี้เป็นขั้นตอนการทดสอบที่ทำโดยใช้เครื่องมือทดสอบอัตโนมัติ ข้อ จำกัด ของการทดสอบด้วยตนเองสามารถเอาชนะได้โดยใช้เครื่องมือทดสอบอัตโนมัติ
การทดสอบจำเป็นต้องตรวจสอบว่าสามารถเปิดเว็บเพจใน Internet Explorer ได้หรือไม่ สามารถทำได้อย่างง่ายดายด้วยการทดสอบด้วยตนเอง แต่ในการตรวจสอบว่าเว็บเซิร์ฟเวอร์สามารถรับภาระผู้ใช้ 1 ล้านคนได้หรือไม่นั้นค่อนข้างเป็นไปไม่ได้ที่จะทดสอบด้วยตนเอง
มีเครื่องมือซอฟต์แวร์และฮาร์ดแวร์ที่ช่วยผู้ทดสอบในการทดสอบโหลดการทดสอบความเครียดการทดสอบการถดถอย
แนวทางการทดสอบ
การทดสอบสามารถทำได้โดยใช้สองวิธี -
- การทดสอบการทำงาน
- การทดสอบการใช้งาน
เมื่อมีการทดสอบฟังก์ชันการทำงานโดยไม่นำไปใช้งานจริงที่เกี่ยวข้องจะเรียกว่าการทดสอบกล่องดำ อีกด้านหนึ่งเรียกว่าการทดสอบกล่องขาวซึ่งไม่เพียง แต่ทดสอบฟังก์ชันการทำงานเท่านั้น แต่ยังวิเคราะห์วิธีการใช้งานด้วย
การทดสอบที่ละเอียดถี่ถ้วนเป็นวิธีการที่ดีที่สุดสำหรับการทดสอบที่สมบูรณ์แบบ ทุกค่าที่เป็นไปได้ในช่วงของค่าอินพุตและเอาต์พุตจะถูกทดสอบ เป็นไปไม่ได้ที่จะทดสอบค่าแต่ละค่าในสถานการณ์จริงหากช่วงของค่ามีขนาดใหญ่
การทดสอบกล่องดำ
ดำเนินการเพื่อทดสอบการทำงานของโปรแกรม เรียกอีกอย่างว่าการทดสอบ "พฤติกรรม" ผู้ทดสอบในกรณีนี้มีชุดของค่าอินพุตและผลลัพธ์ที่ต้องการตามลำดับ ในการป้อนข้อมูลหากเอาต์พุตตรงกับผลลัพธ์ที่ต้องการโปรแกรมจะได้รับการทดสอบ 'ok' และมีปัญหา
ในวิธีการทดสอบนี้ผู้ทดสอบไม่ทราบการออกแบบและโครงสร้างของโค้ดส่วนวิศวกรทดสอบและผู้ใช้จะทำการทดสอบซอฟต์แวร์นี้
เทคนิคการทดสอบกล่องดำ:
Equivalence class- อินพุตแบ่งออกเป็นคลาสที่คล้ายกัน หากองค์ประกอบหนึ่งของคลาสผ่านการทดสอบจะถือว่าคลาสทั้งหมดผ่านการทดสอบ
Boundary values- อินพุตจะแบ่งออกเป็นค่าที่สูงกว่าและต่ำสุด หากค่าเหล่านี้ผ่านการทดสอบจะถือว่าค่าทั้งหมดที่อยู่ระหว่างนั้นอาจผ่านไปด้วย
Cause-effect graphing- ในทั้งสองวิธีก่อนหน้านี้จะมีการทดสอบค่าอินพุตครั้งละหนึ่งค่าเท่านั้น สาเหตุ (อินพุต) - เอฟเฟกต์ (เอาท์พุต) เป็นเทคนิคการทดสอบที่การรวมกันของค่าอินพุตจะถูกทดสอบอย่างเป็นระบบ
Pair-wise Testing- ลักษณะการทำงานของซอฟต์แวร์ขึ้นอยู่กับพารามิเตอร์หลายตัว ในการทดสอบแบบคู่พารามิเตอร์หลายตัวจะถูกทดสอบแบบคู่กันสำหรับค่าที่แตกต่างกัน
State-based testing- ระบบเปลี่ยนสถานะในการจัดเตรียมอินพุต ระบบเหล่านี้ได้รับการทดสอบตามสถานะและอินพุต
การทดสอบกล่องขาว
ดำเนินการเพื่อทดสอบโปรแกรมและการนำไปใช้งานเพื่อปรับปรุงประสิทธิภาพหรือโครงสร้างของโค้ด เรียกอีกอย่างว่าการทดสอบ 'โครงสร้าง'
ในวิธีการทดสอบนี้ผู้ทดสอบจะทราบการออกแบบและโครงสร้างของโค้ด โปรแกรมเมอร์ของจรรยาบรรณจะทำการทดสอบโค้ดนี้
ด้านล่างนี้เป็นเทคนิคการทดสอบ White-box:
Control-flow testing- วัตถุประสงค์ของการทดสอบโฟลว์การควบคุมเพื่อตั้งค่ากรณีทดสอบซึ่งครอบคลุมข้อความและเงื่อนไขสาขาทั้งหมด เงื่อนไขสาขาได้รับการทดสอบว่าเป็นจริงและเท็จเพื่อให้ครอบคลุมข้อความทั้งหมดได้
Data-flow testing- เทคนิคการทดสอบนี้เน้นให้ครอบคลุมตัวแปรข้อมูลทั้งหมดที่รวมอยู่ในโปรแกรม จะทดสอบว่าตัวแปรถูกประกาศและกำหนดไว้ที่ใดและมีการใช้หรือเปลี่ยนแปลงตัวแปรที่ใด
ระดับการทดสอบ
การทดสอบตัวเองอาจกำหนดไว้ในระดับต่างๆของ SDLC กระบวนการทดสอบทำงานควบคู่ไปกับการพัฒนาซอฟต์แวร์ ก่อนที่จะกระโดดขึ้นไปในขั้นต่อไปจะมีการทดสอบขั้นตอนการตรวจสอบและการตรวจสอบ
ทำการทดสอบแยกกันเพื่อให้แน่ใจว่าไม่มีจุดบกพร่องหรือปัญหาที่ซ่อนอยู่ในซอฟต์แวร์ ซอฟต์แวร์ได้รับการทดสอบในระดับต่างๆ -
การทดสอบหน่วย
ในขณะที่เขียนโปรแกรมโปรแกรมเมอร์จะทำการทดสอบบางอย่างในหน่วยของโปรแกรมนั้นเพื่อให้ทราบว่าไม่มีข้อผิดพลาดหรือไม่ การทดสอบจะดำเนินการภายใต้วิธีการทดสอบกล่องขาว การทดสอบหน่วยช่วยให้นักพัฒนาตัดสินใจว่าแต่ละหน่วยของโปรแกรมทำงานตามข้อกำหนดและปราศจากข้อผิดพลาด
การทดสอบการผสานรวม
แม้ว่าหน่วยของซอฟต์แวร์จะทำงานได้ดีทีละหน่วย แต่ก็มีความจำเป็นที่จะต้องค้นหาว่าหากรวมหน่วยต่างๆเข้าด้วยกันจะทำงานได้โดยไม่มีข้อผิดพลาดหรือไม่ ตัวอย่างเช่นการส่งผ่านอาร์กิวเมนต์และการอัปเดตข้อมูลเป็นต้น
การทดสอบระบบ
ซอฟต์แวร์ได้รับการรวบรวมเป็นผลิตภัณฑ์จากนั้นจึงทดสอบโดยรวม สามารถทำได้โดยใช้การทดสอบอย่างน้อยหนึ่งข้อต่อไปนี้:
Functionality testing - ทดสอบการทำงานทั้งหมดของซอฟต์แวร์ตามข้อกำหนด
Performance testing- การทดสอบนี้พิสูจน์ให้เห็นว่าซอฟต์แวร์มีประสิทธิภาพเพียงใด เป็นการทดสอบประสิทธิภาพและเวลาเฉลี่ยที่ซอฟต์แวร์ใช้ในการทำงานที่ต้องการ การทดสอบประสิทธิภาพทำได้โดยวิธีการทดสอบโหลดและการทดสอบความเครียดโดยที่ซอฟต์แวร์ถูกวางไว้ภายใต้การใช้งานของผู้ใช้และโหลดข้อมูลสูงภายใต้สภาวะแวดล้อมต่างๆ
Security & Portability - การทดสอบเหล่านี้จะทำเมื่อซอฟต์แวร์มีขึ้นเพื่อทำงานบนแพลตฟอร์มต่างๆและเข้าถึงได้โดยบุคคลจำนวนมาก
การทดสอบการยอมรับ
เมื่อซอฟต์แวร์พร้อมที่จะส่งมอบให้กับลูกค้าจะต้องผ่านขั้นตอนสุดท้ายของการทดสอบซึ่งมีการทดสอบการโต้ตอบและการตอบสนองของผู้ใช้ สิ่งนี้มีความสำคัญเนื่องจากแม้ว่าซอฟต์แวร์จะตรงกับความต้องการของผู้ใช้ทั้งหมดและหากผู้ใช้ไม่ชอบลักษณะที่ปรากฏหรือทำงานก็อาจถูกปฏิเสธได้
Alpha testing- ทีมผู้พัฒนาเองทำการทดสอบอัลฟ่าโดยใช้ระบบเสมือนว่ามีการใช้งานในสภาพแวดล้อมการทำงาน พวกเขาพยายามค้นหาว่าผู้ใช้จะตอบสนองต่อการกระทำบางอย่างในซอฟต์แวร์อย่างไรและระบบควรตอบสนองต่ออินพุตอย่างไร
Beta testing- หลังจากทดสอบซอฟต์แวร์ภายในแล้วซอฟต์แวร์จะถูกส่งต่อให้ผู้ใช้ใช้งานภายใต้สภาพแวดล้อมการผลิตเพื่อการทดสอบเท่านั้น นี่ยังไม่เท่ากับผลิตภัณฑ์ที่จัดส่ง นักพัฒนาคาดหวังว่าผู้ใช้ในขั้นตอนนี้จะนำปัญหานาทีซึ่งถูกข้ามมาเพื่อเข้าร่วม
การทดสอบการถดถอย
เมื่อใดก็ตามที่ผลิตภัณฑ์ซอฟต์แวร์ได้รับการอัปเดตด้วยรหัสคุณลักษณะหรือฟังก์ชันการทำงานใหม่ผลิตภัณฑ์จะได้รับการทดสอบอย่างละเอียดเพื่อตรวจสอบว่ามีผลกระทบเชิงลบของรหัสที่เพิ่มเข้ามาหรือไม่ สิ่งนี้เรียกว่าการทดสอบการถดถอย
เอกสารการทดสอบ
เอกสารการทดสอบจัดทำขึ้นในแต่ละขั้นตอน -
ก่อนการทดสอบ
การทดสอบเริ่มต้นด้วยการสร้างกรณีทดสอบ เอกสารต่อไปนี้จำเป็นสำหรับการอ้างอิง -
SRS document - เอกสารข้อกำหนดการใช้งาน
Test Policy document - ข้อมูลนี้จะอธิบายว่าควรทำการทดสอบไปไกลแค่ไหนก่อนที่จะปล่อยผลิตภัณฑ์
Test Strategy document - ข้อมูลนี้กล่าวถึงรายละเอียดของทีมทดสอบเมทริกซ์ความรับผิดชอบและสิทธิ / ความรับผิดชอบของผู้จัดการทดสอบและวิศวกรทดสอบ
Traceability Matrix document- เป็นเอกสาร SDLC ซึ่งเกี่ยวข้องกับกระบวนการรวบรวมความต้องการ เมื่อข้อกำหนดใหม่มาถึงข้อกำหนดเหล่านี้จะถูกเพิ่มเข้าไปในเมทริกซ์นี้ เมทริกซ์เหล่านี้ช่วยให้ผู้ทดสอบทราบแหล่งที่มาของข้อกำหนด สามารถติดตามไปข้างหน้าและข้างหลังได้
ในขณะที่กำลังทดสอบ
อาจจำเป็นต้องใช้เอกสารต่อไปนี้ขณะเริ่มการทดสอบและกำลังดำเนินการ:
Test Case document- เอกสารนี้ประกอบด้วยรายการการทดสอบที่ต้องดำเนินการ ซึ่งรวมถึงแผนการทดสอบหน่วยแผนการทดสอบการบูรณาการแผนการทดสอบระบบและแผนการทดสอบการยอมรับ
Test description - เอกสารนี้เป็นคำอธิบายโดยละเอียดเกี่ยวกับกรณีทดสอบและขั้นตอนการดำเนินการทั้งหมด
Test case report - เอกสารนี้ประกอบด้วยรายงานกรณีทดสอบอันเป็นผลมาจากการทดสอบ
Test logs - เอกสารนี้ประกอบด้วยบันทึกการทดสอบสำหรับรายงานกรณีทดสอบทุกฉบับ
หลังจากการทดสอบ
เอกสารต่อไปนี้อาจสร้างขึ้นหลังจากการทดสอบ:
Test summary- สรุปการทดสอบนี้เป็นการวิเคราะห์โดยรวมของรายงานการทดสอบและบันทึกทั้งหมด จะสรุปและสรุปว่าซอฟต์แวร์พร้อมที่จะเปิดตัวหรือไม่ ซอฟต์แวร์ออกภายใต้ระบบควบคุมเวอร์ชันหากพร้อมที่จะเปิดตัว
การทดสอบเทียบกับการควบคุมคุณภาพการประกันคุณภาพและการตรวจสอบ
เราจำเป็นต้องเข้าใจว่าการทดสอบซอฟต์แวร์แตกต่างจากการประกันคุณภาพซอฟต์แวร์การควบคุมคุณภาพซอฟต์แวร์และการตรวจสอบซอฟต์แวร์
Software quality assurance- นี่คือวิธีการตรวจสอบกระบวนการพัฒนาซอฟต์แวร์ซึ่งมั่นใจได้ว่ามาตรการทั้งหมดได้รับการดำเนินการตามมาตรฐานขององค์กร การตรวจสอบนี้ทำขึ้นเพื่อให้แน่ใจว่ามีการปฏิบัติตามวิธีการพัฒนาซอฟต์แวร์ที่เหมาะสม
Software quality control- เป็นระบบรักษาคุณภาพของผลิตภัณฑ์ซอฟต์แวร์ อาจรวมถึงลักษณะที่ใช้งานได้และไม่ใช้งานได้ของผลิตภัณฑ์ซอฟต์แวร์ซึ่งช่วยเพิ่มความปรารถนาดีขององค์กร ระบบนี้ช่วยให้แน่ใจว่าลูกค้าได้รับผลิตภัณฑ์ที่มีคุณภาพตามความต้องการและผลิตภัณฑ์ที่ได้รับการรับรองว่า 'เหมาะสมกับการใช้งาน'
Software audit- เป็นการทบทวนขั้นตอนที่องค์กรใช้ในการพัฒนาซอฟต์แวร์ ทีมผู้ตรวจสอบซึ่งเป็นอิสระจากทีมพัฒนาจะตรวจสอบกระบวนการซอฟต์แวร์ขั้นตอนข้อกำหนดและด้านอื่น ๆ ของ SDLC วัตถุประสงค์ของการตรวจสอบซอฟต์แวร์คือการตรวจสอบซอฟต์แวร์และกระบวนการพัฒนาทั้งที่เป็นไปตามมาตรฐานกฎและข้อบังคับ