การทดสอบซอฟต์แวร์ - คู่มือฉบับย่อ

การทดสอบคืออะไร?

การทดสอบเป็นกระบวนการในการประเมินระบบหรือส่วนประกอบโดยมีจุดประสงค์เพื่อค้นหาว่าเป็นไปตามข้อกำหนดที่ระบุไว้หรือไม่ กล่าวง่ายๆคือการทดสอบกำลังดำเนินการระบบเพื่อระบุช่องว่างข้อผิดพลาดหรือข้อกำหนดที่ขาดหายไปซึ่งขัดกับข้อกำหนดที่แท้จริง

ตามมาตรฐาน ANSI / IEEE 1059 การทดสอบสามารถกำหนดเป็น - กระบวนการวิเคราะห์รายการซอฟต์แวร์เพื่อตรวจจับความแตกต่างระหว่างเงื่อนไขที่มีอยู่และเงื่อนไขที่จำเป็น (นั่นคือข้อบกพร่อง / ข้อผิดพลาด / ข้อบกพร่อง) และเพื่อประเมินคุณสมบัติของรายการซอฟต์แวร์

ใครทดสอบ?

ขึ้นอยู่กับกระบวนการและผู้มีส่วนได้ส่วนเสียที่เกี่ยวข้องของโครงการ ในอุตสาหกรรมไอที บริษัท ขนาดใหญ่จะมีทีมงานที่รับผิดชอบในการประเมินซอฟต์แวร์ที่พัฒนาขึ้นตามข้อกำหนดที่กำหนด นอกจากนี้นักพัฒนายังทำการทดสอบซึ่งเรียกว่าUnit Testing. ในกรณีส่วนใหญ่ผู้เชี่ยวชาญต่อไปนี้มีส่วนร่วมในการทดสอบระบบภายในขีดความสามารถของตน -

  • เครื่องทดสอบซอฟต์แวร์
  • นักพัฒนาซอฟต์แวร์
  • หัวหน้าโครงการ / ผู้จัดการ
  • ผู้ใช้

บริษัท ต่างๆมีการกำหนดที่แตกต่างกันสำหรับผู้ที่ทดสอบซอฟต์แวร์โดยอาศัยประสบการณ์และความรู้เช่น Software Tester, Software Quality Assurance Engineer, QA Analyst เป็นต้น

ไม่สามารถทดสอบซอฟต์แวร์ได้ตลอดเวลาในระหว่างรอบการทำงาน สองส่วนถัดไประบุว่าควรเริ่มการทดสอบเมื่อใดและเมื่อใดควรสิ้นสุดในระหว่าง SDLC

จะเริ่มทดสอบเมื่อใด

การเริ่มต้นการทดสอบจะช่วยลดต้นทุนและเวลาในการทำงานซ้ำและผลิตซอฟต์แวร์ที่ปราศจากข้อผิดพลาดซึ่งส่งมอบให้กับลูกค้า อย่างไรก็ตามใน Software Development Life Cycle (SDLC) การทดสอบสามารถเริ่มต้นได้จากขั้นตอนการรวบรวมความต้องการและดำเนินการต่อไปจนถึงการปรับใช้ซอฟต์แวร์

นอกจากนี้ยังขึ้นอยู่กับรูปแบบการพัฒนาที่นำมาใช้ ตัวอย่างเช่นในแบบจำลอง Waterfall การทดสอบอย่างเป็นทางการจะดำเนินการในขั้นตอนการทดสอบ แต่ในรูปแบบที่เพิ่มขึ้นการทดสอบจะดำเนินการเมื่อสิ้นสุดการเพิ่ม / การวนซ้ำทุกครั้งและจะทดสอบแอปพลิเคชันทั้งหมดในตอนท้าย

การทดสอบจะทำในรูปแบบที่แตกต่างกันในทุกขั้นตอนของ SDLC -

  • ในระหว่างขั้นตอนการรวบรวมความต้องการการวิเคราะห์และการตรวจสอบความต้องการถือเป็นการทดสอบด้วย

  • การทบทวนการออกแบบในขั้นตอนการออกแบบโดยมีจุดประสงค์เพื่อปรับปรุงการออกแบบถือเป็นการทดสอบเช่นกัน

  • การทดสอบที่ดำเนินการโดยนักพัฒนาเมื่อโค้ดเสร็จสมบูรณ์ยังจัดประเภทเป็นการทดสอบ

ควรหยุดทดสอบเมื่อใด

เป็นการยากที่จะระบุว่าเมื่อใดควรหยุดการทดสอบเนื่องจากการทดสอบเป็นกระบวนการที่ไม่มีวันสิ้นสุดและไม่มีใครสามารถอ้างว่าซอฟต์แวร์ได้รับการทดสอบ 100% ต้องพิจารณาประเด็นต่อไปนี้เพื่อหยุดกระบวนการทดสอบ -

  • กำหนดเวลาการทดสอบ

  • เสร็จสิ้นการดำเนินการกรณีทดสอบ

  • ความครอบคลุมของฟังก์ชันและโค้ดจนถึงจุดหนึ่ง

  • อัตราบั๊กต่ำกว่าระดับหนึ่งและไม่มีการระบุจุดบกพร่องที่มีลำดับความสำคัญสูง

  • การตัดสินใจของผู้บริหาร

