การทดสอบเส้นทางและการทดสอบเส้นทางพื้นฐานในซอฟต์แวร์ พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การทดสอบเส้นทางพื้นฐาน (Basis Path Testing) เป็นเทคนิคแบบกล่องขาว (white box) ที่สร้างกรณีทดสอบจากเส้นทางเชิงตรรกะผ่านโปรแกรม โดยใช้กราฟการไหลของควบคุมและความซับซ้อนเชิงวัฏจักร (cyclomatic complexity) เพื่อค้นหาชุดเส้นทางอิสระขั้นต่ำ

Path Testing ในการทดสอบซอฟต์แวร์คืออะไร?
การทดสอบเส้นทางเป็นวิธีการทดสอบโครงสร้างที่เกี่ยวข้องกับการใช้ซอร์สโค้ดของโปรแกรมเพื่อค้นหาเส้นทางปฏิบัติการที่เป็นไปได้ทั้งหมด ช่วยในการระบุข้อบกพร่องทั้งหมดที่อยู่ในโค้ดชิ้นเดียว วิธีการนี้ออกแบบมาเพื่อดำเนินการเส้นทางทั้งหมดหรือที่เลือกผ่านโปรแกรมคอมพิวเตอร์
โปรแกรมที่ไม่ซับซ้อนใดๆ ก็ตามจะมีเส้นทางการทำงานที่เป็นไปได้มากมาย การทดสอบทุกเส้นทางนั้นทั้งยากและใช้เวลานาน และส่วนใหญ่ก็ซ้ำซ้อนกัน การทดสอบเส้นทางพื้นฐานช่วยลดความซ้ำซ้อนนั้นลงโดยการระบุชุดเส้นทางที่เล็กที่สุดที่ยังคงทดสอบทุกคำสั่งและทุกสาขาอย่างน้อยหนึ่งครั้ง
การทดสอบเส้นทางพื้นฐานในวิศวกรรมซอฟต์แวร์
การทดสอบเส้นทางพื้นฐาน สาขาวิชาวิศวกรรมซอฟต์แวร์คือ ก สีขาว Box การทดสอบ วิธีการกำหนดกรณีทดสอบตามโฟลว์หรือเส้นทางลอจิคัลที่สามารถนำมาใช้ผ่านโปรแกรมได้ วัตถุประสงค์ของการทดสอบเส้นทางพื้นฐานคือการกำหนดจำนวนเส้นทางอิสระ ดังนั้นจึงสามารถกำหนดจำนวนกรณีการทดสอบที่ต้องการได้อย่างชัดเจนเพื่อเพิ่มความครอบคลุมการทดสอบให้สูงสุด
In วิศวกรรมซอฟต์แวร์การทดสอบเส้นทางพื้นฐานเกี่ยวข้องกับการดำเนินการบล็อกที่เป็นไปได้ทั้งหมดในโปรแกรม และบรรลุการครอบคลุมเส้นทางสูงสุดโดยมีจำนวนกรณีทดสอบน้อยที่สุด เป็นวิธีไฮบริดของการทดสอบสาขาและการทดสอบเส้นทาง
ตัวอย่างง่ายๆ ช่วยให้เข้าใจแนวคิดได้ชัดเจนยิ่งขึ้น
แผนผังการไหลด้านบนมีคำสั่งเงื่อนไข ดังนั้นการควบคุมจึงสามารถเข้าถึงทางออกได้มากกว่าหนึ่งเส้นทาง จำเป็นต้องมีเส้นทางอิสระสามเส้นทางเพื่อครอบคลุมส่วนนี้:
- เส้นทาง 1: 1,2,3,5,6, 7
- เส้นทาง 2: 1,2,4,5,6, 7
- เส้นทาง 3: 1, 6, 7 น
วิธีการวาดกราฟควบคุมการไหล
ทุกขั้นตอนของการทดสอบเส้นทางพื้นฐานขึ้นอยู่กับแผนผังการไหลของการควบคุม ดังนั้นจึงควรสร้างแผนผังดังกล่าวให้มีความแม่นยำ
- โหนด: ลำดับของคำสั่งที่ทำงานพร้อมกันเสมอ จะแสดงเป็นวงกลม ลำดับของคำสั่งที่ไม่มีการแยกสาขาจะรวมกันเป็นจุดเดียว
- ขอบ: การถ่ายโอนการควบคุมจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง แสดงด้วยลูกศร เส้นเชื่อมเป็นวิธีการเดียวที่การควบคุมจะเคลื่อนย้ายได้
- โหนดภาคแสดง: โหนดที่มีเงื่อนไข โดยมีเส้นเชื่อมออกจากโหนดนั้นตั้งแต่สองเส้นขึ้นไป ปัจจัยเหล่านี้ส่งผลต่อจำนวนความซับซ้อน
- ภาค: พื้นที่ซึ่งถูกล้อมรอบด้วยขอบและจุดเชื่อมต่อ จำนวนของภูมิภาคบวกหนึ่งจะเท่ากับความซับซ้อนเชิงวัฏจักรด้วย
ลองพิจารณาโมดูลสั้นๆ ที่มีสองตัวเลือก:
if (a > b) { // node 1, predicate max = a; // node 2 } else { max = b; // node 3 } if (max > limit) { // node 4, predicate alert(); // node 5 } return max; // node 6
กราฟมี 6 โหนดและ 6 ขอบ ทำให้ได้ V(G) = 6 – 6 + 2 = 2 ตามสูตรขอบ การนับเงื่อนไขให้คำตอบเดียวกันได้เร็วกว่า: 2 การตัดสินใจบวก 1 เท่ากับ 3 เส้นทางอิสระผ่านสองสาขาที่นำมารวมกัน ใช้รูปแบบใดก็ได้ที่คุณสามารถคำนวณได้อย่างน่าเชื่อถือ และตรวจสอบกับอีกรูปแบบหนึ่ง
สองกฎที่ช่วยป้องกันข้อผิดพลาดส่วนใหญ่ ประการแรก สภาวะที่ซับซ้อน เช่น ถ้า (x > 0 และ y > 0) นับเป็นโหนดเงื่อนไขสองโหนด ไม่ใช่หนึ่งโหนด เพราะการลัดวงจรสร้างการตัดสินใจครั้งที่สอง ประการที่สอง ลูปจะสร้างโหนดเงื่อนไขหนึ่งโหนดเสมอ ไม่ว่าจะวนซ้ำกี่ครั้งก็ตาม
ขั้นตอนการทดสอบเส้นทางพื้นฐาน
ขั้นตอนพื้นฐานที่เกี่ยวข้องกับการทดสอบเส้นทางพื้นฐานประกอบด้วย
- วาดกราฟควบคุม (เพื่อกำหนดเส้นทางโปรแกรมต่างๆ)
- คำนวณ ความซับซ้อนของไซโคลมาติก (หน่วยเมตริกเพื่อกำหนดจำนวนเส้นทางอิสระ)
- ค้นหาชุดเส้นทางพื้นฐาน
- ผลิต กรณีทดสอบ เพื่อออกกำลังกายในแต่ละเส้นทาง
ข้อดีและข้อจำกัดของการทดสอบเส้นทางพื้นฐาน
ข้อดีของการทดสอบเส้นทางพื้นฐาน
- ช่วยลดการทดสอบซ้ำซ้อน
- มันเน้นความสนใจไปที่ตรรกะของโปรแกรม
- วิธีการนี้แทนที่การเลือกกรณีทดสอบตามอำเภอใจด้วยพื้นฐานเชิงวิเคราะห์
- กรณีทดสอบซึ่งชุดพื้นฐานการฝึกจะดำเนินการทุกคำสั่งในโปรแกรมอย่างน้อยหนึ่งครั้ง
ข้อจำกัดของการทดสอบเส้นทางพื้นฐาน
- ไม่สามารถค้นหารหัสที่หายไปได้ ข้อกำหนดที่ไม่เคยถูกนำไปใช้จะไม่มีเส้นทาง ดังนั้นจึงจะไม่มีการสร้างการทดสอบสำหรับข้อกำหนดนั้น การทดสอบตามเส้นทางพื้นฐานจะต้องควบคู่ไปกับการทดสอบตามข้อกำหนด
- จำนวนเส้นทางเพิ่มขึ้นอย่างรวดเร็ว ลูปซ้อนกันและเงื่อนไขที่ซับซ้อนทำให้ความซับซ้อนเพิ่มขึ้นอย่างรวดเร็ว และโมดูลที่มี V(G) มากกว่า 20 จะไม่สามารถจัดการได้ด้วยวิธีนี้
- การมีขอบเขตครอบคลุมไม่ได้หมายความว่าถูกต้องเสมอไป การรันเส้นทางของโค้ดเป็นการพิสูจน์ว่าโค้ดทำงานได้ ไม่ได้หมายความว่าโค้ดจะให้คำตอบที่ถูกต้อง การทดสอบแต่ละครั้งยังคงต้องการการยืนยันที่มีความหมายอยู่ดี
- เส้นทางที่ขึ้นอยู่กับข้อมูล บางเส้นทางสามารถเข้าถึงได้ด้วยการใช้ชุดข้อมูลป้อนเข้าเฉพาะ ซึ่งอาจสร้างได้ยากหรือเป็นไปไม่ได้เลย

