Kiểm thử phần mềm (Software Testing) là một hoạt động thiết yếu trong đảm bảo chất lượng, được nhiều tổ chức phần mềm phân bổ tới 40% nguồn lực. Trong các phương pháp kiểm thử chính, Kiểm thử Hộp trắng (White Box Testing) được đánh giá là đặc biệt hiệu quả trong việc phát hiện và giải quyết các lỗi (bugs) trước khi chúng gây ra sự cố nghiêm trọng. Phương pháp này yêu cầu người kiểm thử phải có kiến thức về cấu trúc nội bộ và mã hóa bên trong chương trình.
Một trong những kỹ thuật được sử dụng phổ biến nhất trong Kiểm thử Hộp trắng là Kiểm thử Đường Cơ sở (Basis Path Testing)
Bản chất của Kiểm thử Đường dẫn Cơ sở
Kiểm thử Đường dẫn Cơ sở được sử dụng để đánh giá độ phức tạp logic của thiết kế quy trình (procedural design). Dựa trên đánh giá này, một tập hợp cơ bản các đường dẫn thực thi (basis set of execution paths) sẽ được mô tả.
Để thực hiện kỹ thuật này và biểu diễn luồng kiểm soát (control flow) trong chương trình, người ta sử dụng sơ đồ luồng (flow graphs). Các thành phần chính của sơ đồ luồng bao gồm:
- Nút (Node): Đại diện cho một hoặc nhiều câu lệnh quy trình. Một nút chứa điều kiện được gọi là nút vị ngữ (predicate node).
- Cạnh (Edges): Đại diện cho luồng kiểm soát giữa các nút.

Độ phức tạp Cyclomatic: Số liệu trọng tâm
Khái niệm trung tâm của Kiểm thử Đường dẫn Cơ sở là Độ phức tạp Cyclomatic (Cyclomatic Complexity). Đây là một số liệu phần mềm, mà giá trị của nó định nghĩa số lượng đường dẫn độc lập (independent paths) trong tập hợp cơ sở của một chương trình. Một đường dẫn độc lập là bất kỳ đường dẫn nào đi qua chương trình mà giới thiệu ít nhất một tập hợp câu lệnh xử lý mới.
Đối với một đồ thị $G$ đã cho, Độ phức tạp Cyclomatic $V(G)$ có thể được tính bằng ba cách tương đương:
1. Bằng số lượng vùng (regions) trong sơ đồ luồng.
2. $V(G) = E – N + 2$, trong đó $E$ là số lượng cạnh (edges) và $N$ là số lượng nút (nodes).
3. $V(G) = P + 1$, trong đó $P$ là số lượng nút vị ngữ (predicate nodes).
Nếu không sử dụng sơ đồ luồng, độ phức tạp cyclomatic có thể được tính bằng cách tính toán số lượng câu lệnh điều kiện (conditional statements) trong mã.
Quy trình và Mục tiêu
Cốt lõi của kỹ thuật này bao gồm:
1. Vẽ sơ đồ luồng theo thiết kế hoặc mã nguồn.
2. Xác định độ phức tạp cyclomatic.
3. Xác định tập hợp cơ sở của các đường dẫn độc lập tuyến tính (sử dụng các nút vị ngữ để xác định các đường dẫn cần thiết).
4. Thiết kế các trường hợp kiểm thử (test cases) để đảm bảo rằng mỗi đường dẫn trong tập hợp cơ sở sẽ được thực thi.
Bằng cách sử dụng phương pháp Kiểm thử Đường dẫn Cơ sở này, người kiểm thử đạt được lợi ích quan trọng của Kiểm thử Hộp trắng, đó là đảm bảo tất cả các đường dẫn độc lập trong một mô-đun sẽ được thực thi ít nhất một lần. Kỹ thuật này giúp chuyển đổi quy trình kiểm thử từ việc đoán mò sang thiết kế điều kiện kiểm thử một cách có hệ thống
Nguồn: Jovanović, Irena (2008) Software Testing Methods and Techniques. Link: https://tir.ipsitransactions.org/2009/January/Paper%2006.pdf