การตรวจสอบและการตรวจสอบความถูกต้อง

คำศัพท์ทั้งสองนี้สร้างความสับสนให้กับคนส่วนใหญ่ซึ่งใช้แทนกันได้ ตารางต่อไปนี้เน้นความแตกต่างระหว่างการตรวจสอบและการตรวจสอบความถูกต้อง

ซีเนียร์ การยืนยัน การตรวจสอบ
1 การยืนยันช่วยแก้ปัญหา: "คุณสร้างถูกต้องหรือไม่" การตรวจสอบความถูกต้องกล่าวถึงข้อกังวล: "คุณกำลังสร้างสิ่งที่ถูกต้องหรือไม่"
2 ตรวจสอบให้แน่ใจว่าระบบซอฟต์แวร์ตรงตามฟังก์ชันการทำงานทั้งหมด ตรวจสอบให้แน่ใจว่าฟังก์ชันตรงตามลักษณะการทำงานที่ตั้งใจไว้
3 การยืนยันจะเกิดขึ้นก่อนและรวมถึงการตรวจสอบเอกสารรหัส ฯลฯ การตรวจสอบจะเกิดขึ้นหลังจากการตรวจสอบและส่วนใหญ่เกี่ยวข้องกับการตรวจสอบผลิตภัณฑ์โดยรวม
4 ทำโดยนักพัฒนา ทำโดยผู้ทดสอบ
5 มีกิจกรรมคงที่เนื่องจากรวมถึงการรวบรวมบทวิจารณ์บทสรุปและการตรวจสอบเพื่อตรวจสอบซอฟต์แวร์ มีกิจกรรมแบบไดนามิกเนื่องจากรวมถึงการเรียกใช้ซอฟต์แวร์ที่ขัดต่อข้อกำหนด
6 เป็นกระบวนการที่มีวัตถุประสงค์และไม่จำเป็นต้องมีการตัดสินใจแบบอัตนัยเพื่อตรวจสอบซอฟต์แวร์ เป็นกระบวนการที่เป็นอัตวิสัยและเกี่ยวข้องกับการตัดสินใจแบบอัตนัยว่าซอฟต์แวร์ทำงานได้ดีเพียงใด

ด้านล่างนี้เป็นตำนานที่พบบ่อยที่สุดเกี่ยวกับการทดสอบซอฟต์แวร์

ความเชื่อที่ 1: การทดสอบมีราคาแพงเกินไป

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

ความเชื่อที่ 2: การทดสอบใช้เวลานาน

Reality- ในระหว่างขั้นตอน SDLC การทดสอบไม่เคยเป็นกระบวนการที่ใช้เวลานาน อย่างไรก็ตามการวินิจฉัยและแก้ไขข้อผิดพลาดที่ระบุระหว่างการทดสอบที่เหมาะสมเป็นกิจกรรมที่ใช้เวลานาน แต่ได้ผล

ความเชื่อที่ 3: เฉพาะผลิตภัณฑ์ที่พัฒนาเต็มที่เท่านั้นที่ได้รับการทดสอบ

Reality- ไม่ต้องสงสัยเลยว่าการทดสอบขึ้นอยู่กับซอร์สโค้ด แต่การตรวจสอบข้อกำหนดและการพัฒนากรณีทดสอบนั้นไม่ขึ้นอยู่กับโค้ดที่พัฒนาขึ้น อย่างไรก็ตามวิธีการแบบวนซ้ำหรือแบบเพิ่มหน่วยเป็นแบบจำลองวงจรชีวิตของการพัฒนาอาจลดการพึ่งพาการทดสอบซอฟต์แวร์ที่พัฒนาเต็มรูปแบบ

ความเชื่อที่ 4: การทดสอบที่สมบูรณ์เป็นไปได้

Reality- จะกลายเป็นปัญหาเมื่อลูกค้าหรือผู้ทดสอบคิดว่าการทดสอบที่สมบูรณ์เป็นไปได้ เป็นไปได้ว่าทีมงานได้ทดสอบเส้นทางทั้งหมดแล้ว แต่ไม่สามารถเกิดการทดสอบที่สมบูรณ์ได้ อาจมีบางสถานการณ์ที่ไม่เคยดำเนินการโดยทีมทดสอบหรือไคลเอ็นต์ในระหว่างวงจรชีวิตการพัฒนาซอฟต์แวร์และอาจถูกดำเนินการเมื่อโครงการถูกปรับใช้

ความเชื่อที่ 5: ซอฟต์แวร์ที่ผ่านการทดสอบแล้วไม่มีข้อผิดพลาด

Reality - นี่เป็นตำนานทั่วไปที่ลูกค้าผู้จัดการโครงการและทีมผู้บริหารเชื่อมั่นไม่มีใครสามารถอ้างสิทธิ์ได้อย่างมั่นใจว่าแอปพลิเคชันซอฟต์แวร์ปราศจากข้อบกพร่อง 100% แม้ว่าผู้ทดสอบที่มีทักษะการทดสอบที่ยอดเยี่ยมจะได้ทดสอบแอปพลิเคชันแล้วก็ตาม .

