Khuôn dạng ca kiểm thử

Một phần của tài liệu Nghiên cứu kỹ thuật sinh ca kiểm thử từ mô hình máy hữu hạn trạng thái (Trang 43)

Thông thường khuôn dạng của một ca kiểm thử bao gồm thông tin sau:

Mã ca kiểm thử (TestCase_ID): Dùng để định danh ca kiểm thử.

Tiền điều kiện (Pre-Con): Điều kiện ban đầu để có thể thực hiện ca

kiểm thử.

Thông tin đầu vào (Input): Thông tin đầu vào cung cấp cho FSM để

thực hiện ca kiểm thử.

Thông tin đầu ra mong đợi (Expected Output): Thông tin đầu ra

mong đợi nhận được từ FSM tương ứng với thông tin đầu vào (Input).

Hậu điều kiện (Post-Con): Điều kiện sau khi thực hiện ca kiểm thử.

Từ mô hình đặc tả FSM MS = <S1, I, O, s01, δ1, λ1> ta sinh ca kiểm thử để

kiểm thử FSM MI = <S2, I, O, s02, δ2, λ2> theo các bước như sau:

1. Sinh cây kiểm thử và tìm tập bao phủ chuyển trạng thái

Để dễ dàng cho việc sinh ca kiểm thử, tác giả đề xuất thêm một số thông tin sau vào mỗi dãy các chuyển trạng thái của tập P:

 Thêm thông tin output ứng với mỗi thông tin input.

 Thêm thông tin trạng thái cuối cùng của một dãy chuyển trạng thái: mục đích để xác định xem phải dùng chuỗi kiểm chứng trạng thái nào và tương ứng với chuỗi kiểm chứng đó thì cho ouput gì.

 Thông tin input và output được ngăn cách bởi ký tự ‘ ’, với mỗi cặp input/output, trạng thái được ngăn cách bởi ký tự ‘.’.

Sau khi thêm các thông tin thì mỗi phần tử trong tập P sẽ có định dạng như sau: i1/o1.i2/o2…ii/oi…in/on.qj

Trong đó:

・ ii/oi là thông tin đầu vào (input) và đầu ra (output) tương ứng với một chuyển trạng thái.

・ qj là trạng thái cuối của dãy chuyển trạng thái.

Ví dụ: a/0.b/1.q1 thì chuỗi thông tin đầu vào là ab, chuỗi thông tin đầu ra là 01 và q1 là trạng thái cuối của dãy chuyển trạng thái.

2. Xác định chuỗi kiểm chứng trạng thái

Áp dụng một trong các phương pháp đã trình bày tại Chương 3 để xác định chuỗi kiểm chứng trạng thái. Giả sử chuỗi kiểm chứng tìm được là X = {x1, x2,…, xn} thì:

 Nếu MS tồn tại chuỗi UIO thì |X| = |S1|, khi đó n = |S1|.

 Nếu MS tồn tại chuỗi DS thì |X| = 1, khi đó n = 1.

 Nếu MS không tồn tại UIO và DS (tồn tại W) thì: |X| = |W|, khi đó n = |W|.

3. Sinh ca kiểm thử

Với mỗi phần tử của tập chuyển trạng thái hay với một đường dẫn con trên cây kiểm thử sẽ sinh ra một ca kiểm thử, các ca kiểm thử này được xếp vào “Bộ

ca kiểm thử các chuyển trạng thái của FSM”. Ngoài ra, cần phải thiết kế thêm một bộ ca kiểm thử để kiểm thử xem trạng thái đầu của MI có mô phỏng trạng thái đầu của MS hay không, các ca kiểm thử này được xếp vào “Bộ ca kiểm thử

trạng thái ban đầu của FSM”.

Với tập chuyển trạng thái P = {p1, p2,…, pm} và chuỗi kiểm chứng trạng thái X = {x1, x2, …, xn} thì số ca kiểm thử ước tính là: |P| * |X| + |X|.

i. Bộ ca kiểm thử trạng thái ban đầu của FSM

