Định nghĩa biến(Variable definition)
Một biến của chương trình được định nghĩa(DEFINED) khi giá trị của nó được thay đổi.
Bao gồm các trường hợp sau:
- Nằm ở vế bên trái trong câu lệnh gán, ví dụ:
y = 20
- Trong câu lệnh nhập đầu vào, ví dụ
getInput(y)
- Được sử dụng với vai trò là tham số tham chiếu của một hàm, ví dụ
update(x, &y)
Sử dụng biến(Variable Use)
Một biến của chương trình được sử dụng(USED) khi giá trị của nó được đọc:
- Nằm ở vế bên phải trong câu lệnh gán, ví dụ:
y = x + 10
,x
được sử dụng, y được định nghĩa - Đóng vai trò là tham số tham trị của một hàm, ví dụ
y = sqrt(x)
- Trong câu lệnh điều kiện, ví dụ:
if(x>0) {...}
p-use và c-use
- Những biến được sử dụng trong những câu lệnh điều kiện gọi là
predicate-use
hayp-use
- Trong những trường hợp còn lại, thì biến được sử dụng gọi là
computation-use
hayc-use
Ví dụ, trong đoạn code dưới đây, có một p-use
của x
và một c-use
của y
if(x>10) { // p-use of x
print(y); // c-use of y
}
Lưu ý Một biến có thể vừa là được sử dụng và sau đó được định nghĩa lại trong một câu lệnh khi nó xuất hiện
- Nằm ở cả 2 bên của một câu lệnh gán, ví dụ:
y = y + x
- Như một tham số gọi theo tham chiếu trong một hàm được gọi, ví dụ,
increment(&y)
Tiêu chuẩn bao phủ kiểm thử DU-Path
Ý tưởng: sử dụng thông tin def-use và tiêu chuẩn cụ thể để nhận được các đường đi cụ thể trong đồ thị CFG, từ đó xác định các ca kiểm thử.
- Giả sử T là tập tất cả các đường đi đầy đủ và khả thi trong CFG của chương trình P và V là tập tất cả các biến trong P.
- T thỏa mãn tiêu chuẩn All-Defs nếu và chỉ nếu với mọi v,T chứa các đường đi dc-path từ mọi đỉnh gán của v đến một đỉnh dùng của v.
- T thỏa mã tiêu chuẩn All-Uses nếu và chỉ nếu với mọi v, T chứa các đường đi dc-path từ mọi đỉnh gán của v đến mọi đỉnh dùng của v và đến đỉnh tiếp theo của mỗi USE(v,n).
Chúng ta có thể làm min hơn bằng All-C-Uses và All-P_Uses
- All-P-Uses/Some-C-Uses: với mọi v, T gồm các đường đi dc-path từ mọi đỉnh gán của v đến mọi đỉnh p-use của v và nếu một định nghĩa của v không có p-use thì tồn tại một đường đi dc-path đến ít nhất một c-use.
- All-c-uses / some-p-uses: với mọi v, T gồm các đường đi dc-path từ mọi đỉnh gán của v đến mọi đỉnh gán c-use của v và nếu một định nghĩa của v không có c-use thì tồn tại một đường đi dc-path đến ít nhất một p-use.
- All-DU-Path: với mọi v, T gồm các đường đi dc-Path từ mọi đỉnh gán của v đến mọi đỉnh dùng của v và đến đỉnh tiếp theo của mối use(v,n) và các đường đi này hoặc là lặp một lần hoặc không lặp.
Một số thuật ngữ khác
Definition-Clear-Path: Một path được gọi là clear (def-clear) đối với biến v nếu nó không có định nghĩa lại biến của nó trên path đó
Complete-Path: Một path được gọi là complete nếu node ban đầu của path là một entry node, và node cuối cùng của path là một exit node Ở ví dụ trên
- p1 gọi là def-clear path của biến v, p2 không phải là một def-clear path của v
- p1,p2 không phải là path complete nhưng p3 là một path complete