ความเชื่อที่ 6: ข้อบกพร่องที่ไม่ได้รับเกิดจากผู้ทดสอบ

Reality- ไม่ใช่แนวทางที่ถูกต้องในการตำหนิผู้ทดสอบสำหรับข้อบกพร่องที่ยังคงอยู่ในแอปพลิเคชันแม้ว่าจะทำการทดสอบแล้วก็ตาม ตำนานนี้เกี่ยวข้องกับเวลาค่าใช้จ่ายและข้อกำหนดที่เปลี่ยนแปลงข้อ จำกัด อย่างไรก็ตามกลยุทธ์การทดสอบอาจส่งผลให้ทีมทดสอบพลาดข้อบกพร่องไปด้วย

ความเชื่อที่ 7: ผู้ทดสอบต้องรับผิดชอบต่อคุณภาพของผลิตภัณฑ์

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

ความเชื่อที่ 8: ควรใช้การทดสอบอัตโนมัติทุกที่ที่ทำได้เพื่อลดเวลา

Reality- ใช่เป็นความจริงที่ Test Automation ช่วยลดเวลาในการทดสอบ แต่ไม่สามารถเริ่มทดสอบอัตโนมัติได้ตลอดเวลาในระหว่างการพัฒนาซอฟต์แวร์ ควรเริ่มการทดสอบอัตโนมัติเมื่อซอฟต์แวร์ได้รับการทดสอบด้วยตนเองและมีความเสถียรในระดับหนึ่ง นอกจากนี้ยังไม่สามารถใช้การทดสอบอัตโนมัติได้หากข้อกำหนดยังคงเปลี่ยนแปลงอยู่เสมอ

ความเชื่อที่ 9: ทุกคนสามารถทดสอบแอปพลิเคชันซอฟต์แวร์ได้

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

ความเชื่อที่ 10: ภารกิจเดียวของผู้ทดสอบคือการค้นหาจุดบกพร่อง

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

การทดสอบการประกันคุณภาพและการควบคุมคุณภาพ

คนส่วนใหญ่สับสนเมื่อต้องระบุความแตกต่างระหว่างการประกันคุณภาพการควบคุมคุณภาพและการทดสอบ แม้ว่าจะมีความสัมพันธ์กันและในระดับหนึ่ง แต่ก็ถือได้ว่าเป็นกิจกรรมเดียวกัน แต่มีจุดที่แตกต่างที่ทำให้พวกเขาแตกต่างกัน ตารางต่อไปนี้แสดงจุดที่แยกความแตกต่างของ QA, QC และ Testing

การประกันคุณภาพ ควบคุมคุณภาพ การทดสอบ
QA รวมถึงกิจกรรมที่ทำให้มั่นใจว่ามีการดำเนินการตามกระบวนการขั้นตอนและมาตรฐานในบริบทของการตรวจสอบซอฟต์แวร์ที่พัฒนาและข้อกำหนดที่ตั้งใจไว้ รวมถึงกิจกรรมที่รับรองว่ามีการตรวจสอบซอฟต์แวร์ที่พัฒนาขึ้นตามข้อกำหนดที่บันทึกไว้ (หรือไม่ในบางกรณี) รวมถึงกิจกรรมที่ทำให้มั่นใจได้ว่ามีการระบุจุดบกพร่อง / ข้อผิดพลาด / ข้อบกพร่องในซอฟต์แวร์
มุ่งเน้นไปที่กระบวนการและขั้นตอนมากกว่าการทดสอบจริงในระบบ มุ่งเน้นไปที่การทดสอบจริงโดยการเรียกใช้ซอฟต์แวร์โดยมีจุดประสงค์เพื่อระบุจุดบกพร่อง / ข้อบกพร่องผ่านการดำเนินการตามขั้นตอนและกระบวนการ เน้นการทดสอบจริง
กิจกรรมที่เน้นกระบวนการ กิจกรรมที่มุ่งเน้นผลิตภัณฑ์ กิจกรรมที่มุ่งเน้นผลิตภัณฑ์
กิจกรรมป้องกัน. มันเป็นกระบวนการแก้ไข มันเป็นกระบวนการป้องกัน
เป็นชุดย่อยของ Software Test Life Cycle (STLC) QC ถือได้ว่าเป็นส่วนย่อยของการประกันคุณภาพ การทดสอบเป็นชุดย่อยของการควบคุมคุณภาพ

การตรวจสอบและการตรวจสอบ

Audit- เป็นกระบวนการที่เป็นระบบในการพิจารณาว่ากระบวนการทดสอบจริงดำเนินการอย่างไรภายในองค์กรหรือทีม โดยทั่วไปจะเป็นการตรวจสอบกระบวนการที่เกี่ยวข้องระหว่างการทดสอบซอฟต์แวร์โดยอิสระ ตาม IEEE เป็นการทบทวนกระบวนการที่เป็นเอกสารซึ่งองค์กรต่างๆนำไปปฏิบัติและปฏิบัติตาม ประเภทของการตรวจสอบ ได้แก่ การตรวจสอบการปฏิบัติตามกฎหมายการตรวจสอบภายในและการตรวจสอบระบบ

Inspection- เป็นเทคนิคทางการที่เกี่ยวข้องกับการตรวจสอบทางเทคนิคอย่างเป็นทางการหรือไม่เป็นทางการของสิ่งประดิษฐ์ใด ๆ โดยระบุข้อผิดพลาดหรือช่องว่างใด ๆ ตาม IEEE94 การตรวจสอบเป็นเทคนิคการประเมินอย่างเป็นทางการซึ่งข้อกำหนดการออกแบบหรือรหัสซอฟต์แวร์จะได้รับการตรวจสอบโดยละเอียดโดยบุคคลหรือกลุ่มอื่นที่ไม่ใช่ผู้เขียนเพื่อตรวจหาข้อบกพร่องการละเมิดมาตรฐานการพัฒนาและปัญหาอื่น ๆ

การประชุมการตรวจสอบอย่างเป็นทางการอาจรวมถึงกระบวนการต่อไปนี้: การวางแผนการเตรียมภาพรวมการประชุมการตรวจสอบการทำใหม่และการติดตามผล

การทดสอบและการดีบัก

Testing- เกี่ยวข้องกับการระบุจุดบกพร่อง / ข้อผิดพลาด / ข้อบกพร่องในซอฟต์แวร์โดยไม่แก้ไข โดยปกติผู้เชี่ยวชาญที่มีพื้นฐานด้านการประกันคุณภาพจะเกี่ยวข้องกับการระบุจุดบกพร่อง การทดสอบจะดำเนินการในขั้นตอนการทดสอบ

Debugging- เกี่ยวข้องกับการระบุแยกและแก้ไขปัญหา / จุดบกพร่อง นักพัฒนาที่เขียนโค้ดซอฟต์แวร์จะทำการดีบักเมื่อพบข้อผิดพลาดในโค้ด การดีบักเป็นส่วนหนึ่งของการทดสอบกล่องขาวหรือการทดสอบหน่วย การดีบักสามารถทำได้ในขั้นตอนการพัฒนาในขณะที่ดำเนินการทดสอบหน่วยหรือในขั้นตอนในขณะที่แก้ไขข้อบกพร่องที่รายงาน

หลายองค์กรทั่วโลกพัฒนาและใช้มาตรฐานที่แตกต่างกันเพื่อปรับปรุงคุณภาพของซอฟต์แวร์ที่ต้องการ บทนี้อธิบายสั้น ๆ เกี่ยวกับมาตรฐานที่ใช้กันอย่างแพร่หลายที่เกี่ยวข้องกับการประกันคุณภาพและการทดสอบ

ISO / IEC 9126

มาตรฐานนี้เกี่ยวข้องกับประเด็นต่อไปนี้เพื่อกำหนดคุณภาพของแอปพลิเคชันซอฟต์แวร์ -

  • รุ่นคุณภาพ
  • เมตริกภายนอก
  • เมตริกภายใน
  • เมตริกคุณภาพในการใช้งาน

มาตรฐานนี้นำเสนอคุณลักษณะคุณภาพบางอย่างสำหรับซอฟต์แวร์ใด ๆ เช่น -

  • Functionality
  • Reliability
  • Usability
  • Efficiency
  • Maintainability
  • Portability

คุณลักษณะด้านคุณภาพดังกล่าวข้างต้นยังแบ่งออกเป็นปัจจัยย่อย ๆ อีกซึ่งคุณสามารถศึกษาได้เมื่อคุณศึกษารายละเอียดมาตรฐาน

ISO / IEC 9241-11

ส่วนที่ 11 ของมาตรฐานนี้เกี่ยวข้องกับขอบเขตที่ผู้ใช้ที่ระบุสามารถใช้ผลิตภัณฑ์เพื่อบรรลุเป้าหมายที่กำหนดด้วยประสิทธิผลประสิทธิภาพและความพึงพอใจในบริบทการใช้งานที่ระบุ

มาตรฐานนี้เสนอกรอบที่อธิบายองค์ประกอบการใช้งานและความสัมพันธ์ระหว่างกัน ในมาตรฐานนี้ความสามารถในการใช้งานจะพิจารณาในแง่ของประสิทธิภาพและความพึงพอใจของผู้ใช้ ตามมาตรฐาน ISO 9241-11 ความสามารถในการใช้งานขึ้นอยู่กับบริบทการใช้งานและระดับความสามารถในการใช้งานจะเปลี่ยนไปเมื่อบริบทเปลี่ยนไป

ISO / IEC 25000: 2005

ISO / IEC 25000: 2005 เป็นที่รู้จักกันทั่วไปว่าเป็นมาตรฐานที่ให้แนวทางสำหรับข้อกำหนดและการประเมินคุณภาพซอฟต์แวร์ (SQuaRE) มาตรฐานนี้ช่วยในการจัดระเบียบและเสริมสร้างกระบวนการที่เกี่ยวข้องกับข้อกำหนดด้านคุณภาพซอฟต์แวร์และการประเมินผล ในความเป็นจริง ISO-25000 แทนที่มาตรฐาน ISO แบบเก่าสองมาตรฐานนั่นคือ ISO-9126 และ ISO-14598

SQuaRE แบ่งออกเป็นส่วนย่อย ๆ เช่น -

  • ISO 2500n - กองบริหารคุณภาพ
  • ISO 2501n - แผนกโมเดลคุณภาพ
  • ISO 2502n - กองการวัดคุณภาพ
  • ISO 2503n - กองข้อกำหนดคุณภาพ
  • ISO 2504n - กองประเมินคุณภาพ

เนื้อหาหลักของ SQuaRE ได้แก่ -

  • ข้อกำหนดและคำจำกัดความ
  • โมเดลอ้างอิง
  • คู่มือทั่วไป
  • คู่มือการหารส่วนบุคคล
  • มาตรฐานที่เกี่ยวข้องกับวิศวกรรมความต้องการ (ได้แก่ ข้อกำหนดการวางแผนกระบวนการวัดและประเมินผล)

ISO / IEC 12119

มาตรฐานนี้เกี่ยวข้องกับแพ็คเกจซอฟต์แวร์ที่ส่งมอบให้กับลูกค้า ไม่เน้นหรือจัดการกับกระบวนการผลิตของลูกค้า เนื้อหาหลักเกี่ยวข้องกับรายการต่อไปนี้ -

  • ชุดข้อกำหนดสำหรับซอฟต์แวร์สำเร็จรูป
  • คำแนะนำสำหรับการทดสอบแพคเกจซอฟต์แวร์ที่จัดส่งเทียบกับข้อกำหนดที่ระบุ

เบ็ดเตล็ด

มาตรฐานอื่น ๆ บางส่วนที่เกี่ยวข้องกับกระบวนการ QA และการทดสอบมีการระบุไว้ด้านล่าง -

ซีเนียร์ No มาตรฐานและคำอธิบาย
1

IEEE 829

มาตรฐานสำหรับรูปแบบของเอกสารที่ใช้ในขั้นตอนต่างๆของการทดสอบซอฟต์แวร์

2

IEEE 1061

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

3

IEEE 1059

คำแนะนำสำหรับแผนการตรวจสอบและตรวจสอบซอฟต์แวร์

4

IEEE 1008

มาตรฐานสำหรับการทดสอบหน่วย

5

IEEE 1012

มาตรฐานสำหรับการตรวจสอบและตรวจสอบซอฟต์แวร์

6

IEEE 1028

มาตรฐานสำหรับการตรวจสอบซอฟต์แวร์

7

IEEE 1044

มาตรฐานสำหรับการจำแนกความผิดปกติของซอฟต์แวร์

8

IEEE 1044-1

คำแนะนำสำหรับการจำแนกประเภทของความผิดปกติของซอฟต์แวร์

9

IEEE 830

คู่มือสำหรับการพัฒนาข้อกำหนดข้อกำหนดของระบบ

10

IEEE 730

มาตรฐานสำหรับแผนการประกันคุณภาพซอฟต์แวร์

11

IEEE 1061

มาตรฐานสำหรับเมตริกและระเบียบวิธีคุณภาพซอฟต์แวร์

12

IEEE 12207

มาตรฐานสำหรับกระบวนการวงจรชีวิตซอฟต์แวร์และข้อมูลวงจรชีวิต

13

BS 7925-1

คำศัพท์ที่ใช้ในการทดสอบซอฟต์แวร์

14

BS 7925-2

มาตรฐานสำหรับการทดสอบส่วนประกอบซอฟต์แวร์

ส่วนนี้อธิบายถึงการทดสอบประเภทต่างๆที่อาจใช้ในการทดสอบซอฟต์แวร์ระหว่าง SDLC

การทดสอบด้วยตนเอง

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

ผู้ทดสอบใช้แผนการทดสอบกรณีทดสอบหรือสถานการณ์การทดสอบเพื่อทดสอบซอฟต์แวร์เพื่อให้แน่ใจว่าการทดสอบเสร็จสมบูรณ์ การทดสอบด้วยตนเองยังรวมถึงการทดสอบเชิงสำรวจเนื่องจากผู้ทดสอบจะสำรวจซอฟต์แวร์เพื่อระบุข้อผิดพลาด

การทดสอบอัตโนมัติ

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

นอกเหนือจากการทดสอบการถดถอยแล้วการทดสอบอัตโนมัติยังใช้เพื่อทดสอบแอปพลิเคชันจากมุมมองภาระประสิทธิภาพและความเค้น เพิ่มความครอบคลุมการทดสอบปรับปรุงความแม่นยำและประหยัดเวลาและค่าใช้จ่ายเมื่อเปรียบเทียบกับการทดสอบด้วยตนเอง

จะทำอะไรโดยอัตโนมัติ?

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

นอกจากนี้รายการ GUI ทั้งหมดการเชื่อมต่อกับฐานข้อมูลการตรวจสอบความถูกต้องภาคสนามและอื่น ๆ สามารถทดสอบได้อย่างมีประสิทธิภาพโดยการดำเนินการด้วยตนเองโดยอัตโนมัติ

เมื่อใดที่จะทำให้เป็นอัตโนมัติ?

ควรใช้ Test Automation โดยพิจารณาด้านต่อไปนี้ของซอฟต์แวร์ -

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

วิธีการทำงานอัตโนมัติ

การทำงานอัตโนมัติทำได้โดยใช้ภาษาคอมพิวเตอร์ที่สนับสนุนเช่นการเขียนสคริปต์ VB และแอปพลิเคชันซอฟต์แวร์อัตโนมัติ มีเครื่องมือมากมายที่สามารถใช้ในการเขียนสคริปต์อัตโนมัติ ก่อนที่จะกล่าวถึงเครื่องมือให้เราระบุกระบวนการที่สามารถใช้เพื่อทำให้กระบวนการทดสอบเป็นไปโดยอัตโนมัติ -

  • การระบุพื้นที่ภายในซอฟต์แวร์สำหรับระบบอัตโนมัติ
  • การเลือกเครื่องมือที่เหมาะสมสำหรับการทดสอบอัตโนมัติ
  • การเขียนสคริปต์ทดสอบ
  • การพัฒนาชุดทดสอบ
  • การดำเนินการของสคริปต์
  • สร้างรายงานผลลัพธ์
  • ระบุจุดบกพร่องหรือปัญหาด้านประสิทธิภาพที่อาจเกิดขึ้น

เครื่องมือทดสอบซอฟต์แวร์

เครื่องมือต่อไปนี้สามารถใช้สำหรับการทดสอบอัตโนมัติ -

  • HP Quick Test Professional
  • Selenium
  • IBM Rational Functional Tester
  • SilkTest
  • TestComplete
  • ทดสอบได้ทุกที่
  • WinRunner
  • LoadRunner
  • Visual Studio Test Professional
  • WATIR

มีวิธีการต่างๆที่สามารถใช้สำหรับการทดสอบซอฟต์แวร์ บทนี้อธิบายสั้น ๆ เกี่ยวกับวิธีการที่มี

การทดสอบกล่องดำ

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

ตารางต่อไปนี้แสดงข้อดีและข้อเสียของการทดสอบกล่องดำ

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

การทดสอบกล่องขาว

การทดสอบกล่องขาวเป็นการตรวจสอบตรรกะภายในและโครงสร้างของโค้ดโดยละเอียด เรียกอีกอย่างว่าการทดสอบกล่องขาวglass testing หรือ open-box testing. เพื่อที่จะดำเนินการwhite-box การทดสอบแอปพลิเคชันผู้ทดสอบจำเป็นต้องทราบการทำงานภายในของรหัส

ผู้ทดสอบจำเป็นต้องดูภายในซอร์สโค้ดและค้นหาว่าหน่วย / ส่วนใดของโค้ดทำงานไม่เหมาะสม

ตารางต่อไปนี้แสดงข้อดีและข้อเสียของการทดสอบกล่องขาว

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

การทดสอบกล่องสีเทา

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

การเรียนรู้โดเมนของระบบจะทำให้ผู้ทดสอบมีความได้เปรียบเหนือคนที่มีความรู้ด้านโดเมน จำกัด ไม่เหมือนกับการทดสอบกล่องดำที่ผู้ทดสอบทดสอบเฉพาะส่วนต่อประสานผู้ใช้ของแอปพลิเคชัน ในการทดสอบกล่องสีเทาผู้ทดสอบสามารถเข้าถึงเอกสารการออกแบบและฐานข้อมูลได้ ด้วยความรู้นี้ผู้ทดสอบสามารถเตรียมข้อมูลการทดสอบและสถานการณ์การทดสอบได้ดีขึ้นในขณะที่วางแผนการทดสอบ

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

การเปรียบเทียบวิธีการทดสอบ

ตารางต่อไปนี้แสดงจุดที่แยกความแตกต่างของการทดสอบกล่องดำการทดสอบกล่องสีเทาและการทดสอบกล่องสีขาว

การทดสอบกล่องดำ การทดสอบกล่องสีเทา การทดสอบกล่องขาว
ไม่จำเป็นต้องทราบการทำงานภายในของแอปพลิเคชัน ผู้ทดสอบมีความรู้ จำกัด เกี่ยวกับการทำงานภายในของแอปพลิเคชัน ผู้ทดสอบมีความรู้อย่างเต็มที่เกี่ยวกับการทำงานภายในของแอปพลิเคชัน
หรือที่เรียกว่าการทดสอบแบบกล่องปิดการทดสอบด้วยข้อมูลหรือการทดสอบการทำงาน หรือที่เรียกว่าการทดสอบแบบโปร่งแสงเนื่องจากผู้ทดสอบมีความรู้ จำกัด เกี่ยวกับด้านในของแอปพลิเคชัน หรือที่เรียกว่าการทดสอบกล่องใสการทดสอบโครงสร้างหรือการทดสอบตามรหัส
ดำเนินการโดยผู้ใช้ปลายทางและโดยผู้ทดสอบและนักพัฒนา ดำเนินการโดยผู้ใช้ปลายทางและโดยผู้ทดสอบและนักพัฒนา โดยปกติแล้วผู้ทดสอบและนักพัฒนา
การทดสอบขึ้นอยู่กับความคาดหวังภายนอก - ไม่ทราบพฤติกรรมภายในของแอปพลิเคชัน การทดสอบทำบนพื้นฐานของแผนภาพฐานข้อมูลระดับสูงและแผนภาพกระแสข้อมูล การทำงานภายในเป็นที่ทราบกันดีอยู่แล้วและผู้ทดสอบสามารถออกแบบข้อมูลการทดสอบได้
มีความละเอียดถี่ถ้วนและใช้เวลาน้อยที่สุด บางส่วนใช้เวลานานและละเอียดถี่ถ้วน ประเภทการทดสอบที่ละเอียดถี่ถ้วนและใช้เวลานานที่สุด
ไม่เหมาะสำหรับการทดสอบอัลกอริทึม ไม่เหมาะสำหรับการทดสอบอัลกอริทึม เหมาะสำหรับการทดสอบอัลกอริทึม
สามารถทำได้โดยวิธีการลองผิดลองถูกเท่านั้น โดเมนข้อมูลและขอบเขตภายในสามารถทดสอบได้หากทราบ โดเมนข้อมูลและขอบเขตภายในสามารถทดสอบได้ดีขึ้น

