Independent Paths Coverage
TIL
763
White

Tuấn Nguyễn viết ngày 12/03/2018

Định nghĩa

Independent Paths Coverage (IPC) là một trong những kĩ thuật xây dựng test case cho Path Testing trong White-box testing.
Một chương trình được biểu diễn bởi Control Flow Graph (CFG), nếu ta test hết tất cả các đường đi thì rất mất thời gian và công sức. Do vậy cần một chiến lược để xây dựng bộ test cho khả năng tìm ra lỗi là lớn nhất. IPC là một trong số đó
Independent path (đường đi không phụ thuộc) được xác định là đường đi sao cho ít nhất có một cạnh mới không nằm trong các indepent path đã được liệt kê.
Để hiểu rõ hơn ta có ví dụ sau:
alt text
Trong hình trên ta có các independent path là:

  • P1: A-B-C-G
  • P2: A-B-C-B-C-G
  • P3: A-B-E-F-G
  • P4: A-D-E-F-G
  • P5: A-D-F-G

Với P6: A-B-C-B-E-F-G (trùng các cạnh của P2 và P3) và P7: A-B-C-B-C-B-C-G (trùng các cạnh của P1 và P2) thì không là independent path.

Cách tính

Để hiểu cách tính ta cần làm rõ một số định nghĩa trong CFG.
alt text

  • Process Node: là các node hình tròn chỉ câu lệnh tuần tự.
  • Decision Node: là các note tam giác chỉ câu lệnh điều kiện
  • Edge: các đường nối các node
  • Region: vùng được bao bọc bởi node và edgeau

Ta có các công thức sau:

  • Independent Paths = Edges – Nodes + 2
  • Independent Paths = Decisons + 1
  • Independent Paths = Regions + 1

Với hình trên ta có lần lượt edges = 7, nodes = 6, decisons = 2, regions = 2 và cả ba phép tính ta đều có independent paths = 3.

Cách xác định

Để liệt kê các independen paths không nhầm lẫn ta sử dụng phương pháp của McBase. Đó là:

  1. Chọn một đường "base line". Đường đi có nhiều decisons nhất có thể.
  2. Để chọn đường tiếp theo, thay đổi đầu ra của decison đầu tiên và giữ nhiều nhất có thể đường đi còn lại.
  3. Tiếp tục cho đến khi hết decison được thay đổi đầu ra, nếu số independent path đã đủ (cách tính như trên) thì đã xong.
  4. Nếu chưa hoàn thành thì chọn một baseline dựa vào indepedent path đã liệt kê rồi thực hiện các bước 2,3.

Quay trở lại với hình đầu bài viết. Ta làm như sau:

  • Số indenpent paths là: 5
  • Chọn baseline. P1: A-B-C-B-E-F-G
  • Thay đổi đầu ra của decison đầu tiên là A ta được: A-D-E-F-G
  • Thay đổi đầu ra của decison thứ 2 là B ta được: A-B-E-F-G
  • Thay đổi đầu ra của decison thứ 3 là C ta được A-B-C-G
  • Hết decison, chọn baseline tiếp từ A-D-E-F-G thay đổi đầu ra của D ta được A-D-F-G

Đủ 5 paths rồi, ta dừng tại đây.
Đó là toàn bộ những gì mình tìm hiểu về independent path coverage, có gì sai sót mong các bạn góp ý.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Tuấn Nguyễn

5 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
4 3
Đặt vấn đề Khi viết RestApi ta chỉ thường chọn một số thông tin để truyền về client. Ví dụ như thông tin user thì không cần truyền password chẳng h...
Tuấn Nguyễn viết hơn 2 năm trước
4 3
White
4 2
Alias là gì? Alias là đường dẫn tuyệt đối thay thế cho đường dẫn tương đối khi import các module. Ví dụ như sau: javascript // thay vì dùng import ...
Tuấn Nguyễn viết 10 tháng trước
4 2
White
3 1
Vấn đề Hôm nay mình ngồi làm project Calculator trong FreeCodeCamp cần implement thuật toán tính biểu thức trung vị. Nhưng trước hết...
Tuấn Nguyễn viết hơn 2 năm trước
3 1
Bài viết liên quan
White
0 4
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết hơn 2 năm trước
0 4
White
4 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết hơn 1 năm trước
4 0
White
23 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 4 năm trước
23 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
5 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!