Đang tải... (xem toàn văn)
Tài liệu tham khảo công nghệ thông tin Kiểm thử dựa trên mô hình
ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆĐoàn Trung KiênKIỂM THỬ DỰA TRÊN MÔ HÌNHKHOÁ 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ỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆĐoàn Trung KiênKIỂM THỬ DỰA TRÊN MÔ HÌNHKHOÁ 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ũngHÀ NỘI - 2010 Kiểm thử dựa trên mô hình Đoàn Trung KiênLỜI CẢM ƠNLờ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êni Kiểm thử dựa trên mô hình Đoàn Trung KiênTÓM TẮTQuá trình sinh các ca kiểm thử tự động dựa trên mô 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ựa trên mô 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.ii Kiểm thử dựa trên mô hình Đoàn Trung KiênMỤC LỤCĐoàn Trung Kiên . 1 HÀ NỘI - 2010 1 Đoàn Trung Kiên i HÀ NỘI - 2010 . i LỜI CẢM ƠN .iTÓM TẮT .ii1.1 Đặt vấn đề 11.2 Nội dung nghiên cứu của khóa luận 11.3 Cấu trúc khóa luận 12.1 Khái niệm kiểm thử dựa trên mô hình 32.2 Các bước thực hiện .32.3 Thuận lợi và khó khăn của kiểm thử dựa trên mô hình 4Thuận lợi 4Khó khăn 5 Mặc dù có nhiều thuận lợi nhưng bên cạnh đó cũng có những trở ngại nhất định của kiểm thử dựa trên mô hình: 5Do 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 5Trong kiểm thử dựa trên mô 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 5Giống như các phương pháp kiểm thử khác, việc kiểm thử dựa trên mô 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. 52.4 Máy hữu hạn trạng thái ( Finite State Machines ) 5 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 .5 Một máy trạng thái mô tả cho hệ thống phần mềm được định nghĩa dựa vào ( I, S, T, F, L), trong do: .5 I : Tập hợp các yếu tố đầu vào của hệ thống .6iii Kiểm thử dựa trên mô hình Đoàn Trung Kiên S : Tập các trạng thái của hệ thống .6 T : Tập hợp hàm chuyển đổi trạng thái khi đầu vào là một trạng thái cụ thể .6 F : Tập hợp các trạng thái kết thúc 6 L : Trạng thái ban đầu của hệ thống 62.5 Bài toán Kitchen Timer .6 Chúng ta sẽ dựa vào các khái niệm của máy hữu hạn trạng thái để xây dựng mô hình hệ thống kitchen timer 62.5.1 Miêu tả bài toán .62.5.2 Xây dựng mô hình .63.1 Ngôn ngữ Promela 83.1.1 Khái niệm cơ bản .83.1.2 Biến và Kiểu 9 Giống như nhiều ngôn ngữ lập trình khác, Promela yêu cầu các biến phải được khai báo trước khi chúng có thể được sử dụng. Khai báo biến theo phong cách của ngôn ngữ lập trình C. Theo mặc định tất cả các biến của các loại biến cơ bản được bắt đầu từ 0. Cũng như trong C thì 0 được coi như sai và khác 0 được coi là đúng. Một biến có thể là biến toàn cục hoặc là biến địa phương của mỗi tiến trình 9Kiểu dữ liệu 9Type 9Domain 9bit or bool 9{ 0, 1} 9byte 90…255 9short 9-215 … 215 - 1 9int 9-231 … 231 – 1 9Kiểu khai báo .9Kiểu cấu trúc 9Kiểu mảng 10 Một mảng có cấu trúc như sau: 10int table[max] .10iv Kiểm thử dựa trên mô hình Đoàn Trung Kiên Lưu ý rằng điều này tạo ra một mảng max-1 số nguyên: .10 table[0], table[1], . table[max-1] 10Kiểu liệt kê .103.1.3 Định danh, Hằng số và Biểu thức .10Định danh .10 Định danh có thể là một chữ cái, một ký tự .10Hằng số 10 Hằng số là một chuỗi ký tự đại diện cho một số nguyên thập phân. Hằng số tượng trưng có thể được định nghĩa như sau: 10#define MAX 999 .10Biểu thức 103.1.4 Tiến trình .103.2 Công cụ Spin 113.2.1 Sơ lược về Spin .113.2.2 Công cụ XSpin 124.1 Phương pháp sinh các ca kiểm thử tự động .21 char tempLable[256] ="FIRST"; 21char tempInput[256] = ""; .21 char tempOutput[256] = ""; 21 Node tempNode = {"FIRST","",""}; 21 void setNode(char* cur_label, char* cur_input, char* cur_output) { 21strcpy(tempNode.label,cur_label); 22strcpy(tempNode.input, cur_input); 22strcpy(tempNode.output, cur_output); 22} 22void printNode(Node n) { .22 printf("Input: %s\n",n.input); .22 printf("Output: %s\n",n.output); 22 printf("STATE<%s>\n",n.label); .224.2 Ví dụ áp dụng .22 Áp dụng các phương pháp đã đề xuất ở được tìm hiểu trong khóa luận cho bài toán Kitchen Timer. Kitchen timer một thiết bị hẹn giờ đơn dùng trong các nhà v Kiểm thử dựa trên mô hình Đoàn Trung Kiênbếp. Đầu vào của thiết bị thông qua 2 nút bấm SW1 và SW2. Đầu ra là thông qua 2 đèn báo hiệu LED .2222Hình 11: Kiến trúc hệ thống kitchen timer 224.2.1 Mô tả bài toán 23Khởi động kitchen timer .23Bật công tắc khởi động kitchen timer. Khi bạn bắt đầu chương trình cả hai đèn LED đã được chờ đợi ở chế độ tắt 23Thiết lập thời gian 23Thiết lập thời gian bằng công tắc 1. Thiết lập thời gian được hiển thị ở đèn LED ở dạng số nhị phân. Thời gian thiết lập là từ 1 tới 3 phút .23Bắt đầu tính giờ 23Bắt đầu đồng hồ đếm ngược bằng công tắc 2. Nếu đồng hồ bắt đầu đếm ngược thì đèn LED sẽ nháy 23Tạm dừng .23Nếu bấm công tắc 1 trong khi đang tính giờ, thì sẽ kết thúc việc tính giờ và cả 2 đèn LED sẽ tắt hoàn toàn 23Nếu bấm công tắc 2 thì đồng hồ đếm ngược tạm dừng và đèn LED cũng dừng. Bấm lại công tắc 2 lần nữa thì đồng hồ tiếp tục tính giờ và đèn LED tiếp tục nháy.23Hiển thị thời gian hết và báo động 234.2.2 Máy hữu hạn trạng thái của Kitchen Timer 23 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 .2324Hình 12: Mô hình máy hữu hạn trạng thái kitchen timer .24Bộ 24Yếu tố 24Ý nghĩa 24Nhãn 24NUMINPUT .24COUNTDOWN 24PAUSE 24vi [...]... 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ựa trên mô hình được minh họa bằng sơ đồ sau: 3 Kiểm thử dựa trên mô hình Đoàn Trung Kiên 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. .. 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à 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... 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 2 Kiểm thử dựa trên mô hình Đoàn Trung Kiên 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 khái niệm về kiểm thử mô. .. 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ựa trên mô 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 •Khó khăn Mặc dù có nhiều thuận lợi nhưng bên cạnh đó cũng có những trở ngại nhất định của kiểm thử dựa trên mô 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... 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ựa trên mô 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, việc kiểm thử dựa trên mô 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á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ựa trên mô hình: • Xây dựng mô hình dựa trê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ả... sang [Chờ] 6 Kiểm thử dựa trên mô 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ựa trên mô 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... 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ựa trên mô 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ựa trên mô hình và ứng dụng... giản của hệ thống dựa trê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ựa trên mô 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ình dự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ựa trên các yếu tố dữ liệu đầu vào và đầu ra Mô hình này được... 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 4 Kiểm thử dựa trên mô hình . 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à một kỹ thuật kiểm thử mà các hoạt động của hệ thống được chạy thử trong. độ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ựa trên mô hình: • Xây dựng mô hình dựa trên các yêu cầu và chức năng