มีระดับที่แตกต่างกันในระหว่างขั้นตอนการทดสอบ ในบทนี้มีคำอธิบายสั้น ๆ เกี่ยวกับระดับเหล่านี้

ระดับของการทดสอบรวมถึงวิธีการต่างๆที่สามารถใช้ได้ในขณะที่ทำการทดสอบซอฟต์แวร์ ระดับหลักของการทดสอบซอฟต์แวร์คือ -

  • การทดสอบการทำงาน

  • การทดสอบแบบไม่ใช้งาน

การทดสอบการทำงาน

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

มีห้าขั้นตอนที่เกี่ยวข้องในขณะทดสอบแอปพลิเคชันสำหรับฟังก์ชันการทำงาน

ขั้นตอน คำอธิบาย
ผม การกำหนดฟังก์ชันการทำงานของแอปพลิเคชันที่ตั้งใจไว้เพื่อดำเนินการ
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) เพื่อเรียกใช้ซอฟต์แวร์บนแพลตฟอร์มต่างๆ

การทดสอบความสามารถในการพกพาถือได้ว่าเป็นส่วนย่อยของการทดสอบระบบเนื่องจากการทดสอบประเภทนี้รวมถึงการทดสอบซอฟต์แวร์โดยรวมเกี่ยวกับการใช้งานในสภาพแวดล้อมที่แตกต่างกัน ฮาร์ดแวร์คอมพิวเตอร์ระบบปฏิบัติการและเบราว์เซอร์เป็นจุดสำคัญของการทดสอบการพกพา เงื่อนไขเบื้องต้นบางประการสำหรับการทดสอบการพกพามีดังต่อไปนี้ -

  • ซอฟต์แวร์ควรได้รับการออกแบบและเข้ารหัสโดยคำนึงถึงความต้องการในการพกพา

  • มีการทดสอบหน่วยกับส่วนประกอบที่เกี่ยวข้อง

  • ทำการทดสอบการผสานรวมแล้ว

  • สร้างสภาพแวดล้อมการทดสอบแล้ว

เอกสารประกอบการทดสอบเกี่ยวข้องกับเอกสารของสิ่งประดิษฐ์ที่ควรพัฒนาก่อนหรือระหว่างการทดสอบซอฟต์แวร์

เอกสารสำหรับการทดสอบซอฟต์แวร์ช่วยในการประมาณค่าความพยายามในการทดสอบความครอบคลุมของการทดสอบการติดตาม / การติดตามความต้องการ ฯลฯ ส่วนนี้จะอธิบายถึงสิ่งประดิษฐ์ที่เป็นเอกสารที่ใช้กันทั่วไปซึ่งเกี่ยวข้องกับการทดสอบซอฟต์แวร์เช่น -

  • แผนการทดสอบ
  • สถานการณ์ทดสอบ
  • กรณีทดสอบ
  • เมทริกซ์การตรวจสอบย้อนกลับ

แผนการทดสอบ

แผนการทดสอบจะแสดงกลยุทธ์ที่จะใช้ในการทดสอบแอปพลิเคชันทรัพยากรที่จะใช้สภาพแวดล้อมการทดสอบที่จะดำเนินการทดสอบและข้อ จำกัด ของการทดสอบและกำหนดการของกิจกรรมการทดสอบ โดยปกติหัวหน้าทีมประกันคุณภาพจะรับผิดชอบในการเขียนแผนการทดสอบ

แผนการทดสอบมีดังต่อไปนี้ -

  • บทนำสู่เอกสารแผนการทดสอบ
  • สมมติฐานขณะทดสอบแอปพลิเคชัน
  • รายชื่อกรณีทดสอบที่รวมอยู่ในการทดสอบแอปพลิเคชัน
  • รายการคุณสมบัติที่จะทดสอบ
  • วิธีการประเภทใดที่จะใช้ในขณะทดสอบซอฟต์แวร์
  • รายการส่งมอบที่ต้องทดสอบ
  • ทรัพยากรที่จัดสรรสำหรับการทดสอบแอปพลิเคชัน
  • ความเสี่ยงใด ๆ ที่เกี่ยวข้องระหว่างกระบวนการทดสอบ
  • กำหนดการของงานและเหตุการณ์สำคัญที่จะบรรลุ

