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

Một phần của tài liệu MỘT số PHƯƠNG PHÁP xác ĐỊNH CHUỖI KIỂM CHỨNG TRẠNG THÁI (Trang 48 - 54)

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

2. Với mỗi input a và output b thì mỗi chuyển trạng thái s1 s1’ của MS

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

“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) ∃λ1(s01,x) ≠ λ2(s02,x) ∃[λ1(s1,a) ≠ λ2(s2,a)] ∃[λ1(s2,x) ≠ λ2(s2’,x)] ∃[λ1(s2,x) = λ2(s2’,x)] Kết luận - T - - - No T F T - - No T F F T - No T F T F T Yes

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

“Yes”: 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:

 Output ứng với chuyển trạng thái từ s2 s2’ của MI không giống với

output ứng với chuyển trạng thái từ s1 s1’ của MS.

2. Lỗi liên quan đến trạng thái:

 Trạng thái ban đầu của MI không mô phỏng trạng thái ban đầu của MS.

 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Ử 5.1. Độ bao phủ mô hình máy hữu hạn trạng thái

Như đã trình bày ở Chương 2, những đặc trưng của máy trạng thái bao gồm: trạng thái (state), input, output, chuyển trạng thái (transtion). Theo [4] thì trong việc kiểm thử dựa trên mô hình FSM chúng ta thường coi vấn đề input như là một phần của vấn đề trạng thái hoặc chuyển trạng thái. Giả định rằng tất cả inputs cần phải được xử lý một cách chính xác thông qua một số quá trình chuyển trạng thái của FSM, thậm chí cả khi đầu vào không hợp lệ được mong đợi là sẽ được xử lý chính xác mà không gây treo hệ thống hoặc các vấn đề khác, chẳng hạn như thông qua các cách thức sau đây:

 Bỏ qua input không hợp lệ như là đứng yên ở cùng một trạng thái đối

với những trường hợp input không hợp lệ đó.

 Xử lý trực tiếp input không hợp lệ như xuất ra thông báo lỗi thông qua

việc điều khiển những ngoại lệ và những sự chuyển trạng thái liên quan.

Đối với outputs, chúng ta cũng không giải quyết trực tiếp những vấn đề về output mà coi nó là một phần của vấn đề kiểm thử chuyển trạng thái. Ví dụ, sự chuyển tiếp đưa ra những thông tin không mong đợi như thừa, thiếu, lỗi output thì sẽ xác định sự chuyển tiếp là sự chuyển tiếp lỗi.

Vì thế trong kiểm thử dựa trên FSM tập trung vào những vấn đề về trạng thái và chuyển trạng thái. Input được sử dụng chính cho sự cập nhật và output được sử dụng chính cho sự kiểm tra kết quả.

Một câu hỏi đặt ra là: để kiểm thử FSM MIthì cần thiết kế bao nhiêu ca

kiểm thử? Căn cứ vào đâu để biết được số ca kiểm thử đã đủ hay chưa? Trước tiên, chúng ta xem xét hai chỉ số để đo độ bao phủ là: Độ bao phủ trạng thái (state coverage) và độ bao phủ chuyển trạng thái (transition coverage).

5.1.1. Độ bao phủ trạng thái (state coverage)

Để đạt được độ bao phủ trạng thái ta lựa chọn chuỗi các chuyển trạng thái sao cho mỗi trạng thái được thăm ít nhất một lần [5]. Bài toán này sẽ tương đương với việc tìm đường đi qua tất cả các đỉnh của một đồ thị có hướng sao cho mỗi đỉnh được thăm ít nhất một lần. Vì mỗi đỉnh của đồ thị tương đương với một trạng thái mà các trạng thái là hữu hạn nên việc tìm đường đi này là hoàn toàn có thể thực hiện được.

Ta xét máy hữu hạn trạng thái C1 như Hình 5.1 sau:

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

Với đường đi qua các đỉnh q1 → q4 → q3 → q5 → q2 → q1 (đường nét đậm trong Hình 5.2) sẽ qua tất cả các đỉnh của đồ thị, điều đó có nghĩa là tất cả các trạng thái của FSM đều được thăm. Do đó, với chuỗi chuyển trạng thái q1

Hình 5.2: Một đường đi bao phủ tất cả các trạng thái của FSM C1.

Tuy nhiên, độ bao phủ trạng thái là điều kiện lựa chọn yếu nhất trong tất cả các điều kiện lựa chọn để tạo ra ca kiểm thử [5]. Đường đi q1 → q4 → q3 → q5 → q2 → q1 mới chỉ bao phủ được 5/10 chuyển trạng thái, như vậy còn 5 chuyển trạng thái không được bao phủ và lỗi khi cài đặt có thể xuất hiện ở phần không được bao phủ này. Chúng ta xét một dạng điều kiện bao phủ mạnh hơn đó là bao phủ chuyển trạng thái. Độ bao phủ chuyển trạng thái sẽ được trình bày trong mục 5.1.2.

Một phần của tài liệu MỘT số PHƯƠNG PHÁP xác ĐỊNH CHUỖI KIỂM CHỨNG TRẠNG THÁI (Trang 48 - 54)