1. Trang chủ
  2. » Giáo Dục - Đào Tạo

XÂY DỰNG CÔNG CỤ SINH DỮ LIỆU THỬ CHO CHƯƠNG TRÌNH LUSTRE/SCADE DỰA TRÊN KIỂM CHỨNG MÔ HÌNH

6 1 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 603,43 KB

Nội dung

84 Trịnh Công Duy, Nguyễn Thanh Bình XÂY DỰNG CÔNG CỤ SINH DỮ LIỆU THỬ CHO CHƯƠNG TRÌNH LUSTRE/SCADE DỰA TRÊN KIỂM CHỨNG MÔ HÌNH CREATING TEST DATA GENERATION TOOL FOR LUSTRE/SCADE PROGRAMS USING MODE[.]

Trịnh Cơng Duy, Nguyễn Thanh Bình 84 XÂY DỰNG CƠNG CỤ SINH DỮ LIỆU THỬ CHO CHƯƠNG TRÌNH LUSTRE/SCADE DỰA TRÊN KIỂM CHỨNG MƠ HÌNH CREATING TEST DATA GENERATION TOOL FOR LUSTRE/SCADE PROGRAMS USING MODEL CHECKING Trịnh Công Duy1, Nguyễn Thanh Bình2 Đại học Đà Nẵng; tcduy@dut.udn.vn Trường Đại học Bách khoa, Đại học Đà Nẵng; ntbinh@dut.udn.vn Tóm tắt - Lustre/SCADE ngôn ngữ sử dụng rộng rãi để phát triển phần mềm cho hệ thống phản ứng, lĩnh vực mà chất lượng phần mềm yêu cầu nghiêm ngặt, gần không phép xảy lỗi nhỏ Bên cạnh đó, ứng dụng lĩnh vực này, việc kiểm thử thủ công khó thực khơng mang lại hiệu quả, yêu cầu cần phải tự động hóa hoạt động kiểm thử cho ứng dụng Lustre/SCADE Trong báo này, tập trung nghiên cứu việc kiểm thử tự động cho ứng dụng Lustre/SCADE, đề xuất sử dụng kỹ thuật kiểm chứng mơ hình trên mạng lưới toán tử (operator network) để sinh ca kiểm thử cách tự động Cuối cùng, ứng dụng giải pháp để xây dựng công cụ sinh ca kiểm thử cho chương trình Lustre/SCADE minh họa chương trình cụ thể Abstract - Lustre/SCADE is the language widely used for developing applications of reactive systems which have very strict requirements on software reliability and even the smallest of errors was unacceptable Moreover, in such applications, the manual testing would be very difficult to implement and ineffective, so using automatic testing tool for Lustre /SCADE becomes necessary In this paper, we concentrate on studying automated testing tool for Lustre/SCADE programs We propose the use of model checking techniques on operator network for automatically generating test cases Finally, we apply this technique to develop test data generation tool for Lustre/SCADE programs and illustrate it on a specific program Từ khóa - hệ thống phản ứng; kiểm chứng mơ hình; kiểm thử; thuộc tính bẫy; Lustre/SCADE; sinh ca kiểm thử Key words - reactive system; model checker; testing; trap propertive; Lustre/SCADE; generate test cases Giới thiệu Lustre [9] ngôn ngữ đồng luồng liệu, thiết kế năm 1984 Viện IMAG Grenoble Chương trình Lustre gồm chuỗi có thứ tự phương trình, giúp xác định phương thức dịng đầu vào chuyển thành dịng đầu thơng qua tập hợp tốn tử Do đó, cách biểu diễn phù hợp cho chương trình Lustre đồ thị có hướng, gọi mạng lưới tốn tử (trong thực tế, người sử dụng không viết chương trình Lustre mà sử dụng trình soạn thảo đồ họa công cụ SCADE để xây dựng mạng lưới toán tử liên quan) Việc kết hợp hai mơ hình đồng dịng liệu, cú pháp đồ họa đơn giản, áp dụng khái niệm thời gian rời rạc số đặc điểm làm cho Lustre trở thành ngôn ngữ lý tưởng cho việc xây dựng mơ hình, thiết kế hệ thống điều khiển số lĩnh vực công nghiệp, chẳng hạn hệ thống điện tử, ô tô lượng, hạt nhân nói riêng hệ thống phản ứng nói chung Với hệ thống này, yếu tố an tồn (safety) quan tâm hàng đầu Vì vậy, việc hệ thống bị lỗi vận hành gây hậu nghiêm trọng Hơn nữa, “lỗi hệ thống” có xu hướng phát muộn trình phát triển, mà gây thiệt hại đáng kể, khó để gỡ lỗi tốn nhiều chi phí Việc tìm lỗi sớm tốt, ngăn ngừa khiếm khuyết trước thực kiểm thử mức chi tiết hơn, phức tạp chi phí cao [7] Hiện giới, chưa có nhiều nghiên cứu chưa có nhiều công cụ để sinh liệu thử tự động cho phần mềm hệ thống phản ứng, mà ứng dụng Lustre/SCADE Nhóm tác giả Abdesselam Lakehal, Ioannis Parissis đề xuất công cụ Lustes để kiểm thử ứng dụng Lustre/SCADE, sử dụng phương pháp sinh ngẫu nhiên dựa thuộc tính [2] Trong báo này, đề xuất kỹ thuật sinh d tự động liệu kiểm thử cho chương trình Lustre/SCADE Trong đó, chúng tơi sử dụng kỹ thuật kiểm chứng mơ hình mạng lưới tốn tử để sinh liệu thử Chúng sử dụng công cụ kiểm chứng mơ hình LESAR để tiến hành kiểm chứng mơ hình cho chương trinh Lustre cụ thể, từ sinh ca kiểm thử dựa kết sinh từ trình kiểm chứng Nội dung báo tổ chức sau: Mục giới thiệu chung báo trình bày tổng quan hệ thống phản ứng, ngơn ngữ lập trình Lustre Mục trình bày sở lý thuyết tảng sử dụng nghiên cứu Trong mục 3, đề xuất giải pháp sử dụng sử dụng cơng cụ kiểm chứng mơ hình LESAR dựa mạng lưới toán tử để tạo ca kiểm thử cho chương trình Lustre/SACDE Phần trình bày ứng dụng sinh ca kiểm thử tự động kết việc thử nghiệm Cuối phần kết luận đề xuất hướng phát triển Cơ sở lý thuyết Mục này, trình bày sở lý thuyết nghiên cứu, bao gồm hệ thống phản ứng, ngơn ngữ lập trình Lustre mơi trường SCADE, đồng thời, chúng tơi trình bày kỹ thuật xây dựng mạng lưới toán tử, lộ trình điều kiện kích hoạt cho chương trình Lustre/SCADE Cuối nội dung ứng dụng kiểm chứng mơ hình sinh ca kiểm thử 2.1 Hệ thống phản ứng Hệ thống phản ứng hệ thống thay đổi hành động với đầu ra, điều kiện trạng thái nhằm đáp ứng với tác động từ bên ngồi Hệ thống tự định ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 9(94).2015 hướng điều khiển định hướng để phản ứng lại với tác động bên [3] Hệ thống phản ứng khác với hệ thống tương tác (interactive system) [8] Hệ thống tương tác thường xuyên giao tiếp với môi trường với mức độ riêng như: hệ điều hành, giao diện sở liệu, web server Trong hệ thống phản ứng phản ứng lại với mơi trường, ví dụ q trình điều khiển cơng nghiệp, nhà máy điện, hệ thống nhúng xe lửa, máy bay Việc thực thi hệ thống phản ứng xem chuỗi vô hạn véc tơ đầu vào đầu Ở bước giá trị đầu xác định giá trị đầu vào trước tại.Với đầu vào, hệ thống thực tính toán sinh đầu chuyển sang trạng thái Thông thường, hệ thống nhúng hệ thống điều khiển hệ thống phản ứng Các hệ thống phản ứng thường áp dụng chủ yếu để xây dựng hệ thống điều khiển tự động lĩnh vực hàng không, lượng, hạt nhân, hệ thống liên quan đến giao diện người – máy 2.2 Giới thiệu Lustre/SCADE 85 ngữ Lustre có tốn tử thời gian (temporal operator): Tốn tử ưu tiên pre(), toán tử khởi tạo fby (hay →) toán tử điều kiện when Các toán tử thời gian có hoạt động đặc biệt luồng liệu Các tốn tử sử dụng để tạo toán tử phức tạp Đặc biệt, ngôn ngữ Lustre không cung cấp toán tử lặp (while, while, for) hay thực gọi đệ quy ngơn ngữ lập trình khác [9] 2.2.2 Môi trường SCADE SCADE (Safety Critical Application Development Environment) công ty Esterel Technologies [4] môi trường đồ họa dành riêng để phát triển hệ thống nhúng quan trọng, hệ thống phản ứng công nghiệp công nghệ cao SCADE dựa ngôn ngữ Lustre cho phép định nghĩa phân cấp thành phần hệ thống sinh mã tự động (sinh mã chương trình C, Ada) SCADE cung cấp mơi trường đồ họa cho phép thiết kế mơ hình sinh chương trình ngơn ngữ Lustre Hình minh họa mơ hình thiết kế mơi trường SCADE chương trình Lustre sinh tương ứng 2.2.1 Ngôn ngữ Lustre Lustre [9] ngôn ngữ hướng liệu đồng bộ, xây dựng dành riêng cho việc lập trình, nên chương trình điều khiển hệ thống phản ứng như: hệ thống điều khiển tự động, hệ thống giám sát lĩnh vực lượng, hạt nhân Ngơn ngữ Lustre thích hợp việc lập trình thành phần quan trọng hệ thống thời gian thực Khác với ngôn ngữ mệnh lệnh (imperative languages), mơ tả dịng điều khiển chương trình, ngơn ngữ Lustremô tả cách mà đầu vào chuyển thành kết đầu Một chương trình Lustre gồm node Một node tập hợp phương trình xác định kết đầu hàm đầu vào Mỗi biến định nghĩa lần node thứ tự chúng chương trình khơng quan trọng [9] Hình ví dụ chương trình Lustre để thực phép tốn never, đoạn chương trình khai báo node never với đầu vào E đầu S Hình Ví dụ chương trình Lustre Lustre dựa khái niệm luồng (flows) đồng hồ (clocks) Luồng chuỗi giá trị tương ứng với chuỗi đồng hồ Ngôn ngữ Lustre gồm toán tử bản: Toán tử logic: and, or, not, xor, =>; Toán tử số học: +, -, *, /, div, mod; Toán tử so sánh: , = Các kiểu liệu ngôn ngữ Lustre bao gồm: Kiểu luận lý (boolean) gồm giá trị true, false Kiểu số nguyên, số thực (int, real) Bên cạnh tốn tử trên, ngơn Hình Mơ hình SCADE chương trình Lustre 2.2.3 Mạng lưới tốn tử Lustre ngơn ngữ luồng liệu: luồng vào chương trình biến đổi thành luồng tập hợp độc lập khơng độc lập tốn tử Do chương trình Lustre thường biễu diễn mạng lưới tốn tử Trong mơi trường SCADE, chương trình Lustre biểu diễn biểu đồ trực quan, gọi mạng lưới toán tử [1] Một mạng lưới tốn tử đồ thị có nhãn trực tiếp nhiều đầu vào, gồm tập hợp N toán tử tập hợp 𝐸 ⊆ 𝑁 × 𝑁 cạnh (edge) nối toán tử Mỗi toán tử biểu diễn biểu thức logic phép toán [1] Một toán tử biểu thị tập hợp có trật tự cặp mà trạng thái ei (i=1,2,…) cạnh đầu vào s trạng thái cho cạnh đầu Với cặp liên kết thuộc tính, bao gồm điều kiện luồng liệu chuyển từ cạnh ei sang cạnh s Mạng lưới toán tử giúp xác định dòng liệu dịch chuyển từ đầu vào đến đầu [1] Cạnh xác định dòng liệu tốn tử Có quan hệ 1-1 (đơn ánh) mạng lưới toán tử toán tử Lustre Một mạng lưới toán tử thường chứa biểu thức: AND, OR, NOT, + , -, /, *, LT (), LTE (=), EQ (==), NEQ (), ITE (if - then - else), PRE (pre), FBY (→) Có hai chức liên kết với toán tử op (operator) bất kỳ: in(op) out(op) Trong đó, in(op) trả 86 tập hợp toán tử nối với cạnh đầu vào out(op) trả tập hợp toán tử nối với cạnh đầu Có loại cạnh: cạnh đầu vào (input edge); cạnh đầu (out edge) cạnh nội (internal edge) - Cạnh đầu vào tương ứng với biến đầu vào chương trình Lustre; - Cạnh đầu tương ứng với biến đầu chương trình Lustre; - Cạnh nội tương ứng với biến cục chương trình Lustre Mỗi cạnh có tốn tử nguồn tốn tử đích Cạnh e2 cạnh e1 có toán tử mà e1 đầu vào e2 đầu 2.2.4 Lộ trình mạng lưới tốn tử Trong chương trình Lustre, mạng lưới tốn tử biểu diễn thành lộ trình (paths) [1] từ đầu vào đến đầu Lộ trình tạo từ kết cạnh p=, dãy hữu hạn cạnh nối liên tiếp Giả sử tất biến i∈[0, n-1] cặp thuộc mạng lưới toán tử N-path độ dài lộ trình (là số lượng cạnh) với n Lộ trình xuất phát (initial path) lộ trình mà cạnh giá trị vào Vòng lặp phần đồ thị mạng lưới toán tử lặp lặp lại với điều kiện khác Một đường có chứa vịng lặp gọi đường lặp (cyclic paths), đường lặp có chứa nhiều tốn tử PRE Ngồi ra, lộ trình p’= gọi tiền tố p= với n>2 2.2.5 Toán tử vị từ Với (e, s) lộ trình đơn vị op tốn tử; ta có e ϵ in(op) s ϵ out(op) Toán tử vị từ (operator predicate) [1] cấu thành từ thành phần toán tử thể mối quan hệ chúng biểu diễn dạng OC(, ) Như để biểu diễn toán tử e đầu vào s đầu ra, ta biểu diễn theo dạng OC(e,s) Toán tử vị từ OC(e,s) với thành phần tốn tử (e,s) có giá trị thuộc kiểu boolean, ta có: - OC(e, s) = true op toán tử NOT toán tử quan hệ - OC(e, s) = not(e) or e’ op toán tử AND in(op) = {e, e’} - OC(e, s) = e or not(e’) op toán tử OR in(op) = {e, e’} - OC(c, s) = true, OC(e, s) = c and OC(e’, s) = not(c) op toán tử ITE, in(op) = {c, e, e’} 2.2.6 Điều kiện kích hoạt Điều kiện kích hoạt (Activation Condition - AC) [1] điều kiện để luồng liệu chuyển từ cạnh vào sang cạnh toán tử Mỗi điều kiện kích hoạt kết hợp với lộ trình Khi điều kiện kích hoạt lộ trình đúng, bất kỳ thay đổi giá trị lộ trình tạo thay đổi kết cuối Cho N mạng lưới tốn tử p= lộ Trịnh Cơng Duy, Nguyễn Thanh Bình trình n-path, p’ = (e1, e2, …en-1) lộ trình trước p op tốn tử lộ trình p (ví dụ: en-1 ϵ in(op) en ϵ out(op)) Điều kiện kích hoạt lộ trình p= biểu thức Boolean, AC(p), xác định theo quy tắc sau đây: - Nếu n = AC(p) = true: có nghĩa điều kiện kích hoạt cạnh đơn ln có giá trị true - Ngược lại n> 1, điều kiện kích hoạt lộ trình pn hàm đệ quy tốn tử lộ trình Tùy theo loại tốn tử, điều kiện kích hoạt AC(p) xác định sau: • AC(p) = AC(p’)andOC(en-1, en) op toán tử boolean, toán tử quan hệ toán tử điều kiện Và OC(en1, en) vị từ tốn tử op • AC(p) = false →pre(AC(p’)) op tốn tử pre • Nếu op toán tử fby(init; nonInit), toán tử pinit toán tử pnonInit tương ứng với trường hợp khởi tạo init khơng khởi tạo nonInit điều kiện kích hoạt định nghĩa hai phương trình sau: AC(p) = AC(p’) → false (*) AC(p) = false → AC(p’) (**) Phương trình (*) cho lộ trình p kích hoạt, lộ trình trước kích hoạt chu kỳ khởi tạo Cịn phương trình thứ hai (**) cho lộ trình ln kích hoạt, cho chu kỳ khởi tạo 2.3 Kiểm chứng mô hình Trong phát triển phần mềm, kỹ thuật kiểm chứng mơ hình sử dụng để chứng minh cách tự động tính đắn phần mềm phần mềm không thực thi thông qua phản ví dụ (counterexample) Các phản ví dụ sử dụng để xây dựng nên ca kiểm thử hệ thống Trong phần này, chúng tơi trình bày kỹ thuật kiểm chứng mơ hình ứng dụng kỹ thuật việc sinh ca kiểm thử 2.3.1 Tổng quan kiểm chứng mơ hình Kiểm chứng mơ hình kỹ thuật phân tích hệ thống để xác định tính hợp lệ hay nhiều tính chất mà người dùng quan tâm mơ hình cho trước [5] Cụ thể hơn, với mơ hình M thuộc tính p cho trước, kiểm tra liệu mơ hình M có thỏa mãn thuộc tính p hay khơng: M |= p Về mặt thực thi, kiểm chứng mơ hình kỹ thuật tĩnh, duyệt qua tất trạng thái, lộ trình thực thi có mơ hình M để xác định tính phủ định p Hình Sơ đồ tổng quát kiểm chứng mơ hình Kiểm chứng mơ hình bao gồm bước: mơ hình hóa, đặc tả kiểm chứng (Hình 3) [6] ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 9(94).2015 - Đầu tiên bước mơ hình hóa, đầu vào bước thiết kế mã nguồn - Bước tiếp theo, định nghĩa thuộc tính mơ hình cần thỏa mãn đặc tả Các thuộc tính thường diễn đạt biểu thức logic Kết hai bước mơ hình hóa đặc tả đầu vào cho kiểm chứng mơ hình - Trong bước cuối cùng, công cụ kiểm chứng tự động thực trả kết đúng, mơ hình thỏa mãn thuộc tính, đưa phản ví dụ, mơ hình khơng thỏa mãn 2.3.2 Kiểm chứng mơ hình kiểm thử phần mềm Kiểm chứng mơ hình giải pháp để kiểm tra tính đắn mơ hình, nhiên, kỹ thuật thường áp dụng để tạo ca kiểm thử Hình Tạo ca kiểm thử với kiểm chứng mơ hình Việc sinh liệu thử dựa vào kiểm chứng mơ hình thực sau: Trên sở mơ hình có, định nghĩa thuộc tính làm cho mơ hình khơng thỏa mãn, gọi thuộc tính bẫy Việc nhằm mục đích tạo phản ví dụ sau thực thi q trình kiểm chứng mơ hình Từ phản ví dụ này, tạo ca kiểm thử mong muốn Hình minh họa việc sinh ca kiểm thử dựa vào kiểm chứng mơ hình Từ mơ hình đầu vào, định nghĩa thuộc tính bẫy dựa điều kiện kích hoạt Thơng qua q trình kiểm chứng mơ hình, xác định ca kiểm thử tương ứng [10], [11] Ứng dụng điều kiện kích hoạt mạng lưới toán tử kiểm thử chương trình Lustre/SCADE Trong phần này, chúng tơi trình bày giải pháp để kiểm thử chương trình Lustre/SCADE sử dụng điều kiện kích hoạt mạng lưới tốn tử tương ứng để mơ hình hóa định nghĩa thuộc tính bẫy Sau đó, chúng tơi dùng kỹ thuật kiểm chứng mơ hình để tạo ca kiểm thử Trong báo này, sử dụng công cụ LESAR để thực kiểm chứng mơ hình 3.1 Giải pháp sinh ca kiểm thử cho chương trình Lustre sử dụng điều kiện kích hoạt Vấn đề cần giải từ chương trình Lustre cho trước, cần sinh ca kiểm thử cách tự động dựa điều kiện kích hoạt lộ trình mạng lưới tốn tử chương trình Lustre tương ứng Trong Hình 5, chúng tơi đề xuất giải pháp tổng thể để sinh ca kiểm thử cho chương trình Lustre, bao gồm bước sau: - Bước 1: Từ chương trình Lustre cho trước với mạng lưới toán tử minh họa dạng đồ thị luồng liệu, xác định tất đường từ cạnh đầu vào đến cạnh đầu 87 Hình Mơ hình giải pháp sinh ca kiểm thử cho chương trình Lustre sử dụng điều kiện kích hoạt - Bước 2: Trên sở đường xác định bước 1, điều kiện kích hoạt tương ứng xác định - Bước 3: Tiến hành kiểm chứng mơ hình chương trình Lustre ban đầu với thuộc đầu vào thuộc tính bẫy tạo sở phủ định điều kiện kích hoạt sinh từ bước Việc xác định đường điều kiện kích hoạt tương ứng bước bước đóng vai trị quan trọng việc định nghĩa thuộc tính bẫy cho q trình kiểm chứng mơ hình bước Mục tiêu q trình kiểm chứng mơ hình khơng phải để kiểm tra mơ hình hệ thống thiết kế hay khơng, mà sinh phản ví dụ Các phản ví dụ ca kiểm thử cần tạo 3.2 Sinh liệu thử với công cụ kiểm chứng mô hình LESAR Để thực việc sinh ca kiểm thử sau có điều kiện kích hoạt phản ví dụ tương ứng, chúng tơi sử dụng cơng cụ kiểm chứng mơ hình LESAR [2] cho chương trình Lustre LESAR cơng cụ kiểm chứng mơ hình cho chương trình Lustre/SCADE, phát triển trung tâm nghiên cứu Verimag Đây thành phần tích hợp vào cơng cụ phát triển ngôn ngữ Lustre [18], phát triển với mục đích kiểm chứng chương trình Lustre Đầu vào cơng cụ LESAR chương trình Lustre với đặc tả mã nguồn viết ngôn ngữ Lustre thuộc tính điều kiện kích hoạt Tuy nhiên, mục đích cần sinh phản ví dụ, thuộc tính đầu vào phải thuộc tính bẫy dựa điều kiện kích hoạt, thuộc tính bẫy nAC xác định theo công thức: nAC=not (AC) Xây dựng công cụ sinh ca kiểm thử tự động 4.1 Ứng dụng minh họa Trong phần này, ứng dụng kỹ thuật trình bày phần trước để thực việc sinh ca kiểm thử tự động cho chương trình Lustre never giới thiệu Mục Dựa mã nguồn Lustre chương trình never, có mạng lưới tốn tử Hình 6: Hình Mạng lưới tốn tử chương trình never Trịnh Cơng Duy, Nguyễn Thanh Bình 88 Hình biễu diễn mạng lưới tốn tử nốt never chương trình Lustre Đây đồ thị có đầu vào đầu Nó bao gồm bốn cạnh nội (L1, L2 L3) bốn toán tử (NOT, AND, PRE FBY) Dựa mạng lưới toán tử này, ta xác định lộ trình điều kiện kích hoạt tương ứng tương ứng, chi tiết Bảng Bảng Các lộ trình chương trình never # Lộ trình (E ,L0 ,S) (E ,L1 ,L3 ,S) (E ,L0 ,S ,L2 ,L3 ,S) (E ,L1 ,L3 ,S ,L2 ,L3 ,S) Lần lượt thực kiểm chứng chương trình Lustre hệ thống điều khiển nhiệt độ với điều kiện kích hoạt tương ứng, ta sinh tất liệu thử cho chương trình never 4.2 Cơng cụ sinh ca kiểm thử tự động Trên sở giải pháp đề xuất, tiến hành cài đặt xây dựng công cụ giúp tự động sinh ca kiểm thử cho chương trình Lustre Chiều dài Trên sở lộ trình mạng lưới toán tử, ta xác định điều kiện kích hoạt tương ứng Với lộ trình (E ,L1 ,L3 ,S) chương trình never Hình 1, xác định điều kiện kích hoạt tương ứng: AC = ( true and (not(L1) or L2) and false->true) Tiếp theo, áp dụng công cụ kiểm chứng LESAR để sinh ca kiểm thử Việc kiểm chứng mơ hình thực cho điều kiện kích hoạt, lần thực nhận kết trả phản ví dụ, ca kiểm thử Cú pháp thực thi LESAR lesar Ví dụ: lesar neverlesar.lus never –diag Hình Cài đặt mô đun công cụ Công cụ bao gồm mô đun sau (Hình 8): - Mơ đun tự động sinh lộ trình điều kiện kích hoạt lộ trình mạng lưới tốn tử - Mơ đun tự động sinh tệp Lustre đầu vào cho trình kiểm chứng mơ hình tự động với cơng cụ LESAR (Hình 9) - Mơ đun thực thi kiểm chứng mơ hình tự động để sinh ca kiểm thử lưu vào sở liệu Công cụ phát triển ngơn ngữ lập trình JAVA, sở liệu MySQL vận hành hệ điều hành Linux Hình Tự động tạo tệp đầu vào cho LESAR Hình Kiểm chứng mơ hình với LESAR Đối với chương trình never Hình 7, ca kiểm thử sinh dựa điều kiện kích hoạt lộ trình (E , L0 , S , L2 , L3 , S), minh họa Bảng Bảng Sinh ca kiểm thử dựa điều kiện kích hoạt Đường (E ,L0 ,S ,L2 ,L3 ,S) Điều kiện kích hoạt AC=(false->pre(true and true->false)) and (not(L2) or L1) and false->true) Thuộc tính bẫy nAC=not(AC) Phản ví dụ - TRANSITION true Ca kiểm thử {1} Chúng tiến hành sử dụng công cụ để phản ví dụ lưu trữ vào sở liệu MySQL Bảng Bảng Các phản ví dụ tạo # AC (true and true->false) ( true and (not(L1) or L2) and false->true) ((false->pre( true and true->false)) and (not(L2) or L1) and false->true) ((false->pre( true and (not(L1) or L2) and false->true)) and Phản ví dụ - TRANSITION true - TRANSITION true - TRANSITION true - TRANSITION true - TRANSITION true - TRANSITION true ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 9(94).2015 (not(L2) or L1) and false->true) - TRANSITION true Dựa phản ví dụ, ta xác định ca kiểm thử tương ứng Bảng Bảng Các phản ví dụ tạo Lộ trình Điều kiện kích hoạt Ca kiểm thử (true and true->false) ( true and (not(L1) or L2) and false->true) ((false->pre( true and true>false)) and (not(L2) or L1) and false->true) ((false->pre( true and (not(L1) or L2) and false>true)) and (not(L2) or L1) and false->true) {true} {(true),( true)} {(true),( true)} {(true),( true)} Chương trình never ví dụ đơn giản chương trình Lustre Sau ứng dụng kỹ thuật kiểm chứng mơ hình sở điều kiện kích hoạt mạng lưới tốn tử, dựa vào phản ví dụ sinh ra, có ca kiểm thử cần thiết Với hệ thống lớn phức tạp hơn, việc sinh ca kiểm thử tự động giúp tiết kiệm nhiều chi phí cho q trình kiểm thử Kết trình thử nghiệm tạo liệu cần thiết cho trình kiểm thử ứng dụng Lustre/SCADE Cơng cụ giao diện cịn đơn giản, giải vấn đề sinh liệu thử từ đầu vào chương trình viết ngơn ngữ Lustre, đáp ứng yêu cầu đặt vấn đề cần nghiên cứu Kết luận Bài báo này, đề xuất giải pháp sử dụng kỹ thuật kiểm chứng mơ hình mạng lưới tốn tử chương trình Lustre để sinh ca kiểm thử mong muốn Định nghĩa quy trình xây dựng tập ca kiểm thử cho kiểm thử chương trình Đồng thời, báo xây dựng công cụ tự động hóa việc sinh ca kiểm thử chương trình 89 Lustre/SCADE sở giải pháp đề xuất Chúng tiếp tục áp dụng phương pháp cho việc sinh ca kiểm thử tự động kiểm thử hồi quy cho ứng dụng Lustre/SCADE Hướng đến khả tự động hóa q trình sinh ca kiểm thử kiểm thử hồi quy tự động cho hệ thống phản ứng nói chung ứng dụng Lustre/SCADE nói riêng TÀI LIỆU THAM KHẢO [1] A Lakehal and I Parissis, “Lustructu: A Tool for the Automatic Coverage Assessment of Lustre Programs”, in IEEE International Symposium on Software Reliability Engineering, (Chicago, Illinois, USA), (2005) [2] Abdesselam Lakehal, Ioannis Parissis Structural Coverage Criteria for Lustre/SCADE Programs Software Testing, Verification & Reliability, John Wiley and Sons Ltd (2009) [3] Albert Benveniste, Gerard Berry The Synchronous Approach to Reactive and Real-Time Systems Proceedings of the IEEE (1991) [4] Esterel Technologies website: http://esterel-technologies.com [5] Gordon Fraser, FranzWotawa, Paul E Ammann Testing with model checkers: A survey, Competence Network Softnet Austria, Austria (2007) [6] Karolina Zurowska and Juergen Di Model-based generation of test cases for reactive systems Applied Formal Methods Group School of Computing Queen’s University Kingston, Ontario, Canada, June (2010) [7] L duBousquet, F Ouabdesselam, J.- L.Richier, and N Zuanon Lutess: testing environment for synchronous software Advances in Computing Science, Springer (1998) [8] Nicolas Halbwachs, Pascal Raymond Validation of Synchronous Reactive Systems: from Formal Verication to Automatic Testing Grenoble, France (1999) [9] P Caspi, D Pilaud, N Halbwachs, and J Plaice, “LUSTRE: A Declarative Language for Programming Synchronous Systems”, in ACM Symposium on Principles of Programming Languages, (Munich, Germany) (1987) [10] Trinh Cong Duy, Nguyen Thanh Binh, Ioannis Parissis Automatic Generation of Test Cases in Regression Testing for Lustre/SCADE Journal of Software Engineering and Applications, Vol (2013) [11] Trinh Cong Duy, Nguyen Thanh Binh, Ioannis Parissis Automatic generation of test cases in regression testing for Reactive Systems FAIR 2013, Hue, Vietnam (2013) (BBT nhận bài: 01/08/2015, phản biện xong: 04/08/2015) ... tử chương trình Lustre để sinh ca kiểm thử mong muốn Định nghĩa quy trình xây dựng tập ca kiểm thử cho kiểm thử chương trình Đồng thời, báo xây dựng cơng cụ tự động hóa việc sinh ca kiểm thử chương. .. Sinh liệu thử với công cụ kiểm chứng mô hình LESAR Để thực việc sinh ca kiểm thử sau có điều kiện kích hoạt phản ví dụ tương ứng, sử dụng công cụ kiểm chứng mơ hình LESAR [2] cho chương trình. .. dụng để xây dựng nên ca kiểm thử hệ thống Trong phần này, trình bày kỹ thuật kiểm chứng mơ hình ứng dụng kỹ thuật việc sinh ca kiểm thử 2.3.1 Tổng quan kiểm chứng mơ hình Kiểm chứng mơ hình kỹ

Ngày đăng: 16/11/2022, 20:50

w