Một số lỗi thường gặp khi cài đặt FSM

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 36)

Khi có bản đặc tả FSM MS = < S1, I, O, s01, δ1, λ1> và hệ thống cài đặt FSM

MI = < S2, I, O, s02, δ2, λ2> , một câu hỏi đặt ra là FSM MI có mô phỏng FSM

MS hay không? Để trả lời câu hỏi này, ta lần lượt trả lời các câu hỏi sau:

1. Trạng thái ban đầu của FSM MI có mô phỏng trạng thái ban đầu của FSM MS hay không?

2. Với mỗi input a và output b thì mỗi chuyển trạng thái s1 s1’ của MS có tồn tại chuyển trạng thái s2 s2’ của MI và trạng thái s2’ có mô phỏng trạng thái s1’ hay không?

Như đã biết FSM MI là một hệ thống cài đặt, nó là một hộp đen (black-box) nên ta không thể quan sát trực tiếp trạng thái của MI mà ch có thể quan sát output của nó thông qua các điểm quan sát khi cung cấp cho MI input thông qua điểm điều khiển. Do đó để trả lời câu hỏi trạng thái ban đầu của FSM MI có mô phỏng trạng thái ban đầu của FSM MS hay không ta dùng một trong các phương pháp kiểm chứng trạng thái đã trình bày ở Chương 3 để xác minh. Giả sử chuỗi kiểm chứng trạng thái là x thì:

 Nếu [λ1(s01,x) = λ2(s02,x)] và ∄[λ1(s01,x) ≠ λ2(s02,x)] thì s02 cùng hành vi với s01 hay trạng thái s02 mô phỏng trạng thái s01.

 Nếu [λ1(s01,x) ≠ λ2(s02,x)] thì trạng thái s02 không cùng hành vi với s01 hay trạng thái s02 không mô phỏng trạng thái s01

Đốivới câu hỏi 2. ta x t 2 trường hợp: Thứ nhất, ứng với mỗi chuyển trạng thái s1 s1’ của MS có tồn tại chuyển trạng thái s2 s2’của MI hay không? Thứ hai, trạng thái s2’ có mô phỏng trạng thái s1’ hay không?

Có tồn tại chuyển trạng thái s2 → s2’ hay không? Ta kiểm tra xem khi chuyển từ s2 sang s2’ thì MI có cùng output với MS hay không?

 Nếu λ2(s2,a) ≠ λ1(s1,a) thì không tồn tại chuyển trạng thái s2 s2’ ⟹ s2 và s1 không cùng hành vi hay s2 không mô phỏng s1 nên MI không mô phỏng

MS.

 Nếu λ2(s2,a) = λ1(s1,a) thì tồn tại chuyển trạng thái s2 s2’. Tuy nhiên ta phải kiểm tra xem s2’ có mô phỏng s1’ hay không? Để trả lời câu hỏi “trạng thái s2’ có mô phỏng trạng thái s1’ hay không?” ta cũng sẽ dùng một trong các phương pháp kiểm chứng trạng thái đã trình bày ở Chương 3 để xác minh.

 Nếu [λ1(s1’,x) = λ2(s2’,x)] và ∄[λ1(s1’,x) ≠ λ2(s2’,x)] thì s2’ cùng hành vi với s1’ hay trạng thái s2’ mô phỏng trạng thái s1’.

 Nếu ∄[λ1(s1’,x) ≠ λ2(s2’,x)] thì trạng thái s2’ không cùng hành vi với s1’ hay trạng thái s2’ không mô phỏng trạng thái s1’.

Kết hợp kiểm tra output và kiểm chứng trạng thái của mỗi một chuyển trạng thái ta sẽ trả lời được câu hỏi 2.

Như vậy, kết hợp câu trả lời của câu hỏi 1. và 2. ta sẽ có câu trả lời cho câu hỏi “FSM MI có mô phỏng FSM MS hay không?”. Ta có Bảng 4.1 tổng hợp các lỗi khi cài đặt FSM MI như sau:

Bảng 4.1: Bảng tổng hợp các lỗi khi cài đặt FSM MI

λ1(s01,x) = λ2(s02,x) λλ12(s(s0102,x) ≠ ,x) [λ1(s1,a) ≠ λ2(s2,a)] [λ1(s1’,x) ≠ λ2(s2’,x)] [λ1(s1’,x) = λ2(s2’,x)] Kết luận - T - - - No T F T - - No T F F T - No T F F F T Yes

“No”: MIkhông mô phỏng MS

“ es”: MI có mô phỏng MS

Như vậy, qua Bảng 4.1 ta có thể thấy một số lỗi thường gặp khi kiểm thử sự mô phỏng của hai FSMs như sau:

 Trạng thái tiếp theo của một chuyển trạng thái của MI không mô phỏng trạng thái trạng thái tiếp theo ứng với chuyển trạng thái tương ứng của MS. Trên đây là những lỗi mà lập trình viên có thể mắc phải khi cài đặt FSM

MI. Tuy nhiên, để kiểm thử viên phát hiện được ra những lỗi đó thì không phải đơn giản nếu không có phương pháp và chiến lược kiểm thử tốt. Trong chương 5 chúng tôi sẽ trình bày về độ bao phủ của mô hình FSM và chọn ra tiêu chí tốt nhất để sinh ca kiểm thử mà có thể phát hiện được các lỗi đã được tổng kết ở Bảng 4.1.

Chương 5. KỸ THUẬT SINH 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 36)