สถานการณ์ทดสอบ

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

คำว่า 'สถานการณ์ทดสอบ' และ 'กรณีทดสอบ' ใช้แทนกันได้อย่างไรก็ตามสถานการณ์ทดสอบมีหลายขั้นตอนในขณะที่กรณีทดสอบมีขั้นตอนเดียว เมื่อมองจากมุมมองนี้สถานการณ์ทดสอบเป็นกรณีทดสอบ แต่รวมถึงกรณีทดสอบหลายกรณีและลำดับที่ควรดำเนินการ นอกเหนือจากนี้การทดสอบแต่ละครั้งจะขึ้นอยู่กับผลลัพธ์จากการทดสอบครั้งก่อน

กรณีทดสอบ

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

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

  • รหัสกรณีทดสอบ
  • โมดูลผลิตภัณฑ์
  • รุ่นผลิตภัณฑ์
  • ประวัติการแก้ไข
  • Purpose
  • Assumptions
  • Pre-conditions
  • Steps
  • ผลที่คาดว่าจะได้รับ
  • ผลลัพธ์ที่แท้จริง
  • Post-conditions

กรณีการทดสอบหลายกรณีได้มาจากสถานการณ์การทดสอบเดียว นอกจากนี้ในบางครั้งกรณีการทดสอบหลายกรณีถูกเขียนขึ้นสำหรับซอฟต์แวร์ตัวเดียวซึ่งเรียกรวมกันว่าชุดทดสอบ

เมทริกซ์การตรวจสอบย้อนกลับ

Traceability Matrix (หรือที่เรียกว่า Requirement Traceability Matrix - RTM) เป็นตารางที่ใช้ในการติดตามข้อกำหนดระหว่างวงจรชีวิตการพัฒนาซอฟต์แวร์ สามารถใช้สำหรับการติดตามไปข้างหน้า (เช่นจากข้อกำหนดสู่การออกแบบหรือการเข้ารหัส) หรือย้อนกลับ (เช่นจากการเข้ารหัสเป็นข้อกำหนด) มีเทมเพลตที่ผู้ใช้กำหนดเองมากมายสำหรับ RTM

ข้อกำหนดแต่ละข้อในเอกสาร RTM เชื่อมโยงกับกรณีทดสอบที่เกี่ยวข้องเพื่อให้การทดสอบสามารถทำได้ตามข้อกำหนดที่กล่าวถึง นอกจากนี้ยังรวม Bug ID และเชื่อมโยงกับข้อกำหนดที่เกี่ยวข้องและกรณีทดสอบ เป้าหมายหลักสำหรับเมทริกซ์นี้คือ -

  • ตรวจสอบให้แน่ใจว่าซอฟต์แวร์ได้รับการพัฒนาตามข้อกำหนดที่กล่าวถึง
  • ช่วยในการค้นหาสาเหตุของจุดบกพร่องใด ๆ
  • ช่วยในการติดตามเอกสารที่พัฒนาในช่วงต่างๆของ SDLC

การประมาณความพยายามที่จำเป็นสำหรับการทดสอบเป็นงานหลักและสำคัญอย่างหนึ่งใน SDLC การประมาณค่าที่ถูกต้องช่วยในการทดสอบซอฟต์แวร์ที่มีความครอบคลุมสูงสุด ส่วนนี้อธิบายถึงเทคนิคบางอย่างที่มีประโยชน์ในการประมาณความพยายามที่จำเป็นสำหรับการทดสอบ

การวิเคราะห์จุดทำงาน

วิธีนี้ขึ้นอยู่กับการวิเคราะห์ความต้องการของผู้ใช้ที่ใช้งานได้ของซอฟต์แวร์ตามประเภทต่อไปนี้ -

  • Outputs
  • Inquiries
  • Inputs
  • ไฟล์ภายใน
  • ไฟล์ภายนอก

การวิเคราะห์จุดทดสอบ

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

วิธี Mark-II

เป็นวิธีการประมาณค่าที่ใช้ในการวิเคราะห์และวัดการประมาณค่าตามมุมมองการทำงานของผู้ใช้ปลายทาง ขั้นตอนสำหรับวิธี Mark-II มีดังต่อไปนี้ -

  • กำหนดทัศนะ
  • วัตถุประสงค์และประเภทของการนับ
  • กำหนดขอบเขตของการนับ
  • ระบุธุรกรรมเชิงตรรกะ
  • ระบุและจัดประเภทประเภทเอนทิตีข้อมูล
  • นับประเภทองค์ประกอบข้อมูลอินพุต
  • นับขนาดการทำงาน

เบ็ดเตล็ด

คุณสามารถใช้เทคนิคการประมาณอื่น ๆ ที่เป็นที่นิยมเช่น -

  • เทคนิคเดลฟี
  • การประมาณตามการเปรียบเทียบ
  • การประมาณค่าตามการแจงนับกรณีทดสอบ
  • การประมาณการตามงาน (กิจกรรม)
  • วิธี IFPUG