- vừa được xem lúc

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

0 0 48

Người đăng: Trần Quang Huy

Theo Viblo Asia

Đị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

Bình luận

Bài viết tương tự

- vừa được xem lúc

テストカバレッジの概念の紹介(C0/C1/C2)

C0/C1/C2カバレッジとは. テストカバレッジがどんなものかは、他の記事を読んでください。. その上で、テストケースの分類―C0,C1,C2について説明します。. 以下のようなコードのテストケースを考えて見ます。.

0 0 244

- vừa được xem lúc

Testing trong Javascript với Jest (Phần 1)

Hello 500 anh em, lại là mình đây. Chú bé coder yêu màu tím thích màu hồng và ghét sự giả dối đây .

0 0 249

- vừa được xem lúc

Làm sao để lựa chọn kỹ thuật test hiệu quả nhất cho từng dự án?

1. Làm thế nào để chọn đó là kỹ thuật tốt nhất.

0 0 263

- vừa được xem lúc

Cách kiểm thử ứng dụng dành cho thiết bị di động

Với việc điện thoại thông minh đang dần trở thành thứ ai cũng phải có, các nhà phát triển đã và đang tìm kiếm sự nghiệp tốt trong việc phát triển ứng dụng di động. Các thị trường cũng đang tràn ngập với hàng triệu ứng dụng.

0 0 679

- vừa được xem lúc

The Road Map - Software Testing

Đây là một bài viết khá hay mình muốn chia sẻ lại với mọi người để có thể trở thành 1 QA giỏi, bài viết chỉ giới thiệu chung chứ không đi sâu vào bất kỳ kỹ năng gì nên mọi người có thể tự tìm hiểu sâu về từng kỹ năng trong road map trên mạng sau nhé . Giới thiệu.

0 0 262

- vừa được xem lúc

Mức độ nghiêm trọng và độ ưu tiên trong kiểm thử phần mềm

1. Khái niệm. Bug severity - mức độ nghiêm trọng của bug. Mức độ nghiêm trọng của bug là mức độ ảnh hưởng của lỗi đó trên phần mềm mà chúng ta test.

0 0 301