การทดสอบซอฟต์แวร์ - ระดับ
มีระดับที่แตกต่างกันในระหว่างขั้นตอนการทดสอบ ในบทนี้มีคำอธิบายสั้น ๆ เกี่ยวกับระดับเหล่านี้
ระดับของการทดสอบรวมถึงวิธีการต่างๆที่สามารถใช้ได้ในขณะที่ทำการทดสอบซอฟต์แวร์ ระดับหลักของการทดสอบซอฟต์แวร์คือ -
การทดสอบการทำงาน
การทดสอบแบบไม่ใช้งาน
การทดสอบการทำงาน
นี่คือการทดสอบกล่องดำประเภทหนึ่งซึ่งเป็นไปตามข้อกำหนดของซอฟต์แวร์ที่จะทดสอบ แอปพลิเคชันได้รับการทดสอบโดยการป้อนข้อมูลจากนั้นผลจะถูกตรวจสอบว่าจำเป็นต้องเป็นไปตามฟังก์ชันการทำงานที่ตั้งใจไว้ การทดสอบการทำงานของซอฟต์แวร์จะดำเนินการบนระบบบูรณาการที่สมบูรณ์เพื่อประเมินความสอดคล้องของระบบกับข้อกำหนดที่ระบุ
มีห้าขั้นตอนที่เกี่ยวข้องในขณะทดสอบแอปพลิเคชันสำหรับฟังก์ชันการทำงาน
ขั้นตอน | คำอธิบาย |
---|---|
ผม | การกำหนดฟังก์ชันการทำงานของแอปพลิเคชันที่ตั้งใจไว้เพื่อดำเนินการ |
II | การสร้างข้อมูลการทดสอบตามข้อกำหนดของแอปพลิเคชัน |
สาม | ผลลัพธ์ขึ้นอยู่กับข้อมูลการทดสอบและข้อกำหนดของแอปพลิเคชัน |
IV | การเขียนสถานการณ์การทดสอบและการดำเนินการกรณีทดสอบ |
V | การเปรียบเทียบผลลัพธ์ที่เกิดขึ้นจริงและที่คาดหวังตามกรณีการทดสอบที่ดำเนินการ |
แนวทางปฏิบัติในการทดสอบที่มีประสิทธิภาพจะเห็นขั้นตอนข้างต้นที่นำไปใช้กับนโยบายการทดสอบของทุกองค์กรและด้วยเหตุนี้จึงทำให้แน่ใจได้ว่าองค์กรจะรักษามาตรฐานที่เข้มงวดที่สุดในเรื่องคุณภาพซอฟต์แวร์
การทดสอบหน่วย
การทดสอบประเภทนี้ดำเนินการโดยนักพัฒนาก่อนที่การตั้งค่าจะถูกส่งต่อไปยังทีมทดสอบเพื่อดำเนินการกรณีทดสอบอย่างเป็นทางการ การทดสอบหน่วยจะดำเนินการโดยนักพัฒนาที่เกี่ยวข้องในแต่ละหน่วยของซอร์สโค้ดพื้นที่ที่กำหนด ผู้พัฒนาใช้ข้อมูลการทดสอบที่แตกต่างจากข้อมูลการทดสอบของทีมประกันคุณภาพ
เป้าหมายของการทดสอบหน่วยคือการแยกแต่ละส่วนของโปรแกรมและแสดงให้เห็นว่าแต่ละส่วนถูกต้องในแง่ของข้อกำหนดและฟังก์ชันการทำงาน
ข้อ จำกัด ของการทดสอบหน่วย
การทดสอบไม่สามารถตรวจจับข้อบกพร่องแต่ละข้อในแอปพลิเคชันได้ เป็นไปไม่ได้ที่จะประเมินทุกเส้นทางการดำเนินการในทุกแอปพลิเคชันซอฟต์แวร์ เช่นเดียวกับกรณีที่มีการทดสอบหน่วย
มีการ จำกัด จำนวนสถานการณ์และข้อมูลทดสอบที่นักพัฒนาสามารถใช้เพื่อยืนยันซอร์สโค้ดได้ หลังจากใช้ตัวเลือกทั้งหมดหมดแล้วไม่มีทางเลือกอื่นนอกจากหยุดการทดสอบหน่วยและรวมส่วนของรหัสกับหน่วยอื่น ๆ
การทดสอบการผสานรวม
การทดสอบการรวมหมายถึงการทดสอบส่วนที่รวมกันของแอปพลิเคชันเพื่อตรวจสอบว่าทำงานได้อย่างถูกต้องหรือไม่ การทดสอบการผสานรวมสามารถทำได้สองวิธี: การทดสอบการรวมจากล่างขึ้นบนและการทดสอบการรวมจากบนลงล่าง
ซีเนียร์ | วิธีการทดสอบการรวม |
---|---|
1 | Bottom-up integration การทดสอบนี้เริ่มต้นด้วยการทดสอบหน่วยตามด้วยการทดสอบการรวมหน่วยในระดับที่สูงขึ้นไปเรื่อย ๆ ที่เรียกว่าโมดูลหรือการสร้าง |
2 | Top-down integration ในการทดสอบนี้โมดูลระดับสูงสุดจะได้รับการทดสอบก่อนและต่อเนื่องโมดูลระดับล่างจะถูกทดสอบหลังจากนั้น |
ในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ที่ครอบคลุมมักจะทำการทดสอบจากด้านล่างก่อนตามด้วยการทดสอบจากบนลงล่าง กระบวนการนี้สรุปด้วยการทดสอบแอปพลิเคชันที่สมบูรณ์หลายแบบโดยเฉพาะอย่างยิ่งในสถานการณ์ที่ออกแบบมาเพื่อเลียนแบบสถานการณ์จริง
การทดสอบระบบ
การทดสอบระบบเป็นการทดสอบระบบโดยรวม เมื่อรวมส่วนประกอบทั้งหมดแล้วแอปพลิเคชันโดยรวมจะได้รับการทดสอบอย่างเข้มงวดเพื่อดูว่าเป็นไปตามมาตรฐานคุณภาพที่ระบุ การทดสอบประเภทนี้ดำเนินการโดยทีมทดสอบเฉพาะทาง
การทดสอบระบบมีความสำคัญเนื่องจากเหตุผลดังต่อไปนี้ -
การทดสอบระบบเป็นขั้นตอนแรกในวัฏจักรการพัฒนาซอฟต์แวร์ซึ่งจะทดสอบแอปพลิเคชันโดยรวม
แอปพลิเคชันได้รับการทดสอบอย่างละเอียดเพื่อตรวจสอบว่าเป็นไปตามข้อกำหนดการทำงานและทางเทคนิค
แอปพลิเคชันได้รับการทดสอบในสภาพแวดล้อมที่ใกล้เคียงกับสภาพแวดล้อมการใช้งานจริงที่จะนำแอปพลิเคชันไปใช้งาน
การทดสอบระบบช่วยให้เราสามารถทดสอบตรวจสอบและตรวจสอบความถูกต้องของข้อกำหนดทางธุรกิจตลอดจนสถาปัตยกรรมแอปพลิเคชัน
การทดสอบการถดถอย
เมื่อใดก็ตามที่มีการเปลี่ยนแปลงแอปพลิเคชันซอฟต์แวร์มีความเป็นไปได้ค่อนข้างมากที่พื้นที่อื่น ๆ ภายในแอปพลิเคชันจะได้รับผลกระทบจากการเปลี่ยนแปลงนี้ การทดสอบการถดถอยดำเนินการเพื่อตรวจสอบว่าข้อบกพร่องที่ได้รับการแก้ไขแล้วไม่ได้ส่งผลให้เกิดการทำงานอื่นหรือการละเมิดกฎทางธุรกิจ จุดประสงค์ของการทดสอบการถดถอยคือเพื่อให้แน่ใจว่าการเปลี่ยนแปลงเช่นการแก้ไขข้อบกพร่องไม่ควรส่งผลให้มีการค้นพบข้อบกพร่องอื่นในแอปพลิเคชัน
การทดสอบการถดถอยมีความสำคัญเนื่องจากสาเหตุต่อไปนี้ -
ลดช่องว่างในการทดสอบเมื่อต้องทดสอบแอปพลิเคชันที่มีการเปลี่ยนแปลง
ทดสอบการเปลี่ยนแปลงใหม่เพื่อตรวจสอบว่าการเปลี่ยนแปลงที่เกิดขึ้นไม่ส่งผลกระทบต่อส่วนอื่น ๆ ของแอปพลิเคชัน
ลดความเสี่ยงเมื่อทำการทดสอบการถดถอยบนแอปพลิเคชัน
ความครอบคลุมของการทดสอบจะเพิ่มขึ้นโดยไม่กระทบต่อระยะเวลา
เพิ่มความเร็วในการทำตลาดผลิตภัณฑ์
การทดสอบการยอมรับ
นี่เป็นเนื้อหาที่สำคัญที่สุดของการทดสอบเนื่องจากดำเนินการโดยทีมประกันคุณภาพซึ่งจะตรวจสอบว่าแอปพลิเคชันตรงตามข้อกำหนดที่กำหนดไว้และตรงตามความต้องการของลูกค้าหรือไม่ ทีม QA จะมีชุดของสถานการณ์จำลองที่เขียนไว้ล่วงหน้าและกรณีทดสอบที่จะใช้ในการทดสอบแอปพลิเคชัน
จะมีการแบ่งปันแนวคิดเพิ่มเติมเกี่ยวกับแอปพลิเคชันและสามารถทำการทดสอบเพิ่มเติมเพื่อวัดความถูกต้องและเหตุผลที่เริ่มโครงการ การทดสอบการยอมรับไม่เพียง แต่มีจุดมุ่งหมายเพื่อชี้ให้เห็นข้อผิดพลาดในการสะกดคำข้อผิดพลาดเกี่ยวกับเครื่องสำอางหรือช่องว่างของอินเทอร์เฟซเท่านั้น แต่ยังชี้ให้เห็นข้อบกพร่องใด ๆ ในแอปพลิเคชันที่จะส่งผลให้ระบบล่มหรือข้อผิดพลาดที่สำคัญในแอปพลิเคชัน
ทีมทดสอบจะลดการทำงานของแอปพลิเคชันในการผลิต นอกจากนี้ยังมีข้อกำหนดทางกฎหมายและสัญญาสำหรับการยอมรับระบบ
การทดสอบอัลฟ่า
การทดสอบนี้เป็นขั้นตอนแรกของการทดสอบและจะดำเนินการระหว่างทีม (ผู้พัฒนาและทีม QA) การทดสอบหน่วยการทดสอบการรวมและการทดสอบระบบเมื่อรวมเข้าด้วยกันเรียกว่าการทดสอบอัลฟา ในช่วงนี้จะมีการทดสอบประเด็นต่อไปนี้ในแอปพลิเคชัน -
สะกดผิดพลาด
ลิงค์เสีย
ทิศทางที่มีเมฆมาก
แอปพลิเคชันจะได้รับการทดสอบบนเครื่องที่มีคุณสมบัติต่ำสุดเพื่อทดสอบเวลาในการโหลดและปัญหาเวลาแฝงใด ๆ
การทดสอบเบต้า
การทดสอบนี้ดำเนินการหลังจากทำการทดสอบอัลฟาสำเร็จแล้ว ในการทดสอบเบต้าตัวอย่างของกลุ่มเป้าหมายที่ต้องการจะทดสอบแอปพลิเคชัน การทดสอบเบต้าเรียกอีกอย่างว่าpre-release testing. ซอฟต์แวร์เวอร์ชันทดสอบเบต้าได้รับการเผยแพร่ไปยังผู้ชมจำนวนมากบนเว็บส่วนหนึ่งเพื่อให้โปรแกรมได้รับการทดสอบ "ในโลกแห่งความเป็นจริง" และอีกส่วนหนึ่งเพื่อแสดงตัวอย่างของรุ่นถัดไป ในขั้นตอนนี้ผู้ชมจะได้รับการทดสอบสิ่งต่อไปนี้ -
ผู้ใช้จะติดตั้งเรียกใช้แอปพลิเคชันและส่งข้อเสนอแนะไปยังทีมโครงการ
ข้อผิดพลาดในการพิมพ์โฟลว์แอปพลิเคชันที่สับสนและถึงขั้นขัดข้อง
ทีมงานโครงการสามารถแก้ไขปัญหาได้ก่อนปล่อยซอฟต์แวร์ให้กับผู้ใช้งานจริง
ยิ่งคุณแก้ไขปัญหาที่แก้ปัญหาของผู้ใช้จริงได้มากเท่าใดคุณภาพของแอปพลิเคชันของคุณก็จะยิ่งสูงขึ้นเท่านั้น
การมีแอปพลิเคชันคุณภาพสูงขึ้นเมื่อคุณเผยแพร่สู่สาธารณะจะเพิ่มความพึงพอใจให้กับลูกค้า
การทดสอบแบบไม่ใช้งาน
ส่วนนี้อ้างอิงจากการทดสอบแอปพลิเคชันจากแอตทริบิวต์ที่ไม่ทำงาน การทดสอบที่ไม่ใช้งานได้เกี่ยวข้องกับการทดสอบซอฟต์แวร์จากข้อกำหนดที่ไม่สามารถใช้งานได้ตามธรรมชาติ แต่มีความสำคัญเช่นประสิทธิภาพความปลอดภัยส่วนต่อประสานกับผู้ใช้เป็นต้น
ประเภทการทดสอบที่ไม่ใช้งานที่สำคัญและใช้กันทั่วไปบางประเภทจะกล่าวถึงด้านล่าง
การทดสอบประสิทธิภาพ
ส่วนใหญ่จะใช้เพื่อระบุปัญหาคอขวดหรือปัญหาด้านประสิทธิภาพมากกว่าการค้นหาจุดบกพร่องในซอฟต์แวร์ มีสาเหตุหลายประการที่ทำให้ประสิทธิภาพของซอฟต์แวร์ลดลง -
เครือข่ายล่าช้า
การประมวลผลฝั่งไคลเอ็นต์
การประมวลผลธุรกรรมฐานข้อมูล
โหลดบาลานซ์ระหว่างเซิร์ฟเวอร์
การแสดงผลข้อมูล
การทดสอบประสิทธิภาพถือเป็นหนึ่งในประเภทการทดสอบที่สำคัญและจำเป็นในแง่ต่อไปนี้ -
ความเร็ว (เช่นเวลาตอบสนองการแสดงข้อมูลและการเข้าถึง)
Capacity
Stability
Scalability
การทดสอบประสิทธิภาพสามารถเป็นได้ทั้งเชิงคุณภาพหรือเชิงปริมาณและสามารถแบ่งออกเป็นประเภทย่อยต่างๆเช่น Load testing และ Stress testing.
โหลดการทดสอบ
เป็นกระบวนการทดสอบพฤติกรรมของซอฟต์แวร์โดยใช้โหลดสูงสุดในแง่ของซอฟต์แวร์ที่เข้าถึงและจัดการข้อมูลอินพุตขนาดใหญ่ สามารถทำได้ทั้งในสภาวะปกติและสภาวะโหลดสูงสุด การทดสอบประเภทนี้จะระบุความจุสูงสุดของซอฟต์แวร์และพฤติกรรมของซอฟต์แวร์ในช่วงเวลาเร่งด่วน
โดยส่วนใหญ่แล้วการทดสอบโหลดจะดำเนินการโดยใช้เครื่องมืออัตโนมัติเช่น Load Runner, AppLoader, IBM Rational Performance Tester, Apache JMeter, Silk Performer, Visual Studio Load Test เป็นต้น
ผู้ใช้เสมือน (VUsers) ถูกกำหนดไว้ในเครื่องมือทดสอบอัตโนมัติและสคริปต์จะถูกเรียกใช้งานเพื่อตรวจสอบการทดสอบโหลดสำหรับซอฟต์แวร์ จำนวนผู้ใช้สามารถเพิ่มขึ้นหรือลดลงพร้อมกันหรือเพิ่มขึ้นตามข้อกำหนด
การทดสอบความเครียด
การทดสอบความเครียดรวมถึงการทดสอบพฤติกรรมของซอฟต์แวร์ภายใต้สภาวะที่ผิดปกติ ตัวอย่างเช่นอาจรวมถึงการนำทรัพยากรบางส่วนออกไปหรือใช้งานโหลดเกินขีด จำกัด การโหลดจริง
จุดมุ่งหมายของการทดสอบความเครียดคือการทดสอบซอฟต์แวร์โดยใช้โหลดกับระบบและรับทรัพยากรที่ซอฟต์แวร์ใช้เพื่อระบุจุดแตกหัก การทดสอบนี้สามารถทำได้โดยการทดสอบสถานการณ์ต่างๆเช่น -
การปิดหรือรีสตาร์ทพอร์ตเครือข่ายแบบสุ่ม
การเปิดหรือปิดฐานข้อมูล
การรันกระบวนการต่างๆที่ใช้ทรัพยากรเช่น CPU หน่วยความจำเซิร์ฟเวอร์เป็นต้น
การทดสอบการใช้งาน
การทดสอบการใช้งานเป็นเทคนิคกล่องดำและใช้เพื่อระบุข้อผิดพลาดและการปรับปรุงซอฟต์แวร์โดยการสังเกตผู้ใช้ผ่านการใช้งานและการทำงาน
จากข้อมูลของ Nielsen ความสามารถในการใช้งานสามารถกำหนดได้จากปัจจัย 5 ประการ ได้แก่ ประสิทธิภาพในการใช้งานความสามารถในการเรียนรู้ความสามารถในการจำข้อผิดพลาด / ความปลอดภัยและความพึงพอใจ ตามที่เขาพูดความสามารถในการใช้งานของผลิตภัณฑ์จะดีและระบบสามารถใช้งานได้หากมีปัจจัยข้างต้น
Nigel Bevan และ Macleod พิจารณาว่าความสามารถในการใช้งานเป็นข้อกำหนดด้านคุณภาพที่สามารถวัดได้จากผลของการโต้ตอบกับระบบคอมพิวเตอร์ ข้อกำหนดนี้สามารถบรรลุผลได้และผู้ใช้ปลายทางจะพอใจหากบรรลุเป้าหมายที่ตั้งใจไว้อย่างมีประสิทธิผลด้วยการใช้ทรัพยากรที่เหมาะสม
Molich ในปี 2000 ระบุว่าระบบที่ใช้งานง่ายควรตอบสนองเป้าหมาย 5 ประการดังต่อไปนี้ ได้แก่ เรียนรู้ง่ายจำง่ายใช้งานได้มีประสิทธิภาพน่าใช้และเข้าใจง่าย
นอกเหนือจากคำจำกัดความที่แตกต่างกันของการใช้งานแล้วยังมีมาตรฐานและแบบจำลองคุณภาพและวิธีการบางอย่างที่กำหนดความสามารถในการใช้งานในรูปแบบของคุณลักษณะและคุณลักษณะย่อยเช่น ISO-9126, ISO-9241-11, ISO-13407 และมาตรฐาน IEEE 610.12 เป็นต้น
UI เทียบกับการทดสอบการใช้งาน
การทดสอบ UI เกี่ยวข้องกับการทดสอบอินเทอร์เฟซผู้ใช้แบบกราฟิกของซอฟต์แวร์ การทดสอบ UI ช่วยให้มั่นใจได้ว่าฟังก์ชัน GUI เป็นไปตามข้อกำหนดและผ่านการทดสอบในแง่ของสีการจัดตำแหน่งขนาดและคุณสมบัติอื่น ๆ
ในทางกลับกันการทดสอบการใช้งานทำให้มั่นใจได้ว่า GUI ที่ดีและใช้งานง่ายซึ่งสามารถจัดการได้อย่างง่ายดาย การทดสอบ UI ถือได้ว่าเป็นส่วนย่อยของการทดสอบการใช้งาน
การทดสอบความปลอดภัย
การทดสอบความปลอดภัยเกี่ยวข้องกับการทดสอบซอฟต์แวร์เพื่อระบุข้อบกพร่องและช่องว่างจากมุมมองด้านความปลอดภัยและช่องโหว่ ด้านล่างนี้เป็นประเด็นหลักที่การทดสอบความปลอดภัยควรตรวจสอบ -
Confidentiality
Integrity
Authentication
Availability
Authorization
Non-repudiation
ซอฟต์แวร์มีความปลอดภัยจากช่องโหว่ที่ทราบและไม่รู้จัก
ข้อมูลซอฟต์แวร์มีความปลอดภัย
ซอฟต์แวร์เป็นไปตามกฎระเบียบด้านความปลอดภัยทั้งหมด
การตรวจสอบอินพุตและการตรวจสอบความถูกต้อง
การโจมตีการแทรก SQL
ข้อบกพร่องในการฉีด
ปัญหาการจัดการเซสชัน
การโจมตีด้วยสคริปต์ข้ามไซต์
บัฟเฟอร์ล้นช่องโหว่
การโจมตีแบบข้ามผ่านไดเรกทอรี
การทดสอบการพกพา
การทดสอบความสามารถในการพกพารวมถึงการทดสอบซอฟต์แวร์โดยมีจุดประสงค์เพื่อให้แน่ใจว่าสามารถใช้ซ้ำได้และสามารถย้ายจากซอฟต์แวร์อื่นได้เช่นกัน ต่อไปนี้เป็นกลยุทธ์ที่สามารถใช้สำหรับการทดสอบการพกพา -
การถ่ายโอนซอฟต์แวร์ที่ติดตั้งจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง
การสร้างไฟล์ปฏิบัติการ (.exe) เพื่อเรียกใช้ซอฟต์แวร์บนแพลตฟอร์มต่างๆ
การทดสอบความสามารถในการพกพาถือได้ว่าเป็นส่วนย่อยของการทดสอบระบบเนื่องจากการทดสอบประเภทนี้รวมถึงการทดสอบซอฟต์แวร์โดยรวมเกี่ยวกับการใช้งานในสภาพแวดล้อมที่แตกต่างกัน ฮาร์ดแวร์คอมพิวเตอร์ระบบปฏิบัติการและเบราว์เซอร์เป็นจุดสำคัญของการทดสอบการพกพา เงื่อนไขเบื้องต้นบางประการสำหรับการทดสอบการพกพามีดังต่อไปนี้ -
ซอฟต์แวร์ควรได้รับการออกแบบและเข้ารหัสโดยคำนึงถึงความต้องการในการพกพา
มีการทดสอบหน่วยกับส่วนประกอบที่เกี่ยวข้อง
ทำการทดสอบการผสานรวมแล้ว
สร้างสภาพแวดล้อมการทดสอบแล้ว