Chiến lƣợc mặc định: Một chiến lƣợc mặc định hoặc cơ bản cho một MP nhất định đƣợc cung cấp bởi lớp Strategy. Chiến lƣợc cơ bản không có trạng thái tester bổ sung, nó thực hiện một chiến lƣợc lựa chọn hành động ít bộ nhớ đƣợc gọi.
Tester có thể đƣợc sử dụng phù hợp với ct để chạy MP bag bị giới hạn so với stepper bag. Khi nó xảy ra, mọi kiểm thử đầu tiên không thành công với một dấu vết bao gồm một hành động Lookup_Start (null) với một lý do thất bại rằng null không thể là một từ khóa trong từ điển đƣợc sử dụng để thực hiện bag. Lỗi có thể đƣợc sửa dễ dàng bằng cách đếm các giá trị null riêng biệt và không cố chèn thêm null hoặc tìm nó trong từ điển. Bây giờ, hãy giả định rằng tập hợp tham số bị giới hạn với các giá trị : " " và "b", có nghĩa là đổi định nghĩa của E trong hình 3.14 thành: readonly static Set<string> E = new Set<string>("","b");
Sau một vài thực thi của ct, tester nhận đƣợc một dấu vết thất bại khác. TestResult(2, Verdict("Failure"),
Unexpected return value of finish action, expected: Count_Finish(2)
Unexpected finish action", Trace( Count_Start(), Count_Finish(0), Delete(""), Add(""), Add("b"), Add(""), Delete("b"), Delete("b"), Count_Start(), Count_Finish(1) ) )
Ở đây, lỗi là lời gọi cuối cùng đến Count trả về 1 thay vì 2. Chú ý rằng phải có hai chuỗi rỗng trong bảng vào thời điểm này. Bằng cách kiểm tra thực hiện ta có thể nhìn thấy rằng khi một phần tử bị xóa, một trƣờng hợp bị thiếu cho tình huống khi số lƣợng phần tử bị xóa trở thành 0. Nếu điều này xảy ra sau đó việc xóa cũng nên loại bỏ phần tử từ bảng.
CHƢƠNG 4. XÂY DỰNG DEMO VÀ KIỂM THỬ HỆ THỐNG VỚI NMODEL 4.1. Giới thiệu NModel 4.1. Giới thiệu NModel
4.1.1. Cài đặt NModel
Để cài đặt NModel, máy tính phải có .NET và không cần thiết phải có Visual Studio.
Phiên bản .Net có thể làm việc là Framwork .NET 3.5. Nếu có sẵn phiên bản 2 hoặc 3 thì cũng làm việc đƣợc. Sau đó làm theo các bƣớc sau để cài đặt :
Bƣớc 1 : Download Nmodel.msi. Mở và cài đặt (chọn Typical Install).
Việc thực thi file .msi cài đặt thƣ viện Nmodel, 4 chƣơng trình mpv, mp2dot, otg, và ct, và trợ giúp trực tuyến (online help). Đây là tất cả những gì cần chạy chƣơng trình, tạo và sử dụng các chƣơng trình mô hình của riêng mình.
Bƣớc 2: Để chạy mpv, công cụ bố cục đồ họa (the graph layout engine) GLEE phải đƣợc cài đặt. Chú ý rằng GLEE sử dụng giấy phép bản quyền ít hơn Nmodel. Sau khi đã cài đặt cả NModel và GLEE, thì phải copy GLEE DLLs vào trong thƣ mục bin của NModel. Trong quá trình cài đặt nơi mà cả hai đƣợc cài đặt ở vị trí mặc định, điều đó có thể đƣợc thực hiện bằng đƣờng dẫn:
Cd C: \Program Files\Microsoft Research\GLEE\bin Copy *.dll…\...\...\Nmodel\bin
Ngoài mpv ra, mp2dot (Model Program to Dot) cũng có thể đƣợc sử dụng. Chƣơng trình mp2dot không yêu cầu GLEE, và đƣợc bao gồm bởi giấy phép bản quyển của NModel nên dễ dàng hơn.
Bƣớc 3: Sau khi cài đặt xong phải thiết lập biến môi trƣờng bằng cách:
Nhấn phải chuột vào biểu tƣợng Computer. Khi đó, xuất hiện hộp thoại, chọn Remote Settings =>chọn Advanced => chọn Environment Variables => chọn Path => Copy đƣờng dẫn C:\Windows\Microsoft.NET\Framework\v3.5 và C:\Program Files\NModel\bin trong ổ C và dán vào ô Variable value và chọn OK.
4.1.2. Cách sử dụng các công cụ mpv, otg, ct 4.1.2.1. Công cụ mpv 4.1.2.1. Công cụ mpv
Công cụ mpv đƣợc sử dụng để hình dung và phân tích hành vi của một hoặc nhiều chƣơng trình. Nó thực hiện thăm dò, nó tạo ra một máy trạng thái hữu hạn FSM từ một MP. MPV hiển thị đồ thị của FSM đƣợc tạo, đồng thời khảo sát và hiển thị thành phần của tất cả các chƣơng trình mô hình đƣợc có tên trên dòng lệnh, nó có thể là các MP C# hoặc các FSM. MPV cung cấp nhiều lựa chọn (trên dòng lệnh và giao diện sử dụng của nó) để điều chỉnh đồ thị đƣợc hiển thị, lƣu trữ và khôi phục các kết quả của việc thăm dò. Nó cũng cung cấp cơ sở để kiểm tra các trạng thái (biến chƣơng trình và giá trị của chúng), và để khám phá các chƣơng trình tƣơng tác (từng bƣớc, làm việc chuyển tiếp từ một vài trạng thái quan tâm).
Bằng cách tìm kiếm FSM, mpv có thể thực hiện phân tích an toàn để kiểm tra xem hệ thống có đạt đƣợc các trạng thái bị cấm không, và phân tích tính hoạt động đƣợc để xác định các trạng thái chết.
Công cụ mpv đòi hỏi phần mềm GLEE phải đƣợc cài đặt. Các công cụ còn lại không yêu cầu GLEE.
Cách sử dụng (Usage) mpv: mpv [/reference:<string>]*[/mp:<string>]* /initialTransitions:<int>]* [/transitionLabels:{None|ActionSymbol|Action}]* [/nodeLabelsVisible[+|-]]* [/initialStateColor:<string>]* [/hoverColor:<string>]* [/selectionColor:<string>]* [/deadStateColor:<string>]* [/deadStatesVisible[+|-]]* [/unsafeStateColor:<string>]* [/maxTransitions:<int>]* [/loopsVisible[+|-]]* [/mergeLabels[+|-]]* [/acceptingStatesMarked[+|-]]* [/stateShape:{Box|Circle|Diamond|Ellipse|Octagon|Plaintext}]* [/direction:{TopToBottom|LeftToRight|RightToLeft|BottomToTop}]* [/combineActions[+|-]]* [/livenessCheckIsOn[+|-]]* [/safetyCheckIsOn[+|-]]*
[/testSuite:<string>]* [/fsm:<string>]* [/startTestAction:<string>]* [/group:<string>]* <model>* @<file> Ví dụ: mpv @mpv args.txt mpv /fsm:M1.txt /fsm:M2.txt mpv /testSuite:ContractTest.txt mpv /r:NewsReaderUI.dll NewsReader.Factory.Create mpv /r:NewsReaderUI.dll /mp:NewsReader
mpv /r:Controller.dll Reactive.Factory.Create /safetyCheckIsOn+ mpv /r:Controller.dll /mp:Reactive /safetyCheckIsOn+
41.2.2. Công cụ otg
Công cụ otg tạo ra một bộ kiểm thử ngoại tuyến (offline test suite) mà đạt đƣợc độ bao phủ liên kết của máy trạng thái hữu hạn (FSM) đƣợc tạo ra từ một MP. Sau đó, bộ kiểm thử có thể đƣợc thực hiện bởi Conformance Tester (công cụ ct).
Cách sử dụng otg:
otg [/reference:<string>]* [/mp:<string>]* [/file:<string>]* [/append[+|-]]* [/fsm:<string>]* <model>* @<file>
Ví dụ:
otg @otg args.txt
otg /r:ClientServer.dll ClientServer.Factory.Create /fsm:Scenario.txt otg /r:ClientServer.dll /mp:ClientServer /fsm:Scenario.txt
otg /r:ClientServer.dll ClientServer.Factory.Create /file:ContractTest.txt
otg /r:ClientServer.dll /mp:ClientServer /file:ContractTest.txt
4.1.2.3. Công cụ ct
Để thực hiện các test bằng cách sử dụng test runner ct, một bản khai thác kiểm thử phải đƣợc viết bằng C# để kết nối thực hiện đến ct. Một bộ kiểm thử đƣợc tạo ra từ một MP bởi công cụ otg, hoặc ct có thể tạo ra các ca kiểm thử trực tiếp từ một MP khi test run thực thi, và một chiến lƣợc tùy chỉnh có thể đƣợc viết bằng C# mà ct sử dụng để tối đa hóa độ bao phủ theo tiêu chí đƣợc xác định.
ct /iut:<string> [/modelStepper:<string>] /reference:<string>+ [/mp:<string>]*
[/coverage:<string>]* [/steps:<int>]* [/maxSteps:<int>]* [/runs:<int>]*
[/observableAction:<string>]* [/cleanupAction:<string>]* [/internalAction:<string>]* [/waitAction:<string>]* [/timeoutAction:<string>]*
[/timeout:<int>]* [/continueOnFailure[+|-]]* [/logfile:<string>]* [/randomSeed:<int>]* [/overwriteLog[+|-]]* [/testSuite:<string>]* [/fsm:<string>]* [/startTestAction:<string>]* <model>* @<file>
Ví dụ:
ct @ct args.txt
ct /r:Stepper.dll /iut:ClientServerImpl.Stepper.Create /testSuite:ContractTest.txt
ct /r:ClientServer.dll ClientServer.Factory.Create /r:Stepper.dll ^ /iut:ClientServerImpl.Stepper.Create /fsm:Scenario.txt /runs:1 ct /r:ClientServer.dll /mp:ClientServer /r:Stepper.dll ^
/iut:ClientServerImpl.Stepper.Create /fsm:Scenario.txt /runs:1
4.2. Xây dựng và thực nghiệm với demo hệ thống client/server 4.2.1. Mô tả bài toán 4.2.1. Mô tả bài toán
Trong luận văn này, tôi chọn bài toán về hệ thống nhúng để kiểm thử với NModel là thiết bị điều khiển từ xa – hệ thống client/server. Bài toàn này đƣợc tham khảo trong tài liệu [4]. Đây là một ứng dụng nhỏ nhƣng tƣơng đối đầy đủ. Mục đích của bài toán là phát triển một hệ thống thiết bị phòng thí nghiệm bao gồm một cảm biến nhiệt độ kết nối với một máy tính nhúng, một mạng, và một máy tính khác đƣợc sử dụng để lƣu trữ và phân tích dữ liệu (hình 4.1). Trên máy tính nhúng (Server) có một chƣơng trình giám sát nhiệt độ đƣợc cài đặt. Trên máy tính khác (Client) có một chƣơng trình khai thác dữ liệu đƣợc cài đặt. Các chƣơng trình giao tiếp với nhau qua mạng bằng cách sử dụng giao thức TCP/IP (hình 4.2), vì vậy client có thể sử dụng internet để kết nối tới một server trong một nhà máy ở xa hoặc trạm thời tiết.