Một hệ thống được đặc tả bởi mô hình máy hữu hạn trạng thái MS và được cài đặt bằng MI. Kiểm thử xem hệ thống MI có “hoạt động đúng” theo như đặc tả
MS hay không bằng cách so sánh hành vi của hai máy trạng thái dựa trên sự quan sát hành vi input output của MI gọi là kiểm tra sự phù hợp hay sự tìm lỗi [6].
Như thế nào là “hoạt động đúng”, như thế nào là “phù hợp”, như thế nào là “lỗi”? Căn cứ vào đâu để chúng ta có thể đưa ra kết luận MI hoạt động đúng theo đặc tả MS? Trong luận văn này, chúng tôi xin đề xuất khái niệm mô phỏng như là một tiêu chí để đánh giá MI có “hoạt động đúng” như đặc tả hay không.
Như vậy, bài toán ở đây là kiểm thử xem MI có mô phỏng MS hay không, nếu MI không mô phỏng MS thì có lỗi trong quá trình cài đặt.
Làm thế nào để biết được máy hữu hạn trạng thái MI có mô phỏng máy hữu
hạn trạng thái MS hay không? Phương pháp kiểm thử với việc kiểm chứng trạng thái [5] là cách để giúp ta có câu trả lời này. Ý tưởng của phương pháp như sau:
Hình 4.3: Mô hình khái niệm kiểm thử với việc kiểm chứng trạng thái [5].
Phương pháp:
Bước 1: Giả sử rằng FSM MI đang ở trạng thái ban đầu s0, di chuyển FSM MI tới si bằng việc áp dụng một chuỗi inputs được gọi là chuỗi chuyển đổi, được ký hiệu là T(si). Các trạng thái khác nhau thì có chuỗi chuyển đổi khác nhau: T(si) ≠ T(sj) với i ≠ j. Kết thúc bước này, FSM MI ở trạng thái si.
Bước 2: Áp dụng input a cho FSM MI và quan sát output thực tế đạt được, output này được so sánh với giá trị mong đợi b của FSM MS. Kết thúc bước này, nếu chuyển trạng thái được cài đặt đúng thì FSM MI được chuyển sang trạng thái mới sj, trạng thái này mô phỏng trạng thái sj’ của FSM MS.Tuy nhiên sự cài đặt có thể có lỗi, FSM MI khi đó được chuyển tới một trạng thái khác trạng thái sj,trạng thái này không mô phỏng trạng thái sj’ của FSM MS. Trạng thái sj của FSM MI có mô phỏng trạng thái sj’ của FSM MS hay không, điều này sẽ được kiểm chứng (verified) ở bước tiếp theo.
Bước 3: Áp dụng chuỗi kiểm chứng VERj cho FSM MI và quan sát chuỗi
output thực tế đạt được, chuỗi output này được so sánh với chuỗi output tương ứng của FSM MS. Một tính chất quan trọng của VERj là λ(sj,VERj) λ(sl,VERj),∀sl và sl sj. Kết thúc bước này FSM MI ở trạng thái sk.
viết được ngay những đoạn mã không có lỗi. Tính trung bình, một lập trình viên loại tốt thì cũng mắc từ 1 đến 3 lỗi trên 100 dòng lệnh. Người ta ước lượng rằng, việc kiểm thử để tìm ra các lỗi này chiếm phần nửa khối lượng công việc phải làm để có được một phần mềm hoạt động được” [3]. Khi cài đặt MI, thì lập trình viên thường mắc phải là những lỗi gì, chi tiết sẽ được trình bày ở phần tiếp theo.