+6

Một số lý thuyết trong kiểm thử luồng dữ liệu

Đị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 hay p-use
  • Trong những trường hợp còn lại, thì biến được sử dụng gọi là computation-use hay c-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

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí