Sơ đồ luồng điều khiển

Một phần của tài liệu (LUẬN văn THẠC sĩ) kỹ thuật ma trận đồ thị trong phương pháp kiểm thử hộp trắng (Trang 40)

ớc 3b- Vẽ đồ thị dòng

2,3 4,5 6 8 7 9 10 11 1 Hình 2.6 : Đồ thị dòng dùng để xác định ma trận kiểm thử Các thông số của đồ thị dòng gồm: E = số cung; N = số nút; P= số nút vị tự

Trong ví dụ có: 9 nút (=N) trong đó 3 nút là vị tự (=P) và 11 cung (=E)

Bước 4- Tính độ phức tạp chu trình:

Để đảm bảo mọi câu lệnh đều được kiểm thử ít nhất một lần, cần tìm được tất cả các đường điều khiển độc lập trong chương trình (khác nhau ít nhất một lệnh).

Số các đường độc lập của một chương trình là giới hạn trên số ca kiểm thử cần tiến hành. Nó được gọi là độ phức tạp chu trình của chương trình.

Tập các đường độc lập/cơ bản (bacsic paths) của một chương trình trùng với các đường độc lập của đồ thị dòng (tìm đơn giản hơn)

Độ phức tạp chu trình được tính theo công thức: Với N: Số nút; P: Số nút vị tự; E: Số cung

V(G) = E – N +2 (=11-9+2=4) Hoặc V(G) = số miền phẳng (=4) Hoặc V(G) = P + 1 (=3+1=4)

Hình 2.7: Độ phức tạp chu trình được xác định từ số miền phẳng trong đồ thị dòng

Với ví dụ về đồ thị dòng ở trên ta có: V(G) = 4 do đồ thị dòng chia mặt phẳng thành 4 miền: R1, R2, R3, R4.

Bước 5- Xác định tập đường cơ bản/các ca kiểm thử:

Xác định các ca kiểm thử bằng cách xác định số miền phẳng trong đồ thị dòng. Dựa vào hình 2.6 có thể xác định đồ thị trên có 4 miền phẳng tương ứng V(G) = 4.

Như vậy từ đồ thị dòng, do xác định được độ phức tạp chu trình V(G)=4 và suy ra cần thiết kế 4 đường kiểm thử, tạo thành tập đường cơ bản:

Bảng 2.3. Tập đường cơ bản Tập đường cơ bản Tập đường cơ bản a 1 11 b 1 2-3 4-5 10 1 c 1 2-3 6 7 9 10 1 d 1 2-3 6 8 9 10 1

2.3.1.2 Kỹ thuật ma trận kiểm thử

Ma trận kiểm thử là một ma trận vuông có kích thước bằng số các nút trên đồ thị dòng:

- Mỗi dòng/cột ứng với tên 1 nút;

- Mỗi ô: là tên một cung nối nút dòng đến nút cột.

Nhân liên tiếp k ma trận này ta được ma trận có số ở mỗi ô chỉ số con đường k cung từ nút dòng tới nút cột.

Ma trận kiểm thử được sử dụng như một dữ liệu có cấu trúc để kiểm tra các con đường cơ bản: số đường đi qua nút (có thể tính cả trọng số của chúng).

Ma trận kiểm thử là một công cụ mạnh trong việc đánh giá cấu trúc điều khiển chương trình. Khi kiểm thử, ta thêm trọng số cho các cung của ma trận kiểm thử (ma trận kiểm thử có trọng số) như sau:

- Xác suất cung đó được thực thi.

- Thời gian xử lý của tiến trình đi qua cung đó - Bộ nhớ đòi hỏi của tiến trình đi qua cung đó. - Nguồn lực đòi hỏi của tiến trình đi qua cung đó.

Ví dụ: Từ đồ thị dòng: 2,3 4,5 6 8 7 9 10 11 1 Hình 2.8 : Đồ thị dòng dùng để xác định ma trận kiểm thử xác định được:

Bảng 2.4 : Ma trận kiểm thử A và cách tính độ phức tạp V(G) Nút 1 23 45 6 7 8 9 10 11 V(G) = 4 1 1 1 1+1-1=1 23 1 1 1+1-1=1 45 1 1-1 = 0 6 1 1 1+1-1=1 7 1 1-1 = 0 8 1 1-1 = 0 9 1 1-1 = 0 10 1 1-1 = 0 11 +1=3+1= 4

(Các số 1 trong ma trận đánh dấu nút dòng đi tới nút cột, ví dụ nút dòng 2,3 xác định chuyển tới nút cột 4,5 nên ô có tọa độ (23,45) được đánh dấu 1).

Bảng 2.5 Bảng ma trận kiểm thử A= (aij) với i,j=1,2,3,4,...,9 được xác định như sau: 1 1 1 1 1 1 1 1 1 1 1

Độ phức tạp của đồ thị được xác định theo công thức:

V(G) =(Σi(Σjaij)-1)+1)=4 với (i,j=1,...,9)

Để thuận tiện cho việc lập trình, chúng ta xác định cách tính độ phức tạp theo quy trình sau: (adsbygoogle = window.adsbygoogle || []).push({});

Bước a: tính các tổng theo hàng của ma trận A trừ dòng cuối cùng T1=a11+ a12+ a13+... +a1,9 = 2

T2=a21+ a22+ a23+...+ a2,9 = 2 T3=a31+ a32+ a33+... +a3,9 = 1 T4=a41+ a42+ a43+...+ a4,9 = 2 T5=a51+ a52+ a53+... +a5,9 = 1 T6=a61+ a62+ a33+...+ a6,9= 1 T7=a71+ a72+ a73+... +a7,9 = 1 T8=a81+ a82+ a83+... +a8,9 = 1 Bước b: Tính Ti (i=1,…,14) T1:=T1-1=1 T2:=T2-1=1 T3:=T3-1=0 T4:=T4-1=1 T5:=T5-1=0 T6:=T6-1 = 0 T7:=T7-1 = 0 T8:=T8-1 = 0 Bước c: Tính V(G)= (T1+T2+...+T8) + 1= 4

Trong đó: (T1+T2+...+T8) cho biết số nút vị tự P là 3 nên V(G)= P+1= (T1+T2+...+T9) + 1= 3+1 = 4

Như vậy, xác định được số đường phải kiểm thử là 4 Bước d: Xác định được tập đường kiểm thử

Từ đây, chúng ta dễ dàng xác định được tập đường kiểm thử giống như trên:

Do V(G) = 4 nên xác định được 4 đường kiểm thử giống như phương pháp xác định V(G) bằng phương pháp tô màu xác định miền phẳng.

Tập đường cơ bản a 1 11 b 1 2-3 4-5 10 1 c 1 2-3 6 7 9 10 1 d 1 2-3 6 8 9 10 1 Ma trận kiểm thử tích A2 Bảng 2.6 : Ví dụ ma trận kiểm thử tích A2= Nút 1 23 45 6 7 8 9 10 11 1 1 1 23 1 1 1 45 1 6 2 7 1 8 1 9 1 10 1 1 11

(Các số trong ma trận cho biết số con đường có hai cạnh đi qua cung đó).

2.3.2. Quy trình kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị

Kiểm thử phần mềm bằng kỹ thuật ma trận đồ thị cần tuân theo lộ trình sau: Giai đoạn 1:

- Nhập văn bản mô-đun chương trình cần kiểm thử - Lập bảng biểu diễn luồng dữ liệu của đồ thị dòng Giai đoạn 2:

- Lập bảng ma trận đồ thị

Giai đoạn 3:

- Xác định số đường kiểm thử

- Lập bảng kết quả xác định tập đường cơ bản Giai đoạn 4:

- Nhập các inputs cho các test path

-Thực hiện các test cases và cho ra các bảng so sánh kết quả thực và kết quả mong đợi

Giai đoạn 5:

- Nhập các input cho các ca kiểm thử cho kiểm thử vòng lặp

- Thực hiện các test cases và cho ra các bảng so sánh kết quả thực và kết quả mong đợi

Giai đoạn 6:

CHƯƠNG 3

CHƯƠNG TRÌNH THỬ NGHIỆM KIỂM THỬ PHẦN MỀM BẰNG KỸ THUẬT MA TRẬN ĐỒ THỊ

3.1. Chọn mô-đun phần mềm thử nghiệm

Mô-đun phần mềm thử nghiệm được chọn là mô-đun “Thủ tục tính giá trị trung bình của 100 số hay ít hơn, nằm giữa các giá trị cận, tính tổng số phần tử hợp lệ” [15]:

PROCEDURE average;

INTERFACE RETURNS average, total.input, total.valid; INTERFACE ACCEPT value, minimum,maximum; TYPE value [1:100] IS SCALAR ARRAY;

TYPE average, total.input, total.valid;

minimum, maximum, sum IS SCALAR; TYPE i IS INTERGER;

I=1; total.input= total.valid=0; (adsbygoogle = window.adsbygoogle || []).push({});

sum=0;

DO WHILE value[i] <> -999 AND total.input < 100; Increment total.input by 1;

IF value[i] >= minimum AND value[i] <= maximum THEN

Begin

increment total.valid by 1; Sum=sum+ value[i] end

ENDIF

Increment i by 1; ENDDO

IF total.valid > 0

THEN average = sum/ total.valid; ELSE average = -999;

ENDIF

END average

3.2. Thiết kế ca kiểm thử và kiểm thử mô-đun phần mềm

3.2.1. Quy trình thiết kế

Bài toán thiết kế ca kiểm thử và kiểm thử mô-đun phần mềm được tuân theo quy trình thiết kế chuẩn sau đây [15]:

Bước 1- Gán nhãn dòng lệnh

Bước 2- Vẽ sơ đồ điều khiển của chương trình

Bước 3- Vẽ sơ đồ luồng điều khiển rút gọn và đồ thị dòng Bước 4- Xác định độ phức tạp của chu trình

Bước 5- Xác định tập đường cơ bản

Bước 6- Xác định các Inputs cho các test path

Bước 7- Xác định các ca kiểm thử cho kiểm thử vòng lặp While

3.2.2. Nội dung thiết kế

Trình tự thiết kế bao gồm các bước sau:

Bước 1- Gán nhãn dòng lệnh

PROCEDURE average;

INTERFACE RETURNS average, total.input, total.valid; INTERFACE ACCEPT value, minimum,maximum; TYPE value [1:100] IS SCALAR ARRAY;

TYPE average, total.input, total.valid;

minimum, maximum, sum IS SCALAR; TYPE i IS INTERGER;

i=1;

total.input= total.valid=0; 1 sum=0;

DO WHILE value[i] <> -999 AND total.input < 100 2 3 Increment total.input by 1; 4 (adsbygoogle = window.adsbygoogle || []).push({});

THEN Begin

increment total.valid by 1; Sum=sum+value[i]; End

ENDIF 8

Increment i by 1; 9

ENDDO 10

IF total.valid > 0 11

THEN average = sum/ total.valid; 12 ELSE average = -999; 13

ENDIF 14

END average

Bước 2- Vẽ sơ đồ điều khiển của chương trình

Hình 3.1. Sơ đồ điều khiển của chương trình

s s s 2 3 11 5 6 s 1 4 8 7 13 14 s đ đ đ đ đ 12 9 10 7

Bước 3a- Vẽ Sơ đồ luồng điều khiển rút gọn

Việc rút gọn đã được thực hiện khi dán nhãn nên ta vẫn có sơ đồ luồng điều khiển sau:

Hình 3.2. Sơ đồ luồng điều khiển

Bước 3b- Vẽ Đồ thị dòng

Từ sơ đồ luồng điều khiển xác định được đồ thị dòng gồm: N - số nút = 14 P - số nút vị tự = 5 (nút sẫm màu) E - số cung = 18 s s s 2 3 11 5 6 s 1 4 8 7 13 14 s đ đ đ đ đ 12 9 10

Hình 3.3. Đồ thị dòng Bước 4- Xác định độ phức tạp của chu trình Bước 4- Xác định độ phức tạp của chu trình

Độ phức tạp của chu trình được xác định bằng số miền phẳng trong đồ thị dòng:

Độ phức tạp của chu trình V(G) của đồ thị được tính theo 3 cách sau: V(G) = E – N + 2= 18 – 14 + 2= 6, hoặc V(G)= số miền phẳng= 6, hoặc V(G)= P+1= 5+1=6 1 4 8 7 13 14 12 9 10 2 3 5 6 11

Hình 3.4. Độ phức tạp của chu trình Bước 5- Xác định tập đường cơ bản Bước 5- Xác định tập đường cơ bản

Cách 1-Xác định tập đường cơ bản theo số miền phẳng

Do xác định được có 6 miền phẳng nên có được 6 đường kiểm thử. Tập đường cơ bản xác định được bao gồm:

Path1: 1-2-10-11-12-14 Path2: 1-2-10-11-13-14 Path3: 1-2-3-10-11-12-14 Path4: 1-2-3-4-5-8-9-2-10-11-12-14 Path5: 1-2-3-4-5-6-8-9-2-10-11-12-14 Path6: 1-2-3-4-5-6-7-8-9-2-10-11-12-14 R1 R2 R3 R4 R5 R6 1 4 8 7 13 14 12 9 10 2 3 5 6 11

Cách 2-Xác định tập đường cơ bản theo ma trận đồ thị Theo trên, chúng ta có Đồ thị dòng:

Hình 3.5. Đồ thị dòng

Từ đồ thị dòng, xác định “ma trận kiểm thử”:

Ma trận kiểm thử, ký hiệu là A=(aij) với i,j=1,2,3,...,n, là một ma trận vuông cấp n, có kích thước bằng số các nút (n=14) trên đồ thị dòng:

- Mỗi dòng/ cột ứng với tên một nút;

- Mỗi ô: là tên một cung nối nút dòng đến nút cột. (adsbygoogle = window.adsbygoogle || []).push({});

Nhân liên tiếp k ma trận này ta được ma trận có số ở mỗi ô chỉ số con đường k cung từ nút dòng tới nút cột.

Ma trận kiểm thử được sử dụng như một dữ liệu có cấu trúc để kiểm tra các con đường cơ bản: số đường đi qua nút (có thể tính cả trọng số của chúng).

- Ma trận kiểm thử là một công cụ mạnh trong việc đánh giá cấu trúc điều khiển chương trình.

1 4 8 7 113 14 12 9 10 2 3 5 6 11

Bảng 3.1-Bảng tính độ phức tạp của đồ thị dòng V(G): nút 1 2 3 4 5 6 7 8 9 10 11 12 13 14 V(G)=6 1. 1 1-1=0 2. 1 1 1+1-1=1 3. 1 1 1+1-1=1 4. 1 1-1=0 5. 1 1 1+1-1=1 6. 1 1 1+1-1=1 7. 1 1-1=0 8. 1 1-1=0 9. 1 1-1=0 10. 1 1-1=0 11. 1 1 1+1-1=1 12. 1 13. 1 14. V(G)= theocot+1= 5+1=6

(Các số 1 trong ma trận đánh dấu nút dòng đi tới nút cột, ví dụ nút dòng 2 xác định chuyển tới nút cột 3 nên có tọa độ (2,3) được đánh dấu 1).

Bảng 3.2: Bảng ma trận kiểm thử A= (aij) với i,j=1,2,3,4,...,14 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Độ phức tạp của đồ thị được xác định theo công thức:

V(G) = +1 = 6

Để thuận tiện cho việc lập trình, chúng ta xác định cách tính độ phức tạp theo quy trình sau:

Bước a: tính các tổng theo hàng của ma trận A trừ dòng cuối cùng T1=a11+ a12+ a13+... +a1,14 = 1

T2=a21+ a22+ a23+...+ a2,14 = 2 T3=a31+ a32+ a33+... +a3,14 = 2 T4=a41+ a42+ a43+...+ a4,14 = 1 T5=a51+ a52+ a53+... +a5,14 = 2 T6=a61+ a62+ a33+...+ a6,14 = 2 T7=a71+ a72+ a73+... +a7,14 = 1 T8=a81+ a82+ a83+... +a8,14 = 1 T9= a91+ a92+ a93+... +a9,14 = 1

T10=a10,1+ a10,2+ a10,3+... +a10,14 = 1 T11=a11,1+ a11,2+ a11,3+... +a11,14 = 2 T12=a12,1+ a12,2+ a12,3+... +a12,14 =1 T13=a13,1+ a13,2+ a13,3+... +a13,14 = 1 T14=a14,1+ a14,2+ a14,3+... +a14,14 = 1 Bước b: Tính Ti (i=1,…,14) T1:=T1-1=0 T2:=T2-1=1 T3:=T3-1=1 T4:=T4-1=0 T5:=T5-1=1 T6:=T6-1 = 1 T7:=T7-1 = 0

T8:=T8-1 = 0 T9 := T9-1 = 0 T10:= T10-1 = 0 T11:= T11-1 =1 T12:= T12-1 = 0 T13:= T13-1 = 0 T14:= T14-1 = 0 Bước c: Tính V(G)= (T1+T2+...+T14) + 1=6 Trong đó: (T1+T2+...+T9) chính là số nút vị tự P V(G)= P+1= (T1+T2+...+T14) + 1= 5+1 = 6

Như vậy, xác định được số đường phải kiểm thử là 6 Bước d: Xác định được tập đường kiểm thử

Từ đây, chúng ta dễ dàng xác định được tập đường kiểm thử giống như trên: Path1: 1-2-10-11-12-14 Path2: 1-2-10-11-13-14 Path3: 1-2-3-10-11-12-14 Path4: 1-2-3-4-5-8-9-2-10-11-12-14 Path5: 1-2-3-4-5-6-8-9-2-10-11-12-14 Path6: 1-2-3-4-5-6-7-8-9-2-10-11-12-14

Bước 6- Xác định các Inputs cho các test path: Bảng 3.3: Các Test path

Dữ liệu vào Kết quả Kết quả mong đợi Ghi chú

Path 1 test case

value (k)= dữ liệu vào hợp lệ, where k<i for 2 i 100

value (i)=-999 với 2i 100

average là đúng dựa trên các giá trị k và các tổng giá trị thích hợp Path 1 không thể được kiểm thử đơn độc mà phải thử như là một phần của các đường 4,5 và 6

Path 2 test case

value (1)=-999 Average=-999

Giá trị các tổng giữ nguyên giá trị ban đầu

Path 3 test case

value (k)= 101 hoặc lớn hơn

100 giá trị đầu tiên là hợp lệ

Giống như ca kiểm thử 1

Path 4 test case (adsbygoogle = window.adsbygoogle || []).push({});

value (i)= dữ liệu vào hợp lệ, where i <100

value (k) < minimum,

where k<i

Average đúng với mọi k và các giá trị tổng đều đúng

Path 5 test case

value (i)= dữ liệu vào hợp lệ, where i <100

value (k) > maximum, where k i

Average đúng với mọi k và các giá trị tổng đều đúng

Path 6 test case

value (i)= dữ liệu vào hợp lệ, where i <100

Average đúng với mọi k và các giá trị tổng đều đúng

Bước 7- Xác định các ca kiểm thử vòng lặp While: Bảng 3.4: Bảng các ca kiểm thử vòng lặp while ID Số lần lặp Inputs Đầu ra mong đợi Đầu ra thực tế Ghi chú tcl0 0 [-999, ...] 1 2 -999 tcl1 1 [1,-999] 1 2 1 tcl2 2 [1,2,-999] 1 2 1.5 tclk 3 [1,2,3,4,5,-999] 1 3 2 tcl(n-1) 99 [1,2,...,99,-999] 1 100 50 tcl(n) 100 [1,2,...,100,-999] 1 100 50.5 tcl(n+1) 100 [1,2,...,100,-999] 1 100 50.5

3.3 Một số giao diện chính của chương trình

3.3.1. Giao diện thiết kế ca kiểm thử theo kỹ thuật ma trận đồ thị

3.3.1.1. Giao diện trang chủ

3.3.1.2. Giao diện trợ giúp

Chọn “Trợ giúp” để xem hướng dẫn sử dụng chương trình

Hình 3.7 Giao diện hướng dẫn sử dụng của chương trình

3.3.1.3. Giao diện xử lý

Chọn “Chương trình” để vào giao diện xử lý

3.3.1.4. Giao diện định hướng dữ liệu

Nhấn nút “Mở file” để chọn đường dẫn.

Hình 3.9: Hộp thoại Open để tìm đường dẫn

3.3.1.5. Giao diện nhập mô-đun cần kiểm thử

Sau khi chọn file dữ liệu bằng cách ấn nút Mở file, hiển thị mô-đun cần kiểm thử:

3.3.1.6.Giao diện tính độ phức tạp và xác định tập đường cơ bản

Nhấn vào nút “Tính độ phức tạp”, chương trình cho giá trị độ phức tạp, ma trận kiểm thử và tập đường cơ bản.

Hình 3.11. Giao diện xác định tập đường cơ bản

Như vậy, khi chọn nút lệnh Tính độ phức tạp, phần mềm sẽ đưa ra kết

quả đỗ phức tạp là V(G) = 6, ma trận kiểm thử, tập đường kiểm thử gồm 6 (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu (LUẬN văn THẠC sĩ) kỹ thuật ma trận đồ thị trong phương pháp kiểm thử hộp trắng (Trang 40)