Bài viết đề xuất 1 phương pháp sinh dữ liệu kiểm thử tự động áp dụng kĩ thuật kiểm thử theo cặp nhằm thu được bộ test data với độ phủ cao. Thực nghiệm cho thấy phương pháp đề xuất cho kết quả tốt hơn so với kiểm thử ngẫu nhiên.
Đỗ Thị Bích Ngọc SINH DỮ LIỆU KIỂM THỬ CHO MƠ HÌNH HỆ THỐNG NHÚNG SỬ DỤNG KỸ THUẬT KIỂM THỬ THEO CẶP Đỗ Thị Bích Ngọc Học Viện Cơng Nghệ Bưu Chính Viễn Thơng + Tóm tắt: Hệ thống nhúng ngày đóng vai trị quan trọng đời sống đại Các hệ thống đòi hỏi tính an tồn cao Vì vậy, đảm bảo chất lượng cho hệ thống nhúng thu hút quan tâm giới nghiên cứu cơng nghiệp Trong hệ thống nhúng, quy trình kiểm thử thường yêu cầu độ phủ cao, với nhiều độ đo theo chuẩn quốc tế, CC, DC, MC/DC ISO 26262 Bài báo đề xuất phương pháp sinh liệu kiểm thử tự động áp dụng kĩ thuật kiểm thử theo cặp nhằm thu test data với độ phủ cao Thực nghiệm cho thấy phương pháp đề xuất cho kết tốt so với kiểm thử ngẫu nhiên Từ khoá: Độ phủ CC, độ phủ DC, độ phủ MC/DC, mơ hình hệ thống nhúng, kiểm thử, kiểm thử theo cặp, tín hiệu liên tục I GIỚI THIỆU Hiện nay, hệ thống nhúng phát triển mạnh mẽ ngày đóng vai trò quan trọng sống người Hệ thống nhúng bao gồm phần cứng phần mềm hoạt động liên kết với Nhiều loại hệ thống nhúng có yêu cầu cao chất lượng, tính ởn định độ tin cậy Lý lỡi hệ thống nhúng gây tai nạn khủng khiếp, đặc biệt hệ thống điều khiển máy bay, tên lửa, hệ thống điều khiển động tơ Lỡi hệ thống nhúng khơng sửa (ví dụ: vệ tinh nhân tạo), sửa chi phí cũng cao, phải thu hời sản phẩm thiết kế lại tồn Do vậy, đảm bảo chất lượng cho hệ thống nhúng quan trọng cần thiết Cùng với phát triển mạnh mẽ hệ thống nhúng, công cụ hỡ trợ thiết kế mơ hình hệ thống nhúng áp dụng ngày nhiều Việc thiết kế mơ hình hệ thống nhúng cơng cụ trước thiết kế mẫu thật cần thiết để dễ dàng phát hiện, sửa lỗi cũng chỉnh sửa thiết kế nhằm đảm bảo chất lượng Vì vậy, có nhiều nghiên cứu, ứng dụng hỗ trợ việc kiểm thử mô hình hệ thống nhúng thiết [1,2,3,5,6,7,8,9,10,14] Bài báo hướng tới tốn kiểm thử cho mơ hình hệ thống nhúng Hoạt động kiểm thử hệ thống phần mềm nói chung hệ thống nhúng nói riêng vấn đề thường chiếm tới 3050% thời gian cũng kinh phí làm hệ thống Trong việc sinh liệu kiểm thử (test data) định đến chất lượng kết kiểm thử Một test data đánh giá tốt có khả phát lỗi cao, đạt độ phủ theo chuẩn cho trước Đã có nhiều tiêu chuẩn yêu cầu an toàn hệ thống nhúng, ISO 26262, IEC 61508, EN-50128, IEC 60880, and DO-178C… Trong hệ thống này, u cầu kiểm thử cao hơn, địi hỏi phải có test data để phủ hết tất đường chạy xảy Không hệ thống phần mềm thơng thường, tín hiệu đầu vào hệ thống nhúng chuỗi liệu theo thời gian Do vậy, việc sinh test data cho hệ thống nhúng gặp nhiều khó khăn phức tạp so với hệ thống phần mềm thơng thường Việc kiểm thử mơ hình hệ thống nhúng có vấn đề chính; Vấn đề 1: Đầu vào hệ thống nhúng thường tín hiệu liên tục theo thời gian Các phương pháp kiểm thử xác minh đa phần áp dụng cho hệ thống với thời gian rời rạc Các nghiên cứu sinh liệu kiểm thử rời rạc cho mơ hình nhúng với mục tiêu tìm lỡi runtimes [3,11], vi phạm tính chất dựa đặc tả hình thực (formal specification) [9], độ phủ cao [8] Tuy nhiên, liệu test rời rạc (discrete test data) tồn mơ hình hệ thống nhúng mà tín hiệu liên tục theo thời gian Vấn đề 2: Các mơ hình thường phức tạp với số lượng tín hiệu vào, tín hiệu ra, kiện lớn Nghĩa là, để kiểm thử thủ công cho phủ hết trường hợp xảy không khả thi Thêm vào đó, việc áp dụng phương pháp hình thức hay phân tích tĩnh để sinh liệu test với độ phủ cao khơng dễ Có số nghiên cứu liên quan tới toán sinh liệu kiểm thử cho mơ hình hệ thống nhúng [1,5,6,14] Matinnejad [5, 6]) sinh liệu kiểm thử cho mơ hình Simulink với thời gian liên tục Tác giả hướng tới thiết kế cho từng cởng vào tín hiệu dựa thuật tốn tìm kiếm nhằm thu tín hiệu đầu đa dạng Phương pháp Tác giả liên lạc: Đỡ Thị Bích Ngọc Email: ngocdtb@ptit.edu.vn Đến tịa soạn: 4/2020, chỉnh sửa: 6/2020, chấp nhận đăng: 7/2020 SỐ 02 (CS.01) 2020 TẠP CHÍ KHOA HỌC CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THÔNG 27 SINH DỮ LIỆU KIỂM THỬ CHO MÔ HÌNH HỆ THỐNG NHÚNG SỬ DỤNG KỸ THUẬT KIỂM THỬ THEO CẶP áp dụng để sinh liệu kiểm thử với tiêu chí độ phủ CC, DC, MC/DC hướng tới mối quan hệ thay đởi outport inport Trong tiêu chí độ phủ CC, DC, MC/DC, quan tâm tới tất điều kiện (condition) bên model Trong [1], Godboley et.al sinh liệu kiểm thử cho mô hình Simulink với Độ phủ nhánh Đầu tiên, tác giả sinh code C cho mơ hình Simulink, sau áp dụng công cụ kiểm thử cho code C để thu liệu kiểm thử tính tốn độ phủ CC, DC, MC/DC Vấn đề phương phướng sử dụng cơng cụ kiểm thử tĩnh cho code C Do vậy, phương pháp khơng khả thi với mơ hình lớn Trong [14], Tomita đề xuất phương pháp kiểm thử mỡi tín hiệu vào gán cho khn mẫu sẵn (tín hiệu sine,step ) Sau đó, liệu kiểm thử sẽ trường hợp cụ thể khuôn mẫu Phương pháp cho phép sinh liệu kiểm thử cách dễ dàng kiểm sốt việc sinh liệu thơng qua số lượng tham số khuôn mẫu (tần số, biên độ ) thay phải sinh liệu cho tồn tín hiệu Tuy nhiên, mơ hình lớn, số lượng inports lớn, việc chọn ngẫu nhiên loại tín hiệu khiến cho độ phủ CC, DC, MC/DC khơng kì vọng Bài báo đề xuất phương pháp sinh liệu kiểm thử tự động dựa loại tín hiệu mẫu kết hợp với kĩ thuật kiểm thử theo cặp nhằm thu liệu kiểm thử với độ phủ cao Kết thử nghiệm cho thấy phương pháp đề xuất cho kết tốt phương pháp kiểm thử [14] II TỔNG QUAN VỀ KIỂM THỬ MƠ HÌNH HỆ THỐNG NHÚNG II.1 Các khái niệm kiểm thử mơ hình hệ thống nhúng Có nhiều cơng cụ dùng để thiết kế mơ hình hệ thống nhúng, MATLAB/Simulink công cụ sử dụng nhiều nghiên cứu thực tế Bài báo sẽ thực kiểm thử cho mơ hình biểu diễn MATLAB/Simulink [13] a Mơ hình hệ thống nhúng Simulink Một mơ hình hình hệ thống nhúng MATLAB/Simulink, tạo bởi nhiều loại blocks, bao gờm: inport/outport (vào/ra), mathematical operator (phép tốn), logical/relational operator (phép logic/quan hệ), (multiport) switch, delay Các blocks liên kết với lines, truyền liệu Boolean, integer floating/fixed point chúng Đặc biệt, mơ hình hệ thống nhúng cho phép nhận số tín hiệu (các giá trị liên tục theo thời gian) cách sử dụng block Inport tạo số tín hiệu đầu đại diện bởi block Outport b Các độ phủ CC, DC, MC/DC Trong khoa học máy tính, mức độ phủ (Test coverage) thước đo sử dụng để mô tả mức độ hệ thống thực thi test data cụ thể Một test data có mức độ phủ cao sẽ làm cho nhiều block SỐ 02 (CS.01) 2020 hệ thống thực thi q trình kiểm thử Vì vậy, sẽ có khả phát nhiều lỗi Yêu cầu thơng thường cho việc kiểm thử mơ hình test data có độ phủ cao Trên thực tế, chuẩn ISO 26262 (“Road vehicles – Functional safety”) yêu cầu kiểm thử đánh giá độ phủ CC, DC, MC/DC MATLAB/Simulink có cơng cụ phục vụ việc đánh giá Độ phủ này: Simulink Design Verifier (SLDV) Simulink Verification and Validation (V&V) Decision coverage (DC) hay biết đến Branch coverage (Bao phủ nhánh) Độ phủ DC đánh giá số lượng các điểm định, rẽ nhánh (như if, switch …) hệ thống thực thi cho trường hợp giá trị true trường hợp false thực kiểm thử Condition coverage (CC) tương tự bao phủ định có độ nhạy tốt với điều kiện Độ phủ DC đánh giá số lượng biểu thức Boolean từng điểm định hệ thống cho trường hợp giá trị true trường hợp false thực kiểm thử Các biểu thức boolean phân tách phép logicAND logic-OR xảy Modified condition and decision coverage (MC/DC) mức đánh giá chi tiết cho từng biểu thức điều kiện Độ phủ MC/DC đánh giá số lượng biểu thức Boolean từng điểm định hệ thống cho trường hợp true trường hợp false giá trị sẽ phải định tới giá trị điều kiện cha Kiểm thử mơ hình hệ thống nhúng dựa tín hiệu mẫu Một test data cho mơ hình hệ thống nhúng xem vector tín hiệu inport Các tín hiệu ở dạng Tuy nhiên, tín hiệu inport cung cấp bởi thiết bị điều khiển, sinh bởi đối tượng vật lý thường tuân theo định luật vật lý Do vậy, ta không thiết phải sử dụng tín hiệu Ngồi ra, việc sử dụng loại tín hiệu vào mẫu (sine, step, ) sẽ giúp điều khiển tín hiệu đơn giản với vài tham số (ví dụ, tần số, cường độ ) [14] sử dụng tín hiệu mẫu để sinh test data cho mơ hình Simulink c Định nghĩa 1[14]: Test data/Bộ Test data Một test data nhóm tín hiệu đầu vào Một test data tập test data Với test data, độ phủ mơ hình nhúng độ phủ đối tượng mơ hình Độ phủ mơ hình cho test data tởng hợp độ phủ từng test data Trong độ phủ DC, CC MC/DC, đối tượng để đánh giá block có hành vi logic Trong Simulink, chúng block logic, phép relation, block chuyển đởi (multiport switch), subsystem với cổng điều khiển hoạt động… Để kiểm thử mơ hình hệ thống nhúng, ta cần đưa test data vào mơ hình gán cho mỡi inport tín hiệu tương thích sau chạy mơ với inport rời đánh giá độ phủ tương ứng Để làm điều đó, mơ hình harness tạo từ mơ hình gốc, mơ hình gốc thể hệ thống (Test unit) Các test data TẠP CHÍ KHOA HỌC CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG 28 Đỗ Thị Bích Ngọc đưa vào qua khối lệnh Signal Builder (Inputs) Simulink phân phối cho inport tương ứng Test unit thông qua khối Size-Type Hình minh hoạ hệ thống harness • Xây dựng test cho bao phủ tất cặp xác định ở Lấy ví dụ đơn giản sau: Một Mơ hình hệ thống nhúng có inports, inport1 nhận giá trị {1,2,3}; inport2 nhận giá trị {4,5}, inport3 nhận giá trị {1,2,5,6}, inport4 nhận giá trị {1,5} Bảng 1: Các ca kiểm thử theo cặp Hình 1: Mơ hình hệ thống nhúng harness Simulink cho phép thêm test data Định nghĩa 2[14]: Độ phủ Một test data phủ DC đầy đủ nếu, mỗi đối tượng để đánh giá b, tất giá trị b xảy thời điểm bởi test data test data Một test data phủ CC đầy đủ nếu, với mỗi điều kiện c b, mỗi giá trị c xảy thời điểm bởi test data test data Một test data phủ MC/DC đầy đủ nếu, mỗi b mà định phụ thuộc vào nhiều điều kiện c1, , cn, test data bao gờm test data từng cm ảnh hưởng độc lập đến decision Tư tưởng việc sinh test data dựa tín hiệu mẫu sau : mỗi ca kiểm thử truyền vào, tiến hành tính tốn độ phủ DC, CC, MC/DC cho mơ hình Nếu độ phủ ca kiểm thử sau lớn ca kiểm thử trước, hiển thị kết tính tốn độ phủ lên hình Sau tính tốn hết độ phủ ca kiểm thử, kết trả độ phủ DC, CC, MCDC cao test Cụ thể: Bước 1: Sinh ngẫu nhiên test data ứng viên (là nhóm tín hiệu inport) Bước 2: Chạy mơ cho mơ hình với test data vừa sinh đánh giá độ phủ Việc chạy mơ đánh giá độ phủ CC, DC, MC/DC Bước 3: Nếu test data làm tăng độ phủ DC CC MC/DC, ta thêm vào test data Bước 4: Các bước thực lặp lặp lại đạt độ phủ tối đa đạt tới ngưỡng số lượng lần lặp cho trước II.2 Kĩ thuật kiểm thử theo cặp Pairwise testing (hay All-pairs testing) [12] phương pháp kiểm thử hộp đen cách sử dụng phương pháp tổ hợp để kiểm tra tất kết hợp rời rạc tham số liên quan Phương pháp dựa quan sát cho thấy phần lớn lỗi bắt nguồn từ tương tác hai tham số Do đó, pairwise testing tạo ca kiểm thử phủ hết giá trị hai tham số Thực nghiệm cho thấy, Pairwise testing có khả sinh test data phủ MC/DC tốt so với kiểm thử ngẫu nhiên [12] Phương pháp pairwise testing bao gồm: • Lựa chọn tham số đầu vào giá trị tương ứng • Lấy tở hợp (pairwise) giá trị tham số SỐ 02 (CS.01) 2020 Inport1 2 3 3 1 2 Inport2 5 4 5 4 Inport3 6 6 Inport4 5 5 5 1 Khi áp dụng kỹ thuật kiểm thử theo cặp, ta có tất 13 ca kiểm thử phủ hết tất cặp giá trị xảy inports Chi tiết kỹ thuật pairwise testing tham khảo [13], vậy, phạm vi báo sẽ khơng trình bày lại kỹ thuật sinh pairwise test III ÁP DỤNG KIỂM THỬ THEO CẶP CHO SINH DỮ LIỆU KIỂM THỬ MƠ HÌNH HỆ THỐNG NHÚNG III.1 Mã hoá giải mã miền liệu đầu vào tương ứng với kỹ thuật kiểm thử theo cặp Mô hình hệ thống nhúng ở dạng sơ đờ với inport, file mơ tả tín hiệu sẽ sử dụng để truyền vào inport Tuy nhiên, yêu cầu kỹ thuật kiểm thử theo cặp cần đầu vào tham số, mỗi tham số nhận giá trị rời rạc, tín hiệu Vì vậy, ta cần mã hố miền liệu đầu vào thành tham số giá trị dựa theo định nghĩa sau Định nghĩa 1: Cho mơ hình M, miền liệu D = {(p1,…, pn) | pi {1,…,ki }}, với tham số pi tương ứng với đầu vào thứ i mơ hình M, {1,…ki} số cho loại tín hiệu đầu vào thứ i nhận Ví dụ 1: Đầu vào của mơ hình Inport1 Inport2, suy số đầu vào của mơ hình Giả sử, Trong mỡi Inport, có loại tín hiệu được sử dụng: Sine, Step, Square, Linear, Constant, Triangle Ta đánh số cho Sine 1, Step 2, Square 3, Linear 4, Constant 5, Triangle Do vậy, số tín hiệu sẽ sử dụng của mỡi đầu vào 6, ta mã hoá lần lượt 1, , Do đó, miền D là: {(inport1, inport2)| inport1, inport2 {1,2,3,4,5,6}} TẠP CHÍ KHOA HỌC CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THÔNG 29 SINH DỮ LIỆU KIỂM THỬ CHO MƠ HÌNH HỆ THỐNG NHÚNG SỬ DỤNG KỸ THUẬT KIỂM THỬ THEO CẶP Sau áp dụng kĩ thuật kiểm thử theo cặp, sẽ thu giá trị (v1,…,vn) đảm bảo phủ hết cặp giá trị xảy tham số pi, pj Chúng ta cần chuyển giá trị thành test data mơ hình M tức tương ứng với inport i mơ hình M, sẽ nhận tín hiệu thứ vi III.2 Thuật tốn đề xuất Để áp dụng kỹ thuật kiểm thử theo cặp vào sinh liệu kiểm thử cho mơ hình hệ thống nhúng, ta cần cải tiến thuật toán của Tomita [14] để áp dụng kỹ thuật kỹ thuật kiểm thử theo cặp, cụ thể ta phải bổ xung u cầu sau: - ta cần mã hố thơng tin inport mơ hình thành dạng tham số (là inport) giá trị (là loại tín hiệu mà inport nhận) để thành đầu vào kĩ thuật kiểm thử theo cặp - thực sinh ca kiểm thử theo cặp để phủ hết cặp giá trị tham số (là tở hợp loại tín hiệu inports) - biến đổi ca kiểm thử theo cặp thành tín hiệu đầu vào cho mơ hình hệ thống nhúng Như vậy, thay lựa chọn loại tín hiệu cho inport cách ngẫu nhiên, loại tín hiệu sẽ gán cho inports theo kĩ thuật kiểm thử theo cặp Thuật toán đề xuất sau Thuật toán 1: Sinh Testsuite áp dụng kỹ thuật pairwise testing Input: - mơ hình cho kiểm thử MT - mơ tả cấu hình loại tín hiệu C Output: - test data T Các bước thực hiện: Begin D = encode(MT, C); PT = pairwise (D); ST = decode (PT); T= ø; Coverage = (0,0,0); for t ST begin simulation (MT,t); tCoverage = checkMCDC(); if (Coverage