ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ HÀ KHÁNH TOÀN PHƢƠNG PHÁP SINH BỘ KIỂM THỬ TỰ ĐỘNG CHO KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội - 2013 z ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ HÀ KHÁNH TOÀN PHƢƠNG PHÁP SINH BỘ KIỂM THỬ TỰ ĐỘNG CHO KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60 48 10 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. LÊ THANH HÀ Hà Nội - 2013 z i LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của tôi dƣới sự giúp đỡ rất lớn của Giảng viên hƣớng dẫn là Tiến sĩ Lê Thanh Hà, Tiến sĩ Phạm Ngọc Hùng. Những nội dung nghiên cứu và kết quả trong đề tài này hoàn toàn trung thực. Các trích dẫn từ nguồn tài liệu bên ngoài đều đƣợc liệt kê rõ ràng ở phần cuối của luận văn.
Hà Nội, tháng 12 năm 2013 Học viên Hà Khánh Toàn z ii LỜI CẢM ƠN Để có thể hoàn thành đề tài luận văn thạc sĩ một cách hoàn chỉnh, bên cạnh sự nỗ lực cố gắng của bản thân còn có sự hƣớng dẫn nhiệt tình của quý Thầy Cô, cũng nhƣ sự động viên ủng hộ của gia đình và bạn bè trong suốt thời gian học tập, nghiên cứu và thực hiện luận văn thạc sĩ. Xin chân thành bày tỏ lòng biết ơn sâu sắc đến Tiến sĩ Lê Thanh Hà, Tiến sĩ Phạm Ngọc Hùng, những ngƣời đã dành rất nhiều thời gian và tâm huyết hƣớng dẫn tôi nghiên cứu và hoàn thành luận văn thạc sĩ. Xin gửi lời tri ân nhất đối với những điều mà các Thầy đã dành cho tôi. Xin chân thành bày tỏ lòng biết ơn đến toàn thể quý Thầy Cô trong khoa Công Nghệ Thông Tin Trƣờng Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội đã tận tình truyền đạt những kiến thức quý báu cũng nhƣ tạo mọi điều kiện thuận lợi nhất cho tôi trong suốt quá trình học tập, nghiên cứu và cho đến khi thực hiện đề tài luận văn.
Cuối cùng, tôi xin chân thành bày tỏ lòng cảm ơn đến Ban lãnh đạo Hệ thống Đào tạo Lập trình viên Quốc tế Aprotrain-Aptech đã tạo điều kiện cho tôi rất nhiều trong suốt quá trình làm việc, học tập và thực hiện đề tài luận văn thạc sĩ của mình. Mặc dù tôi đã rất cố gắng hoàn thiện luận văn bằng tất cả sự nhiệt tình và năng lực của mình. Tuy nhiên do trình độ, kinh nghiệm và khả năng chuyên môn có hạn, chắc chắn luận văn còn nhiều thiếu sót. Rất mong nhận đƣợc những góp ý của quý Thầy Cô và các bạn.
Hà Nội, tháng 12 năm 2013 Học viên Hà Khánh Toàn z iii MỤC LỤC TRANG PHỤ BÌA LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ CHƢƠNG 1. Khái niệm Web Application. Các kỹ thuật kiểm thử. Kiểm thử hộp đen.
Kiểm thử hộp xám. Kiểm thử dựa trên mô hình. Kiểm thử sử dụng máy hữu hạn trạng thái. Các mức kiểm thử.
Kiểm thử đơn vị. Kiểm thử tích hợp. Kiểm thử hệ thống. Kiểm thử chấp nhận.
BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB. Tổng quan về Selenium. Một số Selenium-Webdriver API. PHƢƠNG PHÁP SINH BỘ KIỂM THỬ TỰ ĐỘNG CHO KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB.
Mục tiêu của phƣơng pháp nghiên cứu. Tạo các ca kiểm thử cho ứng dụng Web. Xây dựng mô hình máy hữu hạn trạng thái. Xây dựng mô hình đồ thị cho máy hữu hạn trạng thái.
Thực hiện việc tạo ra các ca kiểm thử. Thuật toán sinh ca kiểm thử. Phƣơng pháp thực hiện. Xây dựng công cụ kiểm thử tự động.
Mô tả công cụ kiểm thử .2 Xây dựng ứng dụng Web. Xây dựng máy hữu hạn trạng thái cho ứng dụng Web. Kết quả thử nghiệm chƣơng trình. 47 TÀI LIỆU THAM KHẢO.
54 z v DANH MỤC CÁC TỪ VIẾT TẮT Viết tắt Cụm từ đầy đủ Ý nghĩa FSM Finite State Machine Máy hữu hạn trạng thái HTTP Hypertext Transfer Protocol Giao thức truyền siêu văn bản WSDL Web Services Description Ngôn ngữ mô tả các dịch vụ Language Web SOAP Simple Object Access Protocol Giao thức truy cập đối tƣợng đơn giản API Application Programming Giao diện lập trình ứng dụng Interface UML Unified Modeling Language Ngôn Ngữ Mô Hình Hóa Thống Nhất SWEBOK Software Engineering Body of Tổ chức quốc tế theo chuẩn Knowledge ISO/IEC TR 19759:2005 z vi DANH MỤC CÁC BẢNG Số hiệu Tên bảng Trang bảng 2.1 Bảng chuyển trạng thái 10 3.1 Bảng chuyển trạng thái trang login.aspx 20 Bảng chuyển trạng thái trang 3.3 Bảng chuyển trạng thái trang resultStudent.4 Bảng chuyển trạng thái trang addMark.5 Bảng chuyển trạng thái trang logout.1 Các phần tử html trang login.2 Bảng trạng thái trang login.3 Bảng sự kiện trang login.4 Bảng biểu diễn trạng thái chuyển trang login.5 Các phần tử html trang studentInformation.6 Bảng trạng thái trang studentInformation.7 Bảng sự kiện trang studentInformation.aspx 39 Bảng biểu diễn trạng thái chuyển trang 4.9 Các phần tử html trang resultStudent.10 Bảng trạng thái trang resultStudent.11 Bảng sự kiện trang resultStudent.aspx 40 Bảng biểu diễn trạng thái chuyển trang 4.13 Bảng trạng thái trang logout.14 Bảng sự kiện trang logout.15 Bảng biểu diễn trạng thái chuyển trang logout.aspx 41 z vii DANH MỤC CÁC HÌNH VẼ Số hiệu Tên hình vẽ Trang hình vẽ 2.1 Kiểm thử hộp đen 4 2.2 Một ví dụ về kiểm thử hộp trắng 5 2.3 Sơ đồ luồng điều khiển đƣợc tạo ra từ chƣơng trình 6 2.4 Các bƣớc thực hiện kiểm thử mô hình 8 2.5 Mô hình đồ thị của máy FSM 11 3.1 Máy hữu hạn trạng thái cho trang login.2 Máy hữu hạn trạng thái cho trang studentInformation.3 Máy hữu hạn trạng thái cho trang ResultStudent.4 Máy hữu hạn trạng thái cho trang addMark.5 Máy hữu hạn trạng thái cho trang logout.6 Thuật toán duyệt đồ thị theo chiều sâu 31 4.1 Sơ đồ xây dựng bài toán 33 4.2 Giao diện chính của chƣơng trình 34 4.3 Giao diện trang Login.4 Giao diện trang studentInformation.5 Giao diện trang resultStudent.6 Giao diện trang addMark.7 Giao diện trang logout.aspx 37 z 1 CHƢƠNG 1. GIỚI THIỆU Ngày nay, sự phát triển của Internet đã thúc đẩy nhu cầu cộng tác làm việc qua mạng và sử dụng các dịch vụ trực tuyến dần trở thành một nhu cầu thiết yếu trong cuộc sống của chúng ta. Xu hƣớng này đòi hỏi các ứng dụng không chỉ là những hệ thống đơn lẻ trên một máy và chịu sự phụ thuộc vào một nền tảng cố định nào nữa, mà chúng phải là những hệ thống linh hoạt giúp ngƣời dùng làm việc “mọi lúc, mọi nơi”. Do đó, việc phát triển các ứng dụng Web đang là xu hƣớng tất yếu của ngành công nghiệp phần mềm.
Các ứng dụng Web đang đƣợc ứng dụng rộng rãi trong thực tế. Càng ngày các doanh nghiệp nói chung và mọi ngƣời nói riêng càng phụ thuộc vào các ứng dụng Web và làm thế nào để các ứng dụng Web đáp ứng đƣợc các nhu cầu này. Do đó, nhu cầu đảm bảo an toàn chất lƣợng các sản phẩm phần mềm ứng dụng Web ngày càng trở nên cấp thiết. Việc đảm bảo chất lƣợng phần mềm hiện nay đang là một bài toán khó và nó tiêu tốn hơn 50% công sức và chi phí của các doanh nghiệp phần mềm.
Kiểm thử đang đƣợc quan tâm nhƣ là phƣơng pháp chủ yếu để đảm bảo chất lƣợng của sản phẩm phần mềm ứng dụng Web nói riêng và sản phẩm phần mềm nói chung. Trong thực tế, các công ty gặp nhiều khó khăn, tốn thời gian và chi phí cao cho việc kiểm thử các ứng dụng Web. Mặc dù họ có thể thuê những ngƣời kiểm thử có kỹ năng kiểm thử giỏi, song những sai sót hoặc thiếu sót trong kiểm thử ứng dụng Web là không thể tránh khỏi do các phƣơng pháp kiểm thử ứng dụng Web thƣờng đƣợc thực hiện thủ công. Do đó, các phƣơng pháp kiểm thử hiện tại không đảm bảo phát hiện ra tất cả các lỗi.
Ngoài ra, việc kiểm thử thủ công của một ứng dụng Web có thể tẻ nhạt và tốn thời gian (đôi khi do tƣơng tác ngƣời dùng quá lớn), đặc biệt là khi thực hiện các bài kiểm thử qui hồi trong ứng dụng. Kết quả là các ứng dụng Web hiện nay tiềm ẩn rất nhiều lỗi sau khi triển khai cho khách hàng. Trong kiểm thử các ứng dụng Web, kiểm thử tƣơng tác giao diện ngƣời dùng là một vấn đề khó và thƣờng đƣợc thực hiện thủ công. Trong thực tế, chúng ta có một thiết kế giao diện ngƣời dùng mô tả việc thay đổi trạng thái của màn hình ứng với các tƣơng tác của ngƣời dùng.
Các thay đổi trạng thái này có thể xảy ra trong một trang Web hoặc từ trang Web này sang trang Web khác. Làm thế nào để đảm bảo rằng việc cài đặt tuân thủ đúng theo thiết kế này chính là mục đích chính của kiểm thử tƣơng tác giao diện ngƣời dùng cho các ứng dụng Web. Các kỹ thuật kiểm thử tự động đã đƣợc biết đến nhƣ là các giải pháp tiềm năng để giải quyết vấn đề trên. Những kỹ thuật này có thể phát hiện ra tất cả các lỗi có thể trong ứng dụng bằng cách tạo ra và thực hiện tự động các ca kiểm thử.
Kết quả là, chúng ta có thể tiết kiệm thời gian và chi phí trong kiểm thử. Tự động kiểm thử là quá trình thực z 2 hiện tự động bởi một chƣơng trình máy tính để tránh các lỗi không đƣợc phát hiện khi kiểm thử thủ công. Để đảm bảo tính chính xác, các công cụ kiểm thử tự động thƣờng đƣợc xây dựng dựa trên các phƣơng pháp kiểm thử nhƣ kiểm thử hộp đen, kiểm thử hộp trắng, … Tuy nhiên, các công cụ kiểm thử tự động là rất đắt và nhiều công ty không thể mua chúng. Luận văn này tập trung nghiên cứu các phƣơng pháp kiểm thử dựa trên mô hình nhằm đảm bảo việc cài đặt đúng theo thiết kế ban đầu.
Đầu tiên sử dụng mô hình máy hữu hạn trạng thái cho giao diện ứng dụng Web, sau đó tạo ra các bộ kiểm thử từ máy hữu hạn trạng thái, từ đó xây dựng một đồ thị có hƣớng để biểu diễn các trƣờng hợp kiểm thử. Dựa trên đồ thị có hƣớng, theo các nhánh chúng ta có thể tạo ra các trƣờng hợp kiểm thử cho sản phẩm. Mục đích của luận văn này là đề xuất một phƣơng pháp cho phép để xây dựng một phƣơng pháp kiểm thử tự động cho giao diện các ứng dụng Web. Một công cụ kiểm thử tự động hỗ trợ cũng sẽ đƣợc phát triển nhằm minh chứng cho tính hiệu quả của phƣơng pháp này.