ความซับซ้อนของไซโคลมาติกในการทดสอบซอฟต์แวร์ (ตัวอย่าง)

ความซับซ้อนของไซโคลมาติกของ McCabe คืออะไร?

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

เส้นทางอิสระถูกกำหนดให้เป็นเส้นทางที่มีขอบอย่างน้อยหนึ่งเส้นซึ่งไม่เคยถูกสำรวจมาก่อนในเส้นทางอื่น

ตัวชี้วัดนี้ได้รับการพัฒนาโดย Thomas J. McCabe ในปี 1976 และขึ้นอยู่กับการแสดงโฟลว์การควบคุมของโปรแกรม โฟลว์การควบคุมแสดงโปรแกรมเป็นกราฟซึ่งประกอบด้วยโหนดและขอบ

ในกราฟ โหนดแสดงถึงงานการประมวลผล ในขณะที่ขอบแสดงถึงโฟลว์การควบคุมระหว่างโหนด

ความซับซ้อนของไซโคลมาติกของแม็คเคบ

สัญลักษณ์โฟลว์กราฟสำหรับโปรแกรม

สัญลักษณ์โฟลว์กราฟสำหรับโปรแกรมจะกำหนดโหนดต่างๆ ที่เชื่อมต่อผ่านขอบ ด้านล่างนี้คือไดอะแกรมโฟลว์สำหรับคำสั่งต่างๆ เช่น if-else, While, until และลำดับโฟลว์ปกติ

สัญลักษณ์โฟลว์กราฟสำหรับโปรแกรม

วิธีการคำนวณความซับซ้อนของไซโคลมาติก

การเป็นตัวแทนทางคณิตศาสตร์:

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

V(G) = E - N + 2

ที่ไหน

E – จำนวนขอบ

N – จำนวนโหนด

V (G) = P + 1

โดยที่ P = จำนวนโหนดเพรดิเคต (โหนดที่มีเงื่อนไข)

ตัวอย่าง -

i = 0;
n=4; //N-Number of nodes present in the graph

while (i<n-1) do
j = i + 1;

while (j<n) do

if A[i]<A[j] then
swap(A[i], A[j]);

end do;
j=j+1;

end do;

Flow Graph ของโปรแกรมนี้จะเป็น

คำนวณความซับซ้อนของไซโคลมาติก

การคำนวณทางคณิตศาสตร์

  • วี(ก) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (โหนดเงื่อนไขคือ 1,2 และ 3 โหนด)
  • ชุดพื้นฐาน – ชุดของเส้นทางการดำเนินการที่เป็นไปได้ของโปรแกรม
  • 1, 7
  • 1, 2, 6, 1, 7
  • รถประจำทางสาย 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

สมบัติของความซับซ้อนของไซโคลมาติก

ต่อไปนี้เป็นคุณสมบัติของความซับซ้อนของไซโคลมาติก:

  1. V (G) คือจำนวนเส้นทางอิสระสูงสุดในกราฟ
  2. วี (ช) >=1
  3. G จะมีเส้นทางเดียวถ้า V (G) = 1
  4. ลดความซับซ้อนให้เหลือเพียง 10

ตัวชี้วัดนี้มีประโยชน์สำหรับการทดสอบซอฟต์แวร์อย่างไร

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

เมตริกนี้มีประโยชน์เนื่องจากคุณสมบัติของความซับซ้อนของไซโคลมาติก (M) –

  1. M สามารถเป็นจำนวนกรณีทดสอบเพื่อให้ครอบคลุมสาขา (Upper Bound)
  2. M สามารถเป็นจำนวนเส้นทางผ่านกราฟได้ (ขอบเขตล่าง)

ลองพิจารณาตัวอย่างนี้ -

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

ความซับซ้อนของไซโคลมาติกสำหรับโปรแกรมนี้จะเป็น 8-7+2=3

เนื่องจากความซับซ้อนคำนวณไว้ที่ 3 จึงจำเป็นต้องมีกรณีทดสอบ XNUMX กรณีเพื่อให้ครอบคลุมเส้นทางทั้งหมดสำหรับตัวอย่างข้างต้น

ขั้นตอนที่ต้องปฏิบัติตาม:

ควรปฏิบัติตามขั้นตอนต่อไปนี้สำหรับการคำนวณความซับซ้อนของ Cyclomatic และการออกแบบกรณีทดสอบ

ขั้นตอนที่ 1 – การสร้างกราฟด้วยโหนดและขอบจากโค้ด

ขั้นตอนที่ 2 – การระบุเส้นทางที่เป็นอิสระ

ขั้นตอนที่ 3 – การคำนวณความซับซ้อนของไซโคลมาติก

ขั้นตอนที่ 4 – การออกแบบกรณีทดสอบ

เมื่อสร้างชุดพื้นฐานแล้ว กรณีทดสอบ ควรเขียนเพื่อดำเนินการทุกเส้นทาง

ข้อมูลเพิ่มเติมเกี่ยวกับวี (G)

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

ตารางต่อไปนี้ให้ภาพรวมเกี่ยวกับจำนวนความซับซ้อนและความหมายที่สอดคล้องกันของ v (G):

จำนวนความซับซ้อน ความหมาย
1-10 รหัสที่มีโครงสร้างและเขียนได้ดี

ความสามารถในการทดสอบสูง

ต้นทุนและความพยายามน้อยลง

10-20 ซับซ้อน Code

ความสามารถในการทดสอบปานกลาง

ต้นทุนและความพยายามอยู่ในระดับปานกลาง

20-40 ซับซ้อนมาก Code

ความสามารถในการทดสอบต่ำ

ต้นทุนและความพยายามสูง

> 40 ไม่สามารถทดสอบได้เลย

ต้นทุนและความพยายามที่สูงมาก

เครื่องมือสำหรับการคำนวณความซับซ้อนของไซโคลมาติก:

มีเครื่องมือมากมายสำหรับการกำหนดความซับซ้อนของแอปพลิเคชัน เครื่องมือคำนวณความซับซ้อนบางตัวใช้สำหรับเทคโนโลยีเฉพาะ ความซับซ้อนสามารถพบได้จากจำนวนจุดตัดสินใจในโปรแกรม จุดตัดสินใจได้แก่ คำสั่ง if, for, for-each, while, do, catch, case ในโค้ดต้นฉบับ

ตัวอย่างเครื่องมือได้แก่

  • โอคลินท์ – ตัววิเคราะห์โค้ดแบบคงที่สำหรับ C และภาษาที่เกี่ยวข้อง
  • ส่วนเสริมตัวสะท้อนแสง – Code เมตริกสำหรับแอสเซมบลี .NET
  • จีเมตริกส์ – ค้นหาตัวชี้วัดใน Java แอปพลิเคชันที่เกี่ยวข้อง

การใช้ความซับซ้อนของไซโคลมาติก:

ความซับซ้อนของไซโคลมาติกอาจพิสูจน์ได้ว่ามีประโยชน์มากใน

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

สรุป

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

สรุปโพสต์นี้ด้วย: