Độ phức tạp chu kỳ của Mccabe: Tính toán bằng Đồ thị dòng chảy (Ví dụ)

Mục lục:

Anonim

Để hiểu Độ phức tạp Cyclomatic, trước tiên hãy hiểu -

Số liệu phần mềm là gì?

Phép đo không là gì khác ngoài chỉ báo định lượng về kích thước / kích thước / công suất của một thuộc tính của sản phẩm / quy trình. Chỉ số phần mềm được định nghĩa là thước đo định lượng của một thuộc tính mà hệ thống phần mềm sở hữu liên quan đến Chi phí, Chất lượng, Kích thước và Lịch trình.

Thí dụ-

Đo lường - Số lỗiChỉ số - Số lỗi được tìm thấy trên mỗi người

Trong hướng dẫn này, bạn sẽ học-

  • Số liệu phần mềm là gì?
  • Cyclomatic Complexity là gì?
  • Kí hiệu biểu đồ luồng cho một chương trình:
  • Cách tính độ phức tạp Cyclomatic
  • Các thuộc tính của độ phức tạp Cyclomatic:
  • Làm thế nào số liệu này hữu ích cho kiểm thử phần mềm?
  • Thêm trên V (G):
  • Các công cụ để tính toán độ phức tạp Cyclomatic:
  • Công dụng của phức hợp Cyclomatic:

Độ phức tạp của Cyclomatic trong Kiểm thử phần mềm

Độ phức tạp của Cyclomatic trong Kiểm thử phần mềm là một số liệu kiểm tra được sử dụng để đo độ phức tạp của một chương trình phần mềm. Nó là một thước đo định lượng của các đường dẫn độc lập trong mã nguồn của một chương trình phần mềm. Độ phức tạp chu kỳ có thể được tính toán bằng cách sử dụng đồ thị luồng điều khiển hoặc đối với các chức năng, mô-đun, phương pháp hoặc lớp trong một chương trình phần mềm.

Đường dẫn độc lập được định nghĩa là đường đi có ít nhất một cạnh chưa được đi qua trước đó trong bất kỳ đường dẫn nào khác.

Số liệu này được phát triển bởi Thomas J. McCabe vào năm 1976 và nó dựa trên biểu diễn luồng điều khiển của chương trình. Luồng điều khiển mô tả một chương trình dưới dạng một đồ thị bao gồm các nút và cạnh.

Trong đồ thị, các nút đại diện cho các tác vụ xử lý trong khi các cạnh thể hiện luồng điều khiển giữa các nút.

Kí hiệu biểu đồ luồng cho một chương trình:

Ký hiệu Đồ thị dòng chảy cho một chương trình xác định một số nút được kết nối qua các cạnh. Dưới đây là Sơ đồ luồng cho các câu lệnh như if-else, While, Until và trình tự thông thường của luồng.

Cách tính độ phức tạp Cyclomatic

Biểu diễn toán học:

Về mặt toán học, nó được thiết lập các đường dẫn độc lập thông qua sơ đồ đồ thị. Độ phức tạp của mã của chương trình có thể được xác định bằng công thức:

V (G) = E - N + 2

Ở đâu,

E - Số cạnh

N - Số nút

V (G) = P + 1

Trong đó P = Số nút vị từ (nút chứa điều kiện)

Thí dụ -

i = 0;n = 4; // N-Số nút có trong biểu đồtrong khi (tôi 

Biểu đồ luồng cho chương trình này sẽ là

Tính toán về mặt toán học,

  • V (G) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (Các nút điều kiện là 1,2 và 3 nút)
  • Tập cơ sở - Tập hợp các đường dẫn thực thi có thể có của một chương trình
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Các thuộc tính của độ phức tạp Cyclomatic:

Sau đây là các thuộc tính của độ phức tạp Cyclomatic:

  1. V (G) là số đường đi độc lập lớn nhất trong biểu đồ
  2. V (G)> = 1
  3. G sẽ có một đường đi nếu V (G) = 1
  4. Giảm thiểu độ phức tạp xuống 10

Làm thế nào số liệu này hữu ích cho kiểm thử phần mềm?

Kiểm thử đường dẫn cơ sở là một trong kỹ thuật Hộp trắng và nó đảm bảo thực thi ít nhất một câu lệnh trong quá trình kiểm tra. Nó kiểm tra từng đường dẫn độc lập tuyến tính thông qua chương trình, có nghĩa là các trường hợp kiểm tra số, sẽ tương đương với độ phức tạp theo chu kỳ của chương trình.

Số liệu này hữu ích vì các thuộc tính của độ phức tạp Cyclomatic (M) -

  1. M có thể là số trường hợp thử nghiệm để đạt được phạm vi bao phủ nhánh (Giới hạn trên)
  2. M có thể là số đường đi qua đồ thị. (Chặn dưới)

Hãy xem xét ví dụ này -

Nếu (Điều kiện 1)Tuyên bố 1KhácTuyên bố 2Nếu (Điều kiện 2)Tuyên bố 3KhácTuyên bố 4

Độ phức tạp Cyclomatic cho chương trình này sẽ là 8-7 + 2 = 3.

Vì độ phức tạp đã được tính là 3, nên ba trường hợp thử nghiệm là cần thiết để bao phủ đường dẫn hoàn chỉnh cho ví dụ trên.

Các bước cần tuân theo:

Các bước sau nên được thực hiện để tính toán độ phức tạp Cyclomatic và thiết kế các trường hợp thử nghiệm.

Bước 1 - Xây dựng đồ thị với các nút và cạnh từ mã

Bước 2 - Xác định các đường dẫn độc lập

Bước 3 - Tính toán độ phức tạp theo chu kỳ

Bước 4 - Thiết kế các trường hợp thử nghiệm

Sau khi tập hợp cơ bản được hình thành, các TRƯỜNG HỢP KIỂM TRA phải được viết để thực hiện tất cả các đường dẫn.

Thêm trên V (G):

Độ phức tạp Cyclomatic có thể được tính toán thủ công nếu chương trình nhỏ. Cần sử dụng các công cụ tự động nếu chương trình rất phức tạp vì điều này liên quan đến nhiều đồ thị luồng hơn. Dựa trên số lượng phức tạp, nhóm có thể kết luận về các hành động cần được thực hiện để đo lường.

Bảng sau đây cung cấp tổng quan về số phức tạp và ý nghĩa tương ứng của v (G):

Số phức tạp Ý nghĩa
1-10 Mã có cấu trúc và được viết tốt Chi phí kiểm tra cao và nỗ lực ít hơn
10-20 Mã phức hợp Khả năng kiểm tra Trung bình Chi phí và nỗ lực là Trung bình
20-40 Mã rất phức tạp Chi phí kiểm tra thấp và nỗ lực cao
> 40 Hoàn toàn không thể kiểm tra được Chi phí và nỗ lực rất cao

Các công cụ để tính toán độ phức tạp Cyclomatic:

Nhiều công cụ có sẵn để xác định độ phức tạp của ứng dụng. Một số công cụ tính toán độ phức tạp được sử dụng cho các công nghệ cụ thể. Độ phức tạp có thể được tìm thấy bởi số điểm quyết định trong một chương trình. Các điểm quyết định là các câu lệnh if, for, for-each, while, do, catch, case trong mã nguồn.

Ví dụ về các công cụ là

  • OCLint - Trình phân tích mã tĩnh cho C và các ngôn ngữ liên quan
  • Reflector Add In - Số liệu mã cho các hội đồng .NET
  • GMetrics - Tìm số liệu trong các ứng dụng liên quan đến Java

Công dụng của phức hợp Cyclomatic:

Cyclomatic Complexity có thể được chứng minh là rất hữu ích trong

  • Giúp các nhà phát triển và người kiểm tra xác định việc thực thi đường dẫn độc lập
  • Các nhà phát triển có thể đảm bảo rằng tất cả các đường dẫn đã được kiểm tra ít nhất một lần
  • Giúp chúng tôi tập trung hơn vào những con đường chưa được khám phá
  • Cải thiện mức độ bao phủ của mã trong Kỹ thuật phần mềm
  • Đánh giá rủi ro liên quan đến ứng dụng hoặc chương trình
  • Sử dụng các chỉ số này sớm trong chu kỳ sẽ giảm nhiều rủi ro hơn đối với chương trình

Phần kết luận:

Độ phức tạp của Cyclomatic là chỉ số phần mềm hữu ích cho Kiểm tra có cấu trúc hoặc Hộp trắng. Nó chủ yếu được sử dụng để đánh giá độ phức tạp của một chương trình. Nếu các điểm quyết định nhiều hơn, thì độ phức tạp của chương trình cũng nhiều hơn. Nếu chương trình có số phức tạp cao, thì khả năng xảy ra lỗi cao với việc tăng thời gian bảo trì và xử lý sự cố.