1. Trang chủ
  2. » Luận Văn - Báo Cáo

Data flow testing Kiểm thử luồng dữ liệu

35 2,7K 9

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 1,22 MB

Nội dung

White Box Testing Dựa vào mã nguồn cấu trúc chương trình.Đối tượng là các thành phần phần mềm (1 hàm chức năng, 1 module chức năng… ).Thường tốn rất nhiều thời gian và công sức.Có 2 hoạt động kiểm thử hộp trắng:Kiểm thử luồng điều khiển.Kiểm thử luồng dữ liệu.

Trang 1

Kiểm thử luồng dữ liệu

Lớp:D10CNPM2

Nhóm 1

Trang 3

White Box Testing

Trang 4

White Box Testing

• Dựa vào mã nguồn/ cấu trúc chương trình.

• Đối tượng là các thành phần phần mềm (1 hàm chức năng, 1 module chức năng… ).

• Thường tốn rất nhiều thời gian và công sức.

• Có 2 hoạt động kiểm thử hộp trắng:

• Kiểm thử luồng điều khiển.

• Kiểm thử luồng dữ liệu.

Trang 5

Kiểm thử luồng dữ liệu

Trang 6

Kiểm thử luồng dữ liệu

• Thực hiện một số kiểm tra về giá trị dữ liệu.

• Được thực hiện ở hai cấp độ :

• Kiểm thử luồng dữ liệu tĩnh.

• Kiểm thử luồng dữ liệu động.

Trang 7

Kiểm thử luồng dữ liệu

tĩnh

Trang 8

Kiểm thử luồng dữ liệu tĩnh

• Thực hiện bằng cách phân tích các mã nguồn, không thực thi các mã.

• Phương pháp kiểm thử dòng dữ liệu tĩnh thường được sử dụng để phát hiện những khiếm khuyết tiềm ẩn trong chương trình.

Trang 9

Kiểm thử luồng dữ liệu tĩnh

Có ba loại tình huống bất thường với việc sử dụng biến

• Loại 1: Gán giá trị cho biến sau đó lại gán giá trị một lần nữa

• Loại 2: Chưa gán giá trị biến nhưng vẫn được sử dụng.

• Loại 3: Đã khai báo và gán giá trị biến nhưng không sử dụng.

Trang 10

Kiểm thử luồng dữ liệu tĩnh

• Loại 1 : Gán giá trị sau đó lại gán giá trị một lần nữa

Trang 11

Kiểm thử luồng dữ liệu tĩnh

• Loại 2: Chưa gán giá trị cho biến nhưng vẫn được sử dụng.

• Ví dụ : y = f(x1);

int z;

x= y+z;

• Các trường hợp lý giải:

• Người lập trình quên chưa gán giá trị cho z

• Nhầm biến z với một biến đã khai báo

Trang 12

Kiểm thử luồng dữ liệu tĩnh

• Loại 3: Đã khai báo và gán giá trị cho biến nhưng không sử dụng.

• Các trường hợp lý giải:

• Nhầm lẫn giữa biến này và một số biến khác được sử dụng trong chương trình.

• Biến này thực sự không được sử dụng trong chương trình.

Trang 13

Kiểm thử luồng dữ liệu tĩnh

• Sơ đồ chuyển trạng của biến

• Trạng thái:

 U: Undefined

 D: Defined but not referenced

 R: Defined and referenced

Trang 14

Kiểm thử luồng dữ liệu

động

Trang 15

Kiểm thử luồng dữ liệu động

• Lý do cần kiểm thử dòng dữ liệu:

• Cần chắc chắn biến được gán đúng giá trị, tức là chúng ta phải xác định được một đường đi của biến từ một điểm bắt đầu nơi nó được định nghĩa đến điểm mà biến đó được sử dụng

• Ngay cả khi gán đúng giá trị cho biến thì các giá trị được sinh ra chưa chắc đã chính xác do tính toán hoặc các biểu thức điều kiện sai (biến được sử dụng sai).

Trang 16

Kiểm thử luồng dữ liệu động

• Các bước thực hiện:

• Xây dựng đồ thị dòng dữ liệu của chương trình/đơn vị chương trình

• Chọn một hoặc một số tiêu chí kiểm thử dòng dữ liệu

• Xác định các đường dẫn chương trình phù hợp với tiêu chí kiểm thử

đã chọn

• Lấy ra các biểu thức điều kiện từ tập các đường đi, thực hiện giải các biểu thức điều kiện để có được các giá trị đầu vào cho các ca kiểm thử tương ứng với các đường đi này và tính toán giá trị đầu ra mong đợi của mỗi ca kiểm thử

Trang 17

Đồ thị luồng dữ liệu

• Định nghĩa: Đồ thị dòng dữ liệu của một chương trình/đơn

vị chương trình là một đồ thị có hướng G = <N; E>, với:

• N là tập các đỉnh tương ứng với các câu lệnh def hoặc c-use của các biến được sử dụng trong đơn vị chương trình Đồ thị G có hai đỉnh đặc biệt là đỉnh bắt đầu (tương ứng với lệnh def của các biến tham số) và đỉnh kết thúc đơn vị chương trình.

• E là tập các cạnh tương ứng với các câu lệnh p-use của các biến.

Trang 18

Đồ thị luồng dữ liệu

• Một số khái niệm:

• Def: là câu lệnh gán giá trị cho một biến

• Undef: khai báo biên nhưng chưa cấp giá trị cho nó

• Use: là câu lệnh sử dụng một biến (tính toán hoặc kiểm tra các điều kiện)

• C-use: là câu lệnh sử dụng biến để tính toán giá trị của một biến khác

• P-use: là câu lệnh sử dụng biến trong các biểu thức điều kiện (câu lệnh

rẽ nhánh, lặp, )

Trang 19

Kiểm thử luồng dữ liệu động

Trang 20

Đồ thị luồng dữ liệu

• Ví dụ: hàm tính trung bình cộng

1 double avg (int value[], int max,

int min, int as){

Trang 22

Thuật ngữ về luồng dữ liệu

Global c-use: Việc sử dụng biến x tại đỉnh i được gọi là Global c-use nếu x đã được định nghĩa ở các đỉnh trước đó

• Ví dụ: 6 là Global c-use của biến ti vì biến ti đã được định nghĩa tại 4.

Def -clear path: x được định nghĩa tại đỉnh i và được sử dụng tại đỉnh

j Một đường đi từ i đến j ký hiệu là (i- n1- - nm - j ) với m ≥ 0 được gọi là Def -clear path ứng với biến x nếu biến x không được định nghĩa tại các đỉnh từ n1 đến nm

• Path 4-5-6 là def-clear path của biến ti vì:

• Biến ti được định nghĩa tại 4.

• Biến ti không được định nghĩa ở 5.

Trang 23

Thuật ngữ về luồng dữ liệu

Global def: Một đỉnh i được gọi là Global def của biến x

nếu đỉnh này định nghĩa biến x (def ) và có một Def -clear path của x từ đỉnh i tới đỉnh chứa một Global c-use hoặc cạnh chứa một p-use của biến này.

• Ví dụ: 4 là Global def của biến ti vì

• 4 định nghĩa biến ti

• Def-clear path 4-5-6 của biến ti có 6 là Global c-use của biến ti

Trang 24

Thuật ngữ về luồng dữ liệu

Simple path: Một đường đi trong đồ thị dòng dữ liệu được

gọi là một Simple path nếu các đỉnh chỉ xuất hiện đúng

một lần trừ đỉnh đầu và đỉnh cuối.

• Ví dụ: 1-2-3-4-5-6, 5-6-7-10-5

Loop-free path :Một đường đi trong đồ thị dòng dữ liệu

được gọi là một Loop-free path nếu các đỉnh chỉ xuất hiện đúng một lần.

• Ví dụ: 1-2-3-4-5-6

Trang 25

Thuật ngữ về luồng dữ liệu

Complete-path :Một đường đi được gọi là một

Completepath nếu nó có điểm bắt đầu và điểm kết thúc chính là điểm bắt đầu và điểm kết thúc của đồ thị dòng dữ liệu.

• Ví dụ: 1-2-3-4-5-11-12-14.

Trang 26

Thuật ngữ về luồng dữ liệu

Du-path: Một đường đi (n1- n2- - nj - nk) được gọi là một Du-path

(definition-use path) ứng với biến x nếu đỉnh n1 là Global def của biến x và:

• Đỉnh nk có một Global cuse với biến x và (n1 n2 nj nk) là một Def clear simple path với biến x, hoặc

-• Cạnh (nj, nk) có p-use với biến x và (n1- n2- - nj) là Def -clearloop-free path với biến này

• Ví dụ: 4-5-6 là du-path ứng với biến ti vì:

• 4 là Global def của biến ti.

• 6 là Global c-use của biến ti, 4-5-6 là def-clear path của biến ti.

• 4-5-6 là simple path.

Trang 27

Tiêu chí kiểm thử luồng dữ liệu

All-defs: Mỗi một biến x ∈ V và mỗi đỉnh i ∈ N , giả sử x có một Global def tại i, chọn một Complete-path chứa một Def-clear path từ đỉnh i tới đỉnh

j sao cho tại j là Global c-use của x, hoặc cạnh (j; k) chứa một p-use của

biến x

VD: xét biến ti có Global def tại đỉnh 4, Complete-path 10-5-11-12-14 thỏa mãn tiêu chí All-defs do:

1-2-3-4-5-6-7-8-9-• 6 là Golobal c-use của ti

• Def-clear path 4-5-6 của ti thuộc Complete-path

Trang 28

Tiêu chí kiểm thử luồng dữ liệu

All-c-uses: Với mỗi một biến x và mỗi đỉnh i sao cho i là Global def của biến x, chọn các Complete-path bao gồm các Def -clear path từ đỉnh i tới tất cả các đỉnh j sao cho j là Global c-use của x

VD: xét biến ti có Global def tại 4, complete-path 11-12-14 thỏa mãn tiêu chí All-c-uses do:

1-2-3-4-5-6-7-8-9-10-5-• Complete-path chứa tất cả các Def-clear path của ti bắt đầu từ đỉnh 4 6)

(4-5-• Đỉnh 6 là Global c-use của ti

Trang 29

Tiêu chí kiểm thử luồng dữ liệu

All-p-uses: Với mỗi một biến x và mỗi đỉnh i sao cho i là Global def với biến x, chọn các Complete-path bao gồm các Def -clear path từ đỉnh i tới tất cả các cạnh (j; k) sao cho có một p-use của x tại cạnh này

VD: xét biến tv có 4 là Global def của tv, complete-path

1-2-3-4-5-11-13-14 thỏa mãn tiêu chí all-p-uses do:

• Def-clear path của tv bắt đầu từ đỉnh 4 thuộc complete-path (4-5-11-13)

• Cạnh (11,13) là p-use của tv

Trang 30

Tiêu chí kiểm thử luồng dữ liệu

All-uses: Độ đo này bao gồm các đường đi được sinh ra từ các độ đo p-uses và All-c-uses (như đã định nghĩa ở trên) Điều này có nghĩa là với mỗi việc sử dụng (c-use hoặc p-use) của một biến thì có một đường đi từ định nghĩa (def ) của biến đó tới các sử dụng của nó

All-• All-du-paths: Với mỗi một biến x và mỗi đỉnh i sao cho i là Global def với biến x, chọn các Complete-path chứa các tất cả các Du-path từ đỉnh i tới:

• Tất cả các đỉnh j sao cho có một Global c-use của biến x tại j

• Tất cả các cạnh (j; k) sao cho có một p-use của biến x tại (j; k)

Trang 31

So sánh các độ đo của kiểm thử

dòng dữ liệu

Mối quan hệ bao gồm: Cho hai độ đo c1 và c2, ta nói c 1 bao gồm c2 nếu mọi đường đi đầy đủ (Complete-paths) sinh ra từ đồ thị dòng dữ liệu thỏa mãn c1 thì cũng thỏa mãn c2

Mối quan hệ bao gồm chặt: Cho hai độ đo c1và c2, ta nói c1

bao gồm chặt c2, ký hiệu là c1 −→ c2, nếu c1 bao gồm c2 và tồn tại một

số đường đi đầy đủ sinh ra từ đồ thị dòng dữ liệu thỏa mãn c2 nhưng không thỏa mãn c1

Trang 32

Sinh các ca kiểm thử

• Để tiến hành phương pháp kiểm thử dòng dữ liệu, trước hết chúng ta phải sinh đồ thị dòng dữ liệu của đơn vị chương trình.

• Xác định tất cả các đường đi đầy đủ (Complete-paths) thỏa mãn độ đo C

->Cần phải sinh được bộ đầu vào cho từng đường đi đầy đủ trên.

Trang 33

Sinh các ca kiểm thử

• Ví dụ: xét Complete path 1-2-3-4-5-6-7-8-9-10-5-11-12-14

Ta xác định được các biểu thức p-use trên các cạnh như sau:

1 ((ti<AS) && (value[i]!=-999)) (thuộc cạnh (5, 6))

2 ((value[i] >= MIN) && (value[i] <= MAX)) (thuộc cạnh (7, 8))

3 ∼((ti<AS) && (value[i] != -999)) (thuộc cạnh (5, 11))

4 tv > 0 (thuộc cạnh (11, 12))

Þ Ta cần sinh bộ đầu vào thỏa mãn các điều kiện trên.

Trang 35

THANK YOU!

Ngày đăng: 02/07/2014, 16:07

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w