Độ bao phủ test là tỉ lệ (tính theo %) các ca kiểm thử đã được thực hiện trên tổng số các ca kiểm thử cần thiết. Nếu tỉ lệ này càng cao thì mô hình càng được test kỹ. Cần phải cố gắng thực hiện để đảm bảo mô hình có độ phủ kiểm thử đat 100%.
Trong Simulink độ phủ testcase được đánh giá trên việc phân tích toàn bộ phạm vi mô hình và phân tích mã để đo lường sự hoàn chỉnh trong mô hình và mã được tạo ra. Nó áp dụng các chỉ số chuẩn công nghiệp như quyết định, điều kiện, phạm vi điều chỉnh / quyết định sửa đổi (MCDC) và phạm vi ranh giới quan hệ để đánh giá tính hiệu quả của thử nghiệm mô phỏng trong các mô hình, phần mềm trong vòng lặp (SIL) và bộ xử lý - vòng lặp (PIL). Chúng ta có thể sử dụng dữ liệu phủ bị thiếu để tìm những lỗ hổng trong kiểm thử, những yêu cầu còn bỏ sót hoặc những chức năng không mong muốn.
Độ phủ trong Simulink tạo ra các báo cáo tương tác cho biết số lượng các mô hình được kiểm thử, các hàm C/C ++, các hàm MATLAB và mã được tạo bởi Embedded Coder đã được thực hiện. Từ đó có thể làm nổi bật kết quả kiểm thử tại các khối và hệ thống con để xác định những khoảng trống trong thử nghiệm. Để đánh giá tính đầy đủ của quá trình kiểm thử, ta có thể tích lũy kết quả kiểm thử từ
nhiều lần chạy thử nghiệm. Sau đó có thể áp dụng bộ lọc để loại trừ các khối khỏi vùng phủ và định nghĩa mức độ phủ bị thiếu trong báo cáo.
Tăng độ phủ kiểm thử cho mô hình bằng cách khởi tạo đầu vào kiểm thử
Nếu các trường hợp kiểm thử không đạt được độ phủ nhất định thì cần phải tăng độ phủ bằng cách tạo ra các đầu vào cho kiểm thử bắng cách sử dụng công cụ Simulink Design Verifier. Ví dụ sau cho biết cách tăng độ phủ kiểm thử trong trường hợp cần khởi tạo các ca kiểm thử bên ngoài. Đầu tiên cần xác định độ phủ ban đầu. Sau đó, tạo các ca kiểm thử mới, thêm chúng vào bộ thử nghiệm, chạy thử nghiệm và tổng hợp độ phủ của bộ dữ liệu thử nghiệm.
Quy trình tăng độ phủ kiểm thử
- Xác định độ phủ của mô hình tương ứng với các ca kiểm thử ban đầu.
- Tạo thêm các ca kiểm thử bổ sung để đạt mức phủ cao hơn.
- Tạo các ca kiểm thử mới thêm vào tập thử nghiệm.
- Chạy tất cả các ca kiểm thử và tổng hơp lại mức phủ.
Quy trình làm việc theo minh họa: Ví dụ này kiểm tra thành phần của một hệ thống tự động bằng cách sử dụng một trường hợp kiểm thử khai thác. Tệp kiểm thử được tính toán để tập hợp độ phủ kiểm thử:
Thực hiện:
B1: Thiết lập đường dẫn, Xác định đúng thư mục làm việc, Mở file kiểm thử
filePath=fullfile(matlabroot,'toolbox','simulinktest','simulinktestdemos'); rollModel = 'RollAutopilotRevised';
testHarness = 'RollReference_LoggedDataTest';
testFile = 'RollRefTest.mldatx'; sltest.testmanager.view;
B2: Chạy thử nghiệm, trong mục Test Browwer, đánh dấu Loggged Data and Coverage test suite. Nhấn Run
B3: Sau khi kiểm thử hoàn thành, trong kết quả kiểm tra, mở rộng phần Coverage Results để nắm được kết quả.
a. Decision coverage: 80%
b. Condition coverage: 70%
c. MCDC 25%
B4: Tạo thêm các ca kiểm thử để tăng độ phủ cho mô hình
- Tạo thêm ca kiểm thử cho phần phủ còn thiếu
Dưới mục Coverage Result/ Add Tests for Missing Coverage chọn theo
các tùy chọn:
Harness: RollReference_LoggedDataTest: Thêm mới đầu vào cho những ca kiểm thử khai thác có sẵn
Test Case: Create a new test case. : Tạo mới các ca kiểm thử Test Type: Baseline Test. : Lựa chọn đầu ra cho mô hình Test File: RollRefTest. : Sử dụng lại các tập kiểm thử có sẵn.
Khi quá trình tạo ca kiểm thử hoàn tất, các ca kiểm thử xuất hiện trong Test Manager:
B5: Chạy các ca kiểm thử mới
- Sao chép các ca kiểm thử vào mục: Logged Data and Coverage
- Chạy lại bộ Logged Data and Coverage một lần nữa.
- Khi quá trình tính toán hoàn tất, chọn Results and Artifacts/ Aggregated Coverage Results. Bộ kết quả sẽ được hiển thị:
a. Decision: 100%
b. Condition: 100%
c. MCDC: 100%
B6: Hoàn tất quá trình, thực hiện xóa các biến và file kết quả. Sau đó đóng mô hình
clear filePathreqDocrollModeltestFile testHarnesstopModel; sltest.testmanager.clearResults;
sltest.testmanager.close;
Chương 3 - THỬ NGHIỆM VÀ ĐÁNH GIÁ 3.1. Cài đặt Matlab & Simulink toolbox
MATLAB, tên viết tắt của từ tiếng Anh MATrix LABoratory là một môi
trường tính toán số và lập trình, được thiết kế bởi công ty MathWorks. MATLAB là một môi trường mạnh dành cho các tính toán khoa học. Nó tích hợp các phép tính ma trận và phép tính số dựa trên các hàm cơ bản. Hơn nữa, cấu trúc đồ họa hướng đối tượng của Matlab cho phép tạo ra hình vẽ chất lượng cao. MATLAB giúp đơn giản hóa việc giải quyết các bài toán tính toán kĩ thuật so với các ngôn ngữ lập trình truyền thống như C, C++, và Fortran. Ngày nay, Matlab trở thành một ngôn ngữ chuẩn được sử dụng rộng rãi trong nhiều ngành và trên nhiều quốc gia trên thế giới.
Về mặt cấu trúc, Matlab gồm một cửa sổ chính và rất nhiều hàm viết sẵn khác nhau. Các hàm trên cùng lĩnh vực ứng dụng được xếp chung vào một thư viện, điều này giúp người sử dụng dễ dàng tìm kiếm được hàm cần quan tâm. Có thể kể một số thư viện trong Matlab như:
- Control System (Dành cho điều khiển tự động))
- Finacial toolbox (Lĩnh vực kinh tế))
- Fuzzy Logic ( Điều khiển mờ))
- Signal Processing (Xử lý tín hiệu) - Statistics ( Tính toán và thống kê)
- System Identification ( Nhận dạng)
- …
Mỗi năm Mathworks - công ty sản xuất và phân phối MATLAB đưa ra thị trường 2 bản cập nhật rxxxxa vào đầu năm và rxxxb vào cuối năm (với xxxx là năm phát hành). Trong giới hạn luận văn, sử dụng bản Matlab R2016a.
Simulink được tích hợp vào Matlab như một công cụ để mô phòng hệ thông, giúp người sử dụng phân tích và tổng hợp hệ thống một cách trực quan. Trong Simulink, hệ thống được mô tả dưới dạng sơ đồ khối. Với dạng sơ đồ khối này, ta có thể quan sát các đáp ứng thời gian của hệ thống với nhiều tín hiệu vào khác nhau như: tín hiệu bậc thang, tín hiệu sinus, xung chữ nhật, tín hiệu ngẫu
nhiên,.. bằng cách thực hiện mô phỏng. Kết quả mô phỏng có thể được xem theo thời gian thực trong môi trường Simulink hoặc Matlab. Tất cả các hàm trong Matlab đều cố thể truy cập từ Simulink, và ngược lại, các kết quả tìm được trong Simulink đều có thể sử dụng và khái thác trong mô trường Matlab.
Mọi chi tiết về phần mềm, cách sử dụng và các ví dụ của từng lệnh, có thể tham khảo trong phần help của Matlab hoặc download các file dạng *.pdf tạo trang Web của Matlab tại địa chỉ http://www.mathworks.com
3.2. Áp dụng kiểm thử dựa trên mô hình vào bài toán kiểm thử mô hình điều khiển hành trình điều khiển hành trình
Khái quát lại bài toán kiểm thử dựa trên mô hình, ta cần đảm bảo rằng trong quá trình thiết kế và phát triển hệ thống, các mô hình được đưa ra và mô phỏng lại chính xác tương ứng với hệ thống thực nhằm việc kiểm thử đạt hiệu quả tối đa. Các bước thực hiện trong quá trình kiểm thử:
- B1: Xác định các input port, output port của mô hình simulink
- B2: Căn cứ yêu cầu/ đặc tả mô hình từ đó sinh các ca kiểm thử tương ứng
- B3: Chạy chương trinh mô phỏng với mô hình Simulink và các ca kểm thử
thiết kế được.
- B4: Đánh giá mức phủ của ca kiểm thử.
3.2.1. Xây dựng mô hình trong Matlab
Hệ thống điều khiển hành trình (cruise control) của xe ô tô là một hệ thống phản hồi, hiện được ứng dụng rộng rãi trên các xe ô tô hiện nay. Hệ thống được xây dựng nhằm mục đích cố gắng duy trì vận tốc của xe ô tô khi có sự thay đổi độ dốc của một con đường, như đi vào các đoạn đường gập ghềnh. Bộ điều khiển sẽ bù sự thay đổi này bằng cách đo tốc độ của xe và điều chỉnh bướm ga một cách thích hợp.
Hình 3.1: Sơ đồ khối của hệ thống điều khiển hành trình cho hệ thống ô tô.
Bộ điều khiển bướm ga động cơ tạo một mô men xoắn T và truyền nó xuống đất thông qua hộp số và các bánh răng. Kết hợp với các lực bên ngoài môi trường như lực cản khí động học và trọng lực, lực sẽ giúp xe di chuyển. Vận tốc v của xe được đo bởi hệ thống điều khiển và thay đổi bướm ga thông qua cơ chế thực thi. Giao diện người dùng cho phép hệ thống tắt hoặc bật và thiết lập vận tốc mong
muốn 𝑣𝑟
Cho 𝑣 vận tốc của xe và 𝑣𝑟 vận tốc mong muốn (vận tốc tham chiếu). Bộ điều khiển là loại vi tích phân tỷ lệ (PI) nhận các tín hiệu đầu vào 𝑣 và 𝑣𝑟, sau đó tạo ra tín hiệu điều khiển u được gửi tới bộ truyền truyền động điều khiển vị trí bướm ga. Bướm ga kiểm soát mô men xoắn T được tạo bởi động cơ, được truyền qua các bánh răng và báng xe, tạo ra một lực F giúp xe di chuyển. Các lực nhiễu 𝐹𝑑 gây ra xáo trộn do các thay đổi độ dốc đường đi, lực cản lăn và các lực động lực học. Bộ điều khiển hành trình cũng có giao diện người- máy cho phép lái xe thiết lập và thay đổi tốc độ mong muốn. Ngoài ra còn có chức năng ngắt kết nối điều khiển hành trình khi đạp phanh. Hệ thống này bao gồm nhiều thành phần riêng biệt: bộ phận truyền động, động cơ, chuyển số, bánh xe và thân xe với mô hình chi tiết có thể rất phức tạp. Mặc dù vậy, mô hình đáp ứng cho thiết kế bộ điều khiển hành trình khá đơn giản.
Hình 3.2: Mô hình lực cân bằng xe ô tô
Căn cứ vào các biểu thức toán đã được xây dựng ở trên, các khối chức năng được xây dựng trong Matlab tương ứng như sau:
Biểu thức
được biểu diễn thành các khối như sau:
Biểu thức
Tổng lực cản khí động học và ma sát lăn được biểu diễn bằng khối
Cộng tổng 2 khối trên ta sẽ được tổng các ngoại lực tác động lên xe trong quá trình chuyển động
Biểu thức
Được biểu diễn bằng khối
Ghép nối các khối với nhau ta được mô hình hoạt động hệ thống điều khiển hành trình của xe
Căn cứ vào đặc tả mô hình và các phương trình lực tác động lên xe, hệ thống điều khiển hành trình được mô hình hóa thành mô hình đơn giản như sau:
Trong đó:
- Khối Cruise control là bộ điều khiển hành trình.
- Khối Hill Counter là khối dữ liệu đầu vào cho hệ thống là độ dốc của mặt
đường,
- Khối Set Velocity là khối dữ liệu đầu vào cho hệ thống là vận tốc hành
trình mong muốn
Hình 3.3: Chi tiết khối Cruise control 3.2.2. Sinh ca kiểm thử và thực thi và kết quả kiểm thử
Hệ thống phải đáp ứng các yêu cầu cơ bản như sau:
Sau khi thiết lập tốc độ hành trình thời gian để đạt tốc độ hành trình không quá 60 giây.
Khi giá trị độ dốc của mặt đường (hill couter) thay đổi hệ thống phải tự điều chỉnh để vẫn duy trì được tốc độ hành trình mong muốn không quá 10%.
Với các yêu cầu như trên, các ca kiểm thử cho mô hình được tạo ra như sau:
- Trên giao diện Simulink chọn Analyst Test Manager.
- Tại giao diện Test Manager chọn New Test File from Model , chọn mô
Simulink sẽ tạo ra bộ test case tương ứng với bộ tạo giá trị đầu vào của hệ thống điều khiển hành trình.
Mặc định trường hợp kiểm thử tự động sẽ nhận các tham số đầu vào do bộ nguồn tạo là các tham số để kiểm thử.
Khi thực thi các trường hợp kiểm thử do chưa có ràng buộc nên Simulink sẽ thực thi mô hình và hiển thị các giá trị đầu ra, và thông báo trường hợp kiểm thử đã thành công.
Trường hợp kiểm thử 1: Thay đổi giá trị tốc độ mong muốn, giữ nguyên độ dốc của mặt đường, xem xét giá trị vận tốc đầu ra có nằm trong khoảng cho phép, thời gian thiết lập tốc độ nằm trong ngưỡng cho phép hay không.
Để thực hiện kiểm thử, tạo sẵn file cơ sở dữ liệu thiết lập độ dốc của mặt đường, vận tốc mong muốn của xe tại từng thời điểm.
Để thực hiện kiểm thử, tạo ca kiểm thử. Chọn Input Add Input, chọn đường dẫn tới file cơ sở dữ liệu đã được tạo, có thể tạo nhiều file đầu vào để kiểm thử (mỗi file là 1 kiểm thử)
Hình 3.5: Nhập file dữ liệu đầu vào
Sau đó chọn Run để thực thi để thực thi từng ca kiểm thử
Như vậy mô hình chỉ đáp ứng được với vận tốc mong muốn nhỏ 50km/h thì thời gian đáp ứng của hệ thống mới đạt 60 giây.
Trường hợp kiểm thử 2: Thay đổi giá trị độ dốc, giữ nguyên vận tốc hành trình, xem xét giá trị đầu ra có nằm trong khoảng cho phép.
Để thay đổi giá trị độ dốc theo thời gian, tạo file dữ liệu đầu vào theo thời gian.
Trước khi thực hiện kiểm thử, tạo dữ liệu baseline làm cơ sở đánh giá khả năng vận hành của hệ thống. Dữ liệu được sử dụng làm baseline khi xe được thiết lập ở vận tốc hành trình 50km/h, độ dốc bằng 0, không đổi trong quá trình kiểm thử. Trong cài đặt trường hợp kiểm thử chọn Baseline Critical Capture để lấy các giá trị đầu ra làm baseline, kết quả sẽ được ghi vào file cruise_control.mat để có thể sử dụng cho các kiểm thử khác.
Hình 3.6: Tạo file dữ liệu cơ sở từ 1 ca kiểm thử
Sau đó thực thi trường hợp kiểm thử Input để tạo baseline
Hình 3.7: So sánh kết quả với đường cơ sở baseline
Trong kết quả kiểm thử sẽ xuất hiện thêm Baseline Criteria Result so sánh kết quả của kiểm thử với đường cơ sở baseline.
Để thực hiện kiểm thử với các số liệu độ dốc thay đổi, sử dụng file cơ sở dữ liệu excel chứa thông tin về độ dốc mặt đường theo thời gian và vận tốc mong muốn.
Khi độ dốc thay đổi vừa phải vận tốc mong muốn của xe vẫn được duy trì tương đối ổn định nằm trong khoảng cho phép.
Hình 3.8: Độ dốc của đường tăng giảm với biên độ nhỏ
Trong ca kiểm thử tiếp theo, tiến hành tăng độ dốc của mặt đường lên đột ngột, xe không thể đạt được tốc độ như mong muốn sau khoảng thời gian, như vậy động cơ của xe sẽ không tạo đủ lực để đưa tốc độ xe lên vận tốc hành trình mong muốn với độ dốc lớn
Hình 3.10: Độ dốc của đường tăng giảm với biên độ lớn
Hình 3.11: Vận tốc của xe khi độ dốc đường lớn
Như vậy, để minh họa cho phần lý thuyết về kiểm thử tự động dựa trên mô hình, học viên đã thực hiện xong tạo 2 ca kiểm thử cho mô hình điều khiển hành trình đơn giản, sử dụng dữ liệu đầu vào, phân tích đánh giá kết quả đầu ra phù hợp.
Chương 4 – KẾT LUẬN
Hệ thống nhúng ngày càng được ứng dụng rỗng rãi trong cuộc sống của chúng ta, đặc biệt trong thời đại công nghệ 4.0, vạn vật kết nối (IoT). Kiểm thử dựa trên mô hình cho các hệ thống nhúng ngày càng có ý nghĩa quan trọng, nhằm phát hiện và khắc phục lỗi, các nhược điểm của hệ thống kiểm thử giúp hệ thống được hoàn thiện, bảo đảm các chức năng khi đưa vào hoạt động.
Luận văn đã thực hiện tìm hiểu mô hình hệ thống nhúng, nghiên cứu kỹ thuật kiểm thử cho mô hình hệ thống nhúng và thực hiện kiểm thử một số mô hình Simulink.