Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1,14 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đoàn Trung Kiên KIỂM THỬDỰATRÊNMÔHÌNH KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đoàn Trung Kiên KIỂM THỬDỰATRÊNMÔHÌNH KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hướng dẫn: TS. Phạm Ngọc Hùng Cán bộ đồng hướng dẫn: ThS. Đặng Việt Dũng HÀ NỘI - 2010 Kiểm thửdựatrênmôhình Đoàn Trung Kiên i LỜI CẢM ƠN Lời đầu tiên em xin bày tỏ lòng biết ơn sâu sắc tới TS. Phạm Ngọc Hùng và ThS. Đặng Việt Dũng, các thầy đã hướng dẫn em tận tình trong suốt năm học vừa qua. Em xin bày tỏ lòng biết ơn tới các thầy, cô giáo trong Khoa Công nghệ thông tin - Trường Đại học Công nghệ - ĐHQGHN. Các thầy cô đã dạy bảo, chỉ dẫn em và luôn tạo điều kiện tốt nhất cho em học tập trong suốt quá trình học đại học đặc biệt là trong thời gian làm khoá luận tốt nghiệp. Con xin chân thành cảm ơn Ông Bà, Cha Mẹ đã luôn động viên, ủng hộ vật chất lẫn tinh thần trong suốt thời gian qua. Tôi xin cảm ơn sự quan tâm, giúp đỡ và ủng hộ của anh chị, bạn bè, đặc biệt là các bạn sinh viên lớp K51CB trường Đại học Công nghệ trong quá trình thực hiện khóa luận. Mặc dù đã cố gắng hoàn thành khóa luận trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót. Em rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của quý Thầy Cô và các bạn. Hà Nội, ngày 05 tháng 05 năm 2008 Đoàn Trung Kiên Kiểm thửdựatrênmôhình Đoàn Trung Kiên ii TÓM TẮT Quá trình sinh các ca kiểm thử tự động dựatrênmôhình gồm các công đoạn chính: Xây dựng mô hình, nhúng mã C, áp dụng công cụ Spin để sinh các ca kiểm thử. Trong đó xây dựng môhình là công đoạn đầu tiên, nhiệm vụ chính ở đây là từ mô tả các yêu cầu của hệ thống và chức năng xác định cùng với dữ liệu đầu vào và ra phải xây dựng được môhình của hệ thống. Xây dựng môhình có vai trò hết sức quan trọng, nếu việc xây dựng môhình không chính xác thì các công đoạn về sau trong hệ thống kiểm thửdựatrênmôhình không thể chính xác được. Do tầm quan trọng đó của việc xây dựng mô hình, khóa luận này đề cập tới các lý thuyết cơ bản về xây dựng môhình của hệ thống bằng ngôn ngữ môhình promela. Trong khóa luận này tôi trình bày phương pháp nhúng mã nguồn C vào trong mô tả promela để lọc các trạng thái và sinh các ca kiểm thử một cách tự động bằng công cụ hỗ trợ kiểm thử Spin. Từ đó áp dụng các kỹ thuật trên vào bài toán cụ thể kitchen timer. Kiểm thửdựatrênmôhình Đoàn Trung Kiên iii MỤC LỤC CHƯƠNG 1 GIỚI THIỆU 1 1.1 Đặt vấn đề 1 1.2 Nội dung nghiên cứu của khóa luận 1 1.3 Cấu trúc khóa luận 1 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT CHO KIỂM THỬMÔHÌNH 3 2.1 Khái niệm kiểm thửdựatrênmôhình 3 2.2 Các bước thực hiện 3 2.3 Thuận lợi và khó khăn của kiểm thửdựatrênmôhình 4 2.4 Máy hữu hạn trạng thái ( Finite State Machines ) 5 2.5 Bài toán Kitchen Timer 6 2.5.1 Miêu tả bài toán 6 2.5.2 Xây dựng môhình 6 CHƯƠNG 3 GIỚI THIỆU PROMELA VÀ SPIN 8 3.1 Ngôn ngữ Promela 8 3.1.1 Khái niệm cơ bản 8 3.1.2 Biến và Kiểu 9 3.1.3 Định danh, Hằng số và Biểu thức 10 3.1.4 Tiến trình 11 3.2 Công cụ Spin 12 3.2.1 Sơ lược về Spin 12 3.2.2 Công cụ XSpin 12 CHƯƠNG 4 SINH CA KIỂM THỬ TỰ ĐỘNG VÀ THỰC NGHIỆM 21 4.1 Phương pháp sinh các ca kiểm thử tự động 21 4.2 Ví dụ áp dụng 22 4.2.1 Mô tả bài toán 23 4.2.2 Máy hữu hạn trạng thái của Kitchen Timer 23 4.2.3 Đặc tả kitchen timer bằng promela có nhúng mã C 24 4.2.4 Kết quả 30 CHƯƠNG 5 KẾT LUẬN 32 Phụ lục A: Đặc tả của kitchen timer bằng promela có nhúng mã C 33 Phụ lục B: Một số ca kiểm thử 42 TÀI LIỆU THAM KHẢO 44 Kiểm thửdựatrênmôhình Đoàn Trung Kiên iv DANH MỤC HÌNH VẼ Hình 1: Các bước thực hiện kiểm thửmô hình. 4 Hình 2: Môhình chuyển đổi trạng thái của kitchen timer 7 Hình 3: Màn hình cửa sổ chính của XSpin 13 Hình 4: Cửa sổ chức năng Run Slicing algorithm 14 Hình 5: Cửa sổ chính chức năng Set Simulation Parameters. 15 Hình 6: Cửa sổ khi chạy chức năng Run Simulation. 16 Hình 7: Cửa sổ chính chức năng Set Verification Parameters 17 Hình 8: Cửa sổ khi chạy chức năng Run Verification 18 Hình 9: Cửa sổ khi chạy chức năng LTL Property Manager 19 Hình 10: Cửa sổ khi chạy chức năng View Spin Automaton 20 Hình 11: Kiến trúc hệ thống kitchen timer. 23 Hình 12: Môhình máy hữu hạn trạng thái kitchen timer. 24 Kiểm thửdựatrênmôhình Đoàn Trung Kiên 1 CHƯƠNG 1 GIỚI THIỆU 1.1 Đặt vấn đề Trong các công ty phát triển phần mềm hầu hết công việc kiểm thử của kiểm thử viên được thực hiện thủ công bằng tay. Trong khi đó số lượng tình huống kiểm tra quá nhiều mà các kiểm thử viên không thể hoàn tất bằng tay trong thời gian cụ thể nào đó. Hoặc khi nhóm lập trình đưa ra nhiều phiên bản phần mềm liên tiếp để kiểm tra. Thực tế cho thấy việc đưa ra các phiên bản phần mềm có thể là hàng ngày, mỗi phiên bản bao gồm những tính năng mới, hoặc tính năng cũ được sửa lỗi hay nâng cấp. Việc bổ sung hoặc sửa lỗi code cho những tính năng ở phiên bản mới có thể làm cho những tính năng khác đã kiểm tra tốt chạy sai mặc dù phần code của nó không hề chỉnh sửa. Để khắc phục điều này, đối với từng phiên bản, kiểm thử viên không chỉ kiểm tra chức năng mới hoặc được sửa, mà phải kiểm tra lại tất cả những tính năng đã kiểm tra tốt trước đó. Điều này khó khả thi về mặt thời gian nếu kiểm tra thông thường. Để giải quyết vấn đề này chúng ta áp dụng kỹ thuật kiểm thửdựatrênmôhình cho quá trình sinh các ca kiểm thử tự động . Do đó, khoá luận này tập trung trình bày về việc nghiên cứu kiểm thửdựatrênmôhình và ứng dụng công cụ Spin vào việc tự động sinh các ca kiểm thử: Xây dựng môhình hệ thống và thực nghiệm. 1.2 Nội dung nghiên cứu của khóa luận Bài toán thực hiện trong khóa luận này là bài toán kiểm thửdựatrênmôhình để sinh ra các ca kiểm thử một cách tự động. Thiết kế hệ thống bằng ngôn ngữ Promela và nhúng mã C vào thiết kế Promela là hai nội dung quan trong nhất của quá trình sinh ca kiểm thử tự động. Tôi nghiên cứu phương pháp được sử dụng để thực hiện các nội dung đó, và áp dụng nó vào bài toán sinh ca kiểm thử tự động của hệ thống máy hẹn giờ kitchen timer. Quá trình thực nghiệm sẽ bao gồm các thực nghiệm về thiết kế hệ thống kitchen timer bằng Promela, nhúng mã nguồn C vào thiết kế Promela của hệ thống và sử dụng Spin sinh các ca kiểm thử một cách tự động. 1.3 Cấu trúc khóa luận Các phần còn lại của khóa luận có cấu trúc như sau: Kiểm thửdựatrênmôhình Đoàn Trung Kiên 2 Chương 2 trình bày cơ sở lý thuyết của kiểm thửmô hình, bao gồm các khái niệm cơ bản, các bước thực hiện, lợi ích của kiểm thửmôhình và cách thức xây dựng môhình (máy hữu hạn trạng thái). Chương 3 trình bày các khái niệm về ngôn ngữ môhình promela, bao gồm các định nghĩa cơ bản về khai báo biến và kiểu, định danh, hằng số, biểu thức, tiến trình. Chương 4 trình bày về các kết quả thực nghiệm của quá trình mô tả máy hẹn giờ kitchen timer, thiết kế môhình hệ thống kitchen timer bằng Promela, và quá trình sinh ca kiểm thử tự động. Chương 5 tóm tắt các kết quả đã đạt được, kết luận, những hạn chế và hướng nghiên cứu phát triển trong tương lai. Kiểm thửdựatrênmôhình Đoàn Trung Kiên 3 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT CHO KIỂM THỬMÔHÌNH Quá trình thiết kế môhình của hệ thống bằng ngôn ngữ môhình Promela làm việc dựatrên các khái niệm về kiểm thửmô hình. Chương này sẽ lần lượt trình bày những khái niệm cơ bản về kiểm thửmô hình. 2.1 Khái niệm kiểm thửdựatrênmôhình Theo Colin Campbell, kiểm thửdựatrênmôhình là một kỹ thuật kiểm thử mà các hoạt động của hệ thống được chạy thử trong một thời gian sẽ được dự đoán trước, nó được thực hiện bởi một đặc tả hình thức hoặc một môhình của hệ thống. Các mẫu thiết kế hay môhình là mô tả đơn giản của hệ thống dựatrên yêu cầu hệ thống và chức năng xác định, giúp chúng ta có thể hiểu và dự đoán được hành vi của hệ thống. 2.2 Các bước thực hiện Quá trình kiểm thửdựatrênmôhình được bắt đầu bằng việc xác định yêu cầu của hệ thống từ đó xây dựng môhìnhdựa vào các yêu cầu và chức năng của hệ thống. Việc xây dựng môhình còn phải dựatrên các yếu tố dữ liệu đầu vào và đầu ra. Môhình này được sử dụng để sinh ra các ca kiểm thử. Chúng ta có thể biết kết quả đầu ra mong đợi từ môhình hoặc từ quy định chuẩn ( oracle ). Khi chạy kịch bản và kết quả thu được sẽ được so sánh với kết quả mong đợi. Từ đó quyết định hành động tiếp theo như sửa đổi môhình hoặc dừng kiểm thử,… Các bước để thực hiện kiểm thửdựatrênmô hình: Xây dựng môhìnhdựatrên các yêu cầu và chức năng của hệ thống. Tạo đầu ra dự kiến từ mô tả bài toán. Chạy kịch bản kiểm thử. So sánh kết quả đầu ra thực tế với kết quả đầu ra dự kiến. Quyết định hành động tiếp theo (Sửa đổi mô hình, tạo thêm ca kiểm thử, dừng kiểm thử, đánh giá chất lượng của phần mềm ) Các bước thực hiện kiểm thửdựatrênmôhình được minh họa bằng sơ đồ sau: Kiểm thửdựatrênmôhình Đoàn Trung Kiên 4 Hình 1: Các bước thực hiện kiểm thửmô hình. 2.3 Thuận lợi và khó khăn của kiểm thửdựatrênmôhình Thuận lợi Trong phát triển phần mềm các kiểm thử viên thường thực hiện công việc của mình bằng phương pháp truyền thống nên thường thiếu thời gian để thực hiện kiểm thử, hoặc giá thành sản phẩm khi hoàn thành thường cao…. Và kiểm thửdựatrênmôhình sẽ khắc phục được một số nhược điểm đó: Do quá trình sinh ca kiểm thử là tự động vì vậy mà rút ngắn thời làm phần mềm, và chất lượng phần mềm tốt hơn. Đặc biệt tuy chi phí lớn cho việc xây dựng môhình nhưng điều này sẽ được khấu trừ do chi phí bảo dưỡng thấp hơn nhiều khi hệ thống được hoạt động. Quá trình sinh ra các ca kiểm thử được thực hiện một cách tự động nên sinh ra nhiều ca kiểm thử và phát hiện nhiều lỗi. Người kiểm thử phần mềm cần thường xuyên trao đổi với người phát triển phần mềm trong khi xây dựng môhình hệ thống vì vậy mà [...]... của kiểm thửdựatrênmô hình: Do phải xây dựng môhình của hệ thống vì vậy người kiểm thử phần mềm phải yêu cầu là những người có khả năng phân tích và thiết kế hệ thống Trong kiểm thửdựatrênmôhình công việc quan trọng nhất là xây dựng môhình Người kiểm thử phải đầu tư đáng kể cả về thời gian, trí tuệ và tiền bạc cho việc xây dựng môhình hệ thống Giống như các phương pháp kiểm thử khác,... Automaton (FSM View) 19 Kiểm thửdựatrênmôhình Đoàn Trung Kiên Hình 10: Của sổ khi chạy chức năng View Spin Automaton 20 Kiểm thửdựatrênmôhình Đoàn Trung Kiên CHƯƠNG 4 SINH CA KIỂM THỬ TỰ ĐỘNG VÀ THỰC NGHIỆM Sau khi thiết kế môhình hệ thống bằng ngôn ngữ môhình Promela, kết hợp nhúng mã C vào đặc tả promela và sử dụng công cụ hỗ trợ kiểm chứng Spin để tự động sinh các ca kiểm thử Kitchen Timer là... [Chờ] 6 Kiểm thửdựatrênmôhình Đoàn Trung Kiên F = [Chờ] L = [Chờ] Môhình chuyển đổi trạng thái Tạm dừng Tạm dừng Chờ Thiết lập Đếm ngược Thiết lập thời gian Đếm ngược Đếm ngược kết thúc Hình 2: Môhình chuyển đổi trạng thái của kitchen timer 7 Tiếp tục Kiểm thửdựatrênmôhình Đoàn Trung Kiên CHƯƠNG 3 GIỚI THIỆU PROMELA VÀ SPIN Chương này chúng ta sẽ biết cách sinh các ca kiểm thử một cách... Values Sequence Chart 15 Kiểm thửdựatrênmôhình Đoàn Trung Kiên Hình 6: Cửa sổ khi chạy chức năng Run Simulation Thiết lập thông số Verification Kiểm tra môhình Đảm bảo thực hiện an toàn và xác minh tính chất Correctness Properties: Safety, Liveness Search mode A full queue Verify an LTL property Set advance options 16 Kiểm thửdựatrênmôhình Đoàn Trung Kiên Hình 7: Cửa sổ chính chức... phải xây dựng môhình của hệ thống bằng ngôn ngữ Promela Chương này sẽ lần lượt trình bày những khái niệm cơ bản về ngôn ngữ môhình Promela, công cụ Spin, và giao diện người dùng XSpin 3.1 Ngôn ngữ Promela Xây dựng môhình hệ thống bằng ngôn ngữ Promela là một công đoạn quan trọng trong kiểm thửdựatrênmô hình, để từ đó có thể dùng công cụ Spin sinh ra các ca kiểm thử Ngôn ngữ môhình Promela có... bấm công tắc 2 thì đồng hồ đếm ngược lại bắt đầu 4.2.2 Máy hữu hạn trạng thái của Kitchen Timer Từ những thông số kỹ thuật được mô tả ở trên chúng ta xây dựng được môhình máy trạng thái của Kitchen Timer như hình vẽ sau 23 Kiểm thửdựatrênmôhình Đoàn Trung Kiên Hình 12: Môhình máy hữu hạn trạng thái kitchen timer Bộ Yếu tố Ý nghĩa Nhãn NUMINPUT Thiết lập thời gian COUNTDOWN Đếm ngược PAUSE Tạm dừng... khác, việc kiểm thửdựatrênmôhình chỉ phát hiện được lỗi của hệ thống mà không thể phát hiện được hệ thống còn lỗi hay không 2.4 Máy hữu hạn trạng thái ( Finite State Machines ) Trong kiểm thử phần mềm có nhiều kiểu môhình được sử dụng như : Finite State Machines, UML, Grammars, Trong nghiên cứu này trình bày về môhình máy hữu hạn trạng thái: Finite State Machines Một máy trạng thái mô tả cho hệ... thiết kế vì vậy sẽ tăng thời gian giải quyết vấn đề trong kiểm thử Tự động tạo và kiểm tra chánh các ca kiểm thử trùng nhau hoặc không hữu hiệu Khi một yêu cầu của hệ thống thay đổi việc thay đổi các ca kiểm thử là rất phức tạp nhưng nó được giải quyết khi mà kiểm thửdựatrênmôhình Việc thay đổi các ca kiểm thử chỉ việc thay đổi môhình của hệ thống Có khả năng đánh giá chất lượng phần mềm ... thống môhình của họ Những kết quả phản hồi đó đóng vai trò quan trọng trong sự hiểu biết của các nhà thiết kế về hệ thống trước khi họ đầu tư vào phân tích chính thức 3.2.2 Công cụ XSpin Có giao diện thân thiện người dùng cửa sổ soạn thảo chính với khả năng chỉnh sửa và tìm kiếm là đơn giản XSpin là công cụ thuận tiện để tiếp cận với Spin 12 Kiểm thửdựatrênmôhình Đoàn Trung Kiên Hình 3: Màn hình. .. Syntax Check Kiểm tra cú pháp ngôn ngữ Promela Luôn luôn là bước đầu tiên sau khi thay đổi chương trình Promela 13 Kiểm thửdựatrênmôhình Đoàn Trung Kiên Hình 4: Cửa sổ chức năng Run Slicing algorithm Run Slicing Algorithm Xác định những thành phần không liên quan của môhình Biểu diễn sự phân tích lưu lượng dữ liệu Set Simulation Parameters (Hỗ trợ gỡ lỗi quan trọng nhất) Thiết lập thông . thử dựa trên mô hình được minh họa bằng sơ đồ sau: Kiểm thử dựa trên mô hình Đoàn Trung Kiên 4 Hình 1: Các bước thực hiện kiểm thử mô hình. 2.3 Thuận lợi và khó khăn của kiểm thử dựa trên. về kiểm thử mô hình. Chương này sẽ lần lượt trình bày những khái niệm cơ bản về kiểm thử mô hình. 2.1 Khái niệm kiểm thử dựa trên mô hình Theo Colin Campbell, kiểm thử dựa trên mô hình là. lai. Kiểm thử dựa trên mô hình Đoàn Trung Kiên 3 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT CHO KIỂM THỬ MÔ HÌNH Quá trình thiết kế mô hình của hệ thống bằng ngôn ngữ mô hình Promela làm việc dựa trên các