Để kiểm thử trạng thái đầu của MI có mô phỏng MS hay không ta dùng chuỗi kiểm chứng. Mỗi phần tử của chuỗi kiểm chứng X tương ứng với một ca kiểm thử nên bộ ca kiểm thử để kiểm chứng trạng thái ban đầu của FSM MI là |X|. Đầu vào của ca kiểm thử là một phần tử trong chuỗi kiểm chứng X, kết quả mong đợi là output tương ứng sinh ra từ FSM MS. Áp dụng chuỗi Reset RI thì FSM MI trở về trạng thái ban đầu s01. Ca kiểm thử trạng thái ban đầu của FSM

MI được thể hiện như ảng 5.2 sau:

Bảng 5.2: Ca kiểm thử trạng thái ban đầu của FSM MS

TestCase_ID Pre-Con Input Expected Output Post-Con

TC0-1 N/A x1 λ1(s01,x1) s01 … … … … … TC0-i N/A xi λ1(s01,xi) s01 … … … … … TC0-n N/A xn λ1(s01,xn) s01 Nhận x t:

 Nếu FSM có chuỗi UIO thì số ca kiểm thử trạng thái ban đầu bằng số trạng thái của FSM MS, tức là |X| = |S1|.

 Nếu FSM có chuỗi DS thì số ca kiểm thử trạng thái ban đầu là |X| = 1.

 Nếu FSM không có chuỗi UIO hoặc DS thì số ca kiểm thử trạng thái ban đầu của FSM là |X| = n.

i sang nút ở mức thứ i +1.

 Đường đi từ nút gốc tới nút có mức cao hơn sẽ bao phủ đường đi từ nút gốc tới nút trong có mức thấp hơn.

Ví dụ: Từ cây kiểm thử của FSM C1 ở Hình 5.2, q3 ở mức 3 và q4 ở mức 2 là

các nút trong, đường đi từ q1 tới q3 (q3 ở mức 3 trên cây kiểm thử) là q1→ q4 → q3, đường đi từ q1 tới q4 (q4 ở mức 2 trong cây kiểm thử) là q1 → q4. Như vậy đường đi từ q1 → q4 → q3 đã bao phủ đường đi từ q1 → q4.

Do vậy để kiểm thử một chuyển trạng thái từ trạng thái ban đầu (tương ứng với nút gốc trong cây kiểm thử) đến trạng thái si (tương ứng với nút ở mức thứ k +1 trên cây kiểm thử) ta không cần phải kiểm chứng tất cả các trạng thái sau mỗi một chuyển trạng thái mà ch cần kiểm chứng trạng thái si vì các trạng thái trước đó đã được lần lượt kiểm chứng tại các mức trước.

Với trường hợp chuyển trạng thái q1→ q4 → q3 ở trên ta ch cần kiểm chứng trạng thái q3 vì trạng thái q4 ứng với chuyển trạng thái q1→ q4 đã được kiểm chứng tại mức 2.

Theo như đề xuất về định dạng phần tử của tập P như sau: i1/o1.i2/o2… ii/oi… in/on.qj, giả sử y1 là chuỗi kiểm chứng trạng thái của trạng thái qj, ta dễ dàng xác định thông tin của ca kiểm thử:

 Thông tin đầu vào (Input) là: i1.i2…ii…in.y1

 Thông tin đầu ra mong đợi (Expected Output) là: o1.o2…oi…on.λ(qj, y1) Trong đó:

o i1.i2…ii…in là chuỗi input dẫn tới trạng thái qj, điều đó cũng có nghĩa là để đi tới trạng thái qj thì phải qua mức 1, 2,…, i,…, n trên cây kiểm thử.

o Ứng với chuỗi input i1.i2…ii…in sẽ cho chuỗi output o1.o2…oi…on tương ứng.

o y1 là chuỗi input để kiểm chứng trạng thái qj, nếu đúng là trạng thái qj thì sẽ cho output là λ(qj,y1).

Ứng với mỗi phần tử trong tập P là một ca kiểm thử và ứng với mỗi sự chuyển dịch từ mức 1 tới các mức tiếp theo ta sẽ được một nhóm các ca kiểm thử, cụ thể:

 Nhóm ca kiểm thử TC1-:

Là các ca kiểm thử dùng để kiểm thử các chuyển trạng thái từ trạng thái ban đầu tới trạng thái tiếp theo ngay sau đó, điều này tương ứng với việc chuyển từ nút gốc (mức 1) tới nút con liền kề nó (mức 2) trên cây kiểm thử.

Để có thể thực hiện được ca kiểm thử nhóm này thì tất cả các ca kiểm thử nhóm TC0- phải được thực hiện không có lỗi (Passed). Điều này tương ứng với tiền điều kiện (Pre-Con) của nhóm ca kiểm thử TC1- là Passed TC0-.

Ta quy ước:

o t là số nút tại mức 2 trên cây kiểm thử,

o i11/o11 là input output của chuyển trạng thái từ trạng thái ban đầu tới trạng thái s11’ - tương ứng với chuyển từ nút gốc (mức 1) tới nút đầu tiên của mức 2 trên cây kiểm thử,

o i12/o12 là input output của chuyển trạng thái từ trạng thái ban đầu tới trạng thái s12’ - tương ứng với chuyển trạng thái từ nút gốc tới nút thứ 2 của mức 2 trên cây kiểm thử,

o Tổng quát, i1j/o1j là input output của chuyển trạng thái từ trạng thái ban đầu tới trạng thái s1j’ - tương ứng với chuyển từ nút gốc tới nút thứ j của mức 2 trên cây kiểm thử (với j = ).

Nhóm ca kiểm thử này sẽ được mô tả trong Bảng 5.3 bên dưới.

 Nhóm ca kiểm thử TC2-: là các ca kiểm thử dùng để kiểm thử các chuyển trạng thái tương ứng với việc chuyển tử nút gốc (mức 1) tới nút con thuộc mức 3 trên cây kiểm thử.

Để có thể thực hiện được ca kiểm thử nhóm này thì tất cả các ca kiểm thử nhóm TC1- phải được thực hiện không có lỗi. Điều này tương ứng với tiền điều kiện của nhóm ca kiểm thử TC2- là Passed TC1-.

Ta quy ước:

o v là số nút tại mức 3 trên cây kiểm thử,

o i1j/o1j .i21/o21 là input output của chuyển trạng thái từ trạng thái ban đầu qua trạng thái s1j’ tới trạng thái s21’ - tương ứng với chuyển từ nút gốc (mức 1) qua nút thứ j của mức 2 rồi tới nút đầu tiên của mức 3 trên cây kiểm thử (với j ∈ {1, 2, ..., t}),

trên cây kiểm thử - tương ứng với chuyển từ nút gốc qua nút thứ j của mức 2 tới nút thứ e của mức 3 trên cây kiểm thử (với j ∈ {1, 2, ..., t}; e = ).

Nhóm ca kiểm thử này được mô tả trong Bảng 5.4 bên dưới.

 Tiếp tục xây dựng các nhóm ca kiểm thử cho tới TCk-: là các ca kiểm thử dùng để kiểm thử các chuyển trạng thái tương ứng với việc chuyển từ nút gốc (mức 1) tới nút lá ở mức k trên cây kiểm thử.

Ta quy ước:

o z là số nút tại mức k trên cây kiểm thử,

o i1j/o1j .i2e/o2e…ik1/ok1 là input output của chuyển trạng thái từ trạng thái ban đầu qua trạng thái s1j’ tới trạng thái s2e’… và cuối cùng tới trạng thái sk1 - tương ứng với chuyển từ nút gốc (mức 1) qua nút thứ j của mức 2 tới nút thứ e của mức 3, …, và cuối cùng tới nút đầu tiên của mức k trên cây kiểm thử (với j ∈ {1, 2, ..., t}; e ∈ {1, 2, ..., v}),

o i1j/o1j.i2e/o2e.ik2/ok2 là input output của chuyển trạng thái từ trạng thái ban đầu qua trạng thái s1j’ tới trạng thái s22’… và cuối cùng tới trạng thái sk2 - tương ứng với chuyển từ nút gốc qua nút thứ j của mức 2 rồi tới nút thứ e của mức 3… và cuối cùng tới nút thứ 2 của mức k trên cây kiểm thử (với j ∈ {1, 2, ..., t}; e ∈ {1, 2, ..., v}),

o Tổng quát, i1j/o1j.i2e/o2e.ikf/okf là input output của chuyển trạng thái từ trạng thái ban đầu qua trạng thái s1j’ tới trạng thái s2e’… và cuối cùng tới trạng thái skf - tương ứng với chuyển từ nút gốc qua nút thứ j của mức 2 tới nút thứ e của mức 3… và cuối cùng tới nút thứ f của mức k trên cây kiểm thử (với j ∈ {1, 2, ..., t}; e ∈ {1, 2, ..., v}; f = ).

Bảng 5.3: Nhóm ca kiểm thử TC1- của FSM MS

TestCase_ID Pre-Con Input Expected Output Post-Con

TC1-j1 Passed TC0- i1j.x1 o1j.λ1(s1j’,x1) s01 … … … … … TC1-ji Passed TC0- i1j.xi o1j.λ1(s1j’,xi) s01 … … … … … TC1-jn Passed TC0- i1j.xn o1j.λ1(s1j’,xn) s01 Bảng 5.4: Nhóm ca kiểm thử TC2- của FSM MS

TestCase_ID Pre-Con Input Expected

Output Post-Con TC2-e1 Passed TC1- i1j.i2e.x1 o1j.o2e.λ1(s2e’,x1) s01 … … … … … TC2-ei Passed TC1- i1j.i2e.xi o1j.o2e.λ1(s2e’,xi) s01 … … … … … TC2-en Passed TC1- i1j.i2e.xn o1j.o2e.λ1(s2e’,xn) s01 Bảng 5.5: Nhóm ca kiểm thử TCk- của FSM MS TestCase_

ID Pre-Con Input Expected Output

Post- Con

TCk-f1 Passed TC(k-1)- i1j.i2e…ikf.x1 o1j.o2e…okf.λ1(skf’,x1) s01

… … … … …

TCk-fi Passed TC(k-1)- i1j.i2e…ikf.xi o1j.o2e…okf.λ1(skf’,xi) s01

… … … … …

5.3. Ví dụ

Cho FSM MS được biểu diễn bởi đồ thị sau:

Hình 5.4: Đồ thị biểu diễn FSM MS [5].

Và FSM MI1 là bản cài đặt 1của FSM MS, giả sử được cài đặt như sau:

FSM MI2 là bản cài đặt 2 của FSM MS, giả sử được cài đặt như sau:

Hình 5.6: Mô hình máy hữu hạn trạng thái MI2.

FSM MI3 là bản cài đặt 3 của FSM MS, giả sử được cài đặt như sau:

Hình 5.7: Mô hình máy hữu hạn trạng thái MI3.

Hãy xác định xem:

a) MI1 có mô phỏng MS không? b) MI2 có mô phỏng MS không? c) MI3 có mô phỏng MS không?

Hình 5.8: Cây kiểm thử từ mô hình FSM MS.

 Tìm tập bao phủ chuyển trạng thái từ cây kiểm thử:

Sau khi xây dựng cây kiểm thử, bước tiếp theo ta tiến hành tìm tập bao phủ chuyển trạng thái từ cây kiểm thử.

P = {0/0.B, 1/0.D, 0/0.0/0.A, 0/0.1/1.B, 1/0.0/1.D, 1/0.1/0.C, 1/0.1/0.0/1.D, 1/0.1/0.1/1.A}

2. Xác định chuỗi kiểm chứng trạng thái

Áp dụng một trong các phương pháp đã trình bày ở Chương 4 để tìm chuỗi kiểm chứng trạng thái

Mô hình máy hữu hạn trạng thái MS có chuỗi kiểm chứng trạng thái là 11 (áp dụng phương pháp DS).

3. Sinh ca kiểm thử

Ca kiểm thử của FSM MS được thể hiện trong Bảng 5.6 dưới đây.

Bảng 5.6: Ca kiểm thử của FSM MS

4. Kiểm thử

a) Đối với mô hình cài đặt FSM MI1, ta có kết quả kiểm thử như ảng 5.7 dưới đây:

TestCase_ID Pre-Con Input Expected Output Post-Con

TC0-1 11 00 A TC1-11 Passed TC0- 011 011 A TC1-21 Passed TC0- 111 001 A TC2-11 Passed TC1- 0011 0000 A TC2-21 Passed TC1- 0111 0111 A TC2-31 Passed TC1- 1011 0101 A TC2-41 Passed TC1- 1111 0010 A TC3-11 Passed TC2- 11011 00101 A TC3-21 Passed TC2- 10111 00100 A

Nhận x t: Theo kết quả kiểm thử trên thì mọi Actual Output đều giống như

Expected Output tại ca kiểm thử tương ứng nên FSM MI1 mô phỏng FSM MS.

b) Đối với mô hình cài đặt FSM MI2, ta có kết quả kiểm thử như ảng 5.8 dưới đây:

Bảng 5.8: Kết quả kiểm thử của FSM MI2

TC1-21 Passed TC0- 111 001 001 A TC2-11 Passed TC1- 0011 0000 0000 A TC2-21 Passed TC1- 0111 0111 0111 A TC2-31 Passed TC1- 1011 0101 0101 A TC2-41 Passed TC1- 1111 0010 0010 A TC3-11 Passed TC2- 11011 00101 00101 A TC3-21 Passed TC2- 10111 00100 00100 A

TestCase_ID Pre-Con Input Expected Output Output Actual Post-Con

TC0-1 11 00 00 A TC1-11 Passed TC0- 011 011 N/A A TC1-21 Passed TC0- 111 001 001 A TC2-11 Passed TC1- 0011 0000 0000 A TC2-21 Passed TC1- 0111 0111 0111 A TC2-31 Passed TC1- 1011 0101 0101 A TC2-41 Passed TC1- 1111 0010 0010 A TC3_11 Passed TC2- 11011 00101 00101 A TC3_21 Passed TC2- 10111 00100 00100 A

Nhận x t:

TC1-11có Actual Output là N tức là FSM MI2 không chấp nhận chuỗi input 011 nên không tồn tại chuỗi chuyển trạng thái với input 011 cho output 011. Do đó, MI2 không mô phỏng MS.

c) Đối với mô hình cài đặt FSM MI3, ta có kết quả kiểm thử như ảng 5.9 dưới đây:

Bảng 5.9: Kết quả kiểm thử của FSM MI3

Nhận x t:

TC2-31có Actual Output là 0101 và 1101 tức là FSM MI3 có tồn tại một chuỗi chuyển trạng thái với input là 1011 và output là 1101 nhưng MS không có nên

MI3 không mô phỏng MS.

TestCase_ID Pre-Con Input Expected Output Output Actual Post-Con

TC0-1 11 00 00 A TC1-11 Passed TC0- 011 011 011 A TC1-21 Passed TC0- 111 001 001 A TC2-11 Passed TC1- 0011 0000 0000 A TC2-21 Passed TC1- 0111 0111 0111 A TC2-31 Passed TC1- 1011 0101 0101 1101 A TC2-41 Passed TC1- 1111 0010 0010 A TC3_11 Passed TC2- 11011 00101 00101 A TC3_21 Passed TC2- 10111 00100 00100 A

Trong luận văn này, tác giả đã trình bày tổng quan về mô hình máy hữu hạn trạng thái và đi sâu nghiên cứu về phương pháp xác định chuỗi kiểm chứng trạng thái như: xác định Unique Input – Output sequence, Distingguishing sequence, Characterizing sequence. Luận văn cũng trình bày phương pháp kiểm thử dựa trên mô hình máy hữu hạn trạng thái và dùng khái niệm mô phỏng như là một tiêu chí để đánh giá sự cài đặt đúng đắn của hệ thống so với đặc tả.

Luận văn đi sâu nghiên cứu về độ bao phủ của mô hình máy hữu hạn trạng thái, và từ đó đưa ra phương pháp sinh ca kiểm thử để kiểm thử xem hệ

Một phần của tài liệu Nghiên cứu kỹ thuật sinh ca kiểm thử từ mô hình máy hữu hạn trạng thái (Trang 43)