Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 76 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
76
Dung lượng
898,92 KB
Nội dung
ĐẠ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 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CƠNG NGHỆ HÀ KHÁNH TỒ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 i LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu tơi dƣới giúp đỡ lớn Giảng viên hƣớng dẫn Tiến sĩ Lê Thanh Hà, Tiến sĩ Phạm Ngọc Hùng Những nội dung nghiên cứu kết đề tài hoàn tồn trung thực Các trích dẫn từ nguồn tài liệu bên đƣợc liệt kê rõ ràng phần cuối luận văn Hà Nội, tháng 12 năm 2013 Học viên Hà Khánh Toàn ii LỜI CẢM ƠN Để hồn thành đề tài luận văn thạc sĩ cách hoàn chỉnh, bên cạnh nỗ lực cố gắng thân cịn có hƣớng dẫn nhiệt tình q Thầy Cơ, nhƣ động viên ủng hộ gia đình bạn bè suốt thời gian học tập, nghiên cứu thực 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, ngƣời dành nhiều thời gian tâm huyết hƣớng dẫn nghiên cứu hoàn thành luận văn thạc sĩ Xin gửi lời tri ân điều mà Thầy dành cho tơi Xin chân thành bày tỏ lịng biết ơn đến tồn thể q Thầy Cơ 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 kiến thức quý báu nhƣ tạo điều kiện thuận lợi cho suốt trình học tập, nghiên cứu thực đề tài luận văn Cuối cùng, 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 nhiều suốt trình làm việc, học tập thực đề tài luận văn thạc sĩ Mặc dù tơi cố gắng hoàn thiện luận văn tất nhiệt tình lực Tuy nhiên trình độ, kinh nghiệm khả chuyên mơn có hạn, chắn luận văn cịn nhiều thiếu sót Rất mong nhận đƣợc góp ý quý Thầy Cô bạn Hà Nội, tháng 12 năm 2013 Học viên Hà Khánh Toàn 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 GIỚI THIỆU CHƢƠNG CƠ SỞ LÝ THUYẾT 2.1 Khái niệm Web Application 2.2 Các kỹ thuật kiểm thử .3 2.2.1 Kiểm thử hộp đen 2.2.3 Kiểm thử hộp xám .6 2.2.4 Kiểm thử dựa mơ hình 2.2.5 Kiểm thử sử dụng máy hữu hạn trạng thái 2.3 Các mức kiểm thử 11 2.3.1 Kiểm thử đơn vị 12 2.3.2 Kiểm thử tích hợp 12 2.3.3 Kiểm thử hệ thống 13 2.3.4 Kiểm thử chấp nhận 13 2.4 BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB 13 2.4.1 Tổng quan Selenium 14 2.4.2 Selenium-RC (Remote Control) 14 2.4.3 Selenium (Selenium – Webdriver) 15 2.4.4 Một số Selenium-Webdriver API 15 CHƢƠNG PHƢƠNG PHÁP SINH BỘ KIỂM THỬ TỰ ĐỘNG CHO KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB 18 iv 3.1 Mục tiêu phƣơng pháp nghiên cứu 18 3.2 Tổng quan 18 3.3 Tạo ca kiểm thử cho ứng dụng Web 19 3.3.1 Xây dựng mơ hình máy hữu hạn trạng thái 19 3.3.2 Xây dựng mơ hình đồ thị cho máy hữu hạn trạng thái .27 3.3.3 Thực việc tạo ca kiểm thử 30 3.3.4 Thuật toán sinh ca kiểm thử 30 CHƢƠNG THỰC NGHIỆM 32 4.1 Phƣơng pháp thực 32 4.2 Xây dựng công cụ kiểm thử tự động 32 4.2.1 Mô tả công cụ kiểm thử 33 4.2.2 Xây dựng ứng dụng Web 34 4.2.3 Xây dựng máy hữu hạn trạng thái cho ứng dụng Web .38 4.3 Kết thử nghiệm chƣơng trình 41 4.4 Thảo luận 44 CHƢƠNG KẾT LUẬN 45 PHỤ LỤC 47 TÀI LIỆU THAM KHẢO 54 v DANH MỤC CÁC TỪ VIẾT TẮT Viết tắt FSM HTTP WSDL SOAP API UML SWEBOK vi DANH MỤC CÁC BẢNG Số hiệu bảng 2.1 3.1 3.2 3.3 3.4 3.5 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 vii DANH MỤC CÁC HÌNH VẼ Số hiệu hình vẽ 2.1 Kiểm thử hộp đen 2.2 Một ví dụ kiểm thử 2.3 Sơ đồ luồng điều khiển 2.4 Các bƣớc thực kiể 2.5 Mơ hình đồ thị má 3.1 Máy hữu hạn trạng thá 3.2 Máy hữu hạn trạng thá 3.3 Máy hữu hạn trạng thá 3.4 Máy hữu hạn trạng thá 3.5 Máy hữu hạn trạng thá 3.6 Thuật toán duyệt đồ th 4.1 Sơ đồ xây dựng toá 4.2 Giao diện ch 4.3 Giao diện trang Login 4.4 Giao diện trang studen 4.5 Giao diện trang resultS 4.6 Giao diện trang addMa 4.7 Giao diện trang logout 41 Bảng 4.12 Bảng biểu diễn trạng thái chuyển trang resultStudent.aspx Result Student.aspx s_ResultStudent StudentName Khoahoc Student+KhoaHoc F_main error Cuối máy hữu hạn trạng thái cho trang đăng xuất Trong trang không chứa phần tử html có trạng thái, kiện trạng thái chuyển đƣợc biểu diễn bảng 4.13, bảng 4.14 bảng 4.15 Bảng 4.13 Bảng trạng thái trang logout.aspx Bảng 4.14 Bảng Tên kiện t_login_link Bảng 4.15 Bảng b Logout.aspx s_end F_login 4.3 Kết thử nghiệm chƣơng trình Sau đƣa phần tử HTML, trạng thái, kiện, trạng thái chuyển mô tả vào chƣơng trình chạy thực nghiệm, kết thu đƣợc nhƣ sau: Đối với trang login.aspx, sau chạy thuật toán ta thu đƣợc kết nhƣ sau: với mƣời đƣờng kiểm thử Dữ liệu đầu vào: 42 Tổng số phần tử html: Tổng số trạng thái: Tổng số kiện: Tổng số trạng thái chuyển: 15 Tổng số ca kiểm thử: 11 Chƣơng trình đọc tệp thành cơng Test path 1: S_index*t_passwd=passwd Test path 2: S_index*t_submit=error Test path 3: S_index*t_passwd=passwd*t_reset=S_index Test path 4: S_index*t_passwd=passwd*t_usrname=usr+pass Test path 5: S_index*t_reset = S_index*t_usrname = usrname*t_reset = S_index Test path 6: S_index*t_reset = S_index*t_usrname = usrname*t_submit = error Test path 7: S_index*t_passwd = passwd*t_usrname = usr+pass*t_reset = S_index Test path 8: S_index*t_passwd = passwd*t_usrname = usr+pass*del_passwd = usrname Test path 9: S_index*t_reset = S_index*t_usrname = usrname*t_passwd = usr+pass*t_submit = F_main Test path 10: S_index*t_reset = S_index*t_usrname = usrname*t_submit = error*t_prev = S_index Test path 11: S_index*t_reset = S_index*t_usrname = usrname*t_passwd = usr+pass*del_usrname = passwd*t_submit=error Tiếp theo kết trang thông tin học viên ta thu đƣợc hai đƣờng kiểm thử: Dữ liệu đầu vào: Tổng số phần tử html: Tổng số trạng thái: Tổng số kiện: Tổng số trạng thái chuyển: 43 Tổng số ca kiểm thử: Test path 1: s_StudentInfo * StudentNameText = StudentName * submit = studentInformation.aspx Tức từ trạng thái ban đầu ngƣời dùng nhập tên học viên vào nhâp sau bấm vào nút Submit trang thơng tin học viên Ca kiểm thử thành cơng Test path 2: S_ StudentInfo * Submit = errorSt Ngƣời dùng từ trạng thái ban đầu bấm nút submit trạng thái lỗi Ca kiểm thử thành công Đối với trang resultStudent.aspx, sau chạy thuật toán ta thu đƣợc kết nhƣ sau: với năm đƣờng kiểm thử Dữ liệu đầu vào: Tổng số phần tử html: Tổng số trạng thái: Tổng số kiện: Tổng số trạng thái chuyển: 10 Tổng số ca kiểm thử: Test path 1: s_ResultStudent * select_khoahoc = KhoaHoc * t_stdnameText = StudentName+Khoahoc*Submit = resultStudent.aspx Tức từ trạng thái ban đầu ngƣời dùng chọn khóa học sau ngƣời dùng chọn tên học viên theo khóa bấm vào nút Submit trang kết học tập học viên Ca kiểm thử thành cơng Test path 2: S_ResultStudent * Select_khoahoc = Khoahoc*Submit = errorSt Ngƣời dùng từ trạng thái ban đầu chọn khóa học sau bấm nút submit trạng thái lỗi Ca kiểm thử thành công Test path 3: S_ResultStudent * t_StdNameText = StudentName * select_khoahoc = StudentName+Khoahoc*Submit = resultStudent.aspx Ngƣời dùng từ trạng thái ban đầu chọn tên học viên sau chọn khóa học bấm nút submit trạng kết học tập Ca kiểm thử thành công Test path 4: S_ResultStudent * t_StdNameText = StudentName * Submit = errorSt Ngƣời dùng từ trạng thái ban đầu chọn tên học viên sau bấm vào nút submit trạng thái lỗi Ca kiểm thử không thành công Test path 5: _ResultStudent * Submit = errorSt Ngƣời dùng từ trạng thái ban đầu bấm nút submit trạng thái lỗi Ca kiểm thử thành công 44 Cuối kết kết trang đăng xuất ta thu đƣợc đƣờng kiểm thử: Dữ liệu đầu vào: Tổng số phần tử html: Tổng số trạng thái: Tổng số kiện: Tổng số trạng thái chuyển: Tổng số ca kiểm thử: Test path 1: s_end * t_login_link = login.aspx Tức từ trạng thái ban đầu ngƣời dùng nhấp vào liên kết trang đăng nhập chuyển đến trang đăng nhập Ca kiểm thử thành công 4.4 Thảo luận Để kiểm tra tính đắn chƣơng trình kiểm thử, trang kết học tập tạo lỗi để kiểm thử xem chƣơng trình có phát lỗi hay không Nhƣ sau chạy chƣơng trình kiểm thử tự động cho trang kết học tập học viên sinh đƣợc năm ca kiểm thử có ca kiểm thử khơng thành công bốn ca kiểm thử thành công Đồng thời sau kiểm thử lại thủ công ca kiểm thử có ca kiểm thử không thành công Sau hiệu chỉnh lại trang kết ứng dụng Web, chạy lại chƣơng trình kiểm thử năm ca kiểm thử thành cơng Từ thấy đƣợc tính đắn chƣơng trình tự động kiểm thử 45 CHƢƠNG KẾT LUẬN Một hoạt động công ty việc đảm bảo chất lƣợng phần mềm kiểm thử giao diện ứng dụng Tuy nhiên, kiểm thử phần mềm nói chung kiểm thử giao diện nói riêng đƣợc biết đến nhƣ pha quan trọng nhất, tốn mắt xích yếu quy trình phát triển phần mềm Giải pháp phổ biến để giải vấn đề áp dụng phƣơng pháp kiểm thử tự động Các phƣơng pháp gồm hai pha chính: (i) sinh ca kiểm thử (ii) thực thi chúng nhằm phát lỗi/khiếm khuyết sản phẩm Những phƣơng pháp hứa hẹn hiệu việc đảm bảo chất lƣợng sản phẩm với thời gian nhanh chi phí thấp khả phát lỗi/khiếm khuyết tốt Tuy nhiên, phƣơng pháp kiểm thử tự động đƣợc áp dụng để kiểm thử mô-đun chƣơng trình Làm để kiểm thử tự động cho giao diện ngƣời dùng tốn mở chƣa có giải pháp thỏa đáng Luận văn nghiên cứu đƣợc phƣơng pháp kiểm thử, kiểm thử tự động, kiểm thử dựa mô hình cơng cụ hỗ trợ Tạo ca kiểm thử tự động cho trình kiểm thử giao diện ứng dụng Web cách sử dụng phƣơng pháp tiếp cận dựa mơ hình sử dụng máy hữu hạn trạng thái Luận văn xây dựng đƣợc mơ hình bảng chuyển ứng dụng Web Từ đó, xây dựng đƣợc máy hữu hạn trạng thái, sau áp dụng thuật tốn duyệt theo chiều sâu để từ máy hữu hạn trạng thái sinh đƣờng kiểm thử chƣơng trình dùng cơng cụ Selenium Webdriver để chạy đƣợc đƣờng kiểm thử Tiến hành cài đặt áp dụng cho số ứng dụng Web nhằm đánh giá tính thực tế hiệu phƣơng pháp nghiên cứu Nội dung luận văn nêu lên đƣợc nội dung kiểm thử kiểm thử giao diện ứng dụng Web Xây dựng thành công chƣơng trình kiểm thử tự động giao diện ứng dụng Web nhiên, chƣơng trình áp dụng đƣợc vào ứng dụng Web đơn giản với giao diện không nhiều thành phần phức tạp Thực tế ứng dụng Web thƣờng phức tạp, trang có trạng thái chuyển đến trạng thái khác trang đến trạng thái khác ngồi trang tùy thuộc vào vai trị ngƣời dùng Vì hƣớng nghiên cứu tơi tối ƣu hóa chƣơng trình xây dựng đƣợc thêm chức kiểm thử tự động ứng dụng Web có thành phần phức tạp Thêm nữa, với thuật toán quay lui duyệt đồ thị theo chiều sâu chƣa thực tối ƣu cải thiện thuật tốn tốt để tăng hiệu chƣơng trình Chƣơng trình chạy đƣợc thực việc kiểm thử cho trang, hƣớng nghiên cứu nghiên cứu để kiểm thử cho toàn ứng dụng Web cách ghép 46 ôtômat trang riêng rẽ lại với dùng trạng thái kết thúc ôtômat trạng thái ban đầu trang Mặt khác dùng phƣơng pháp để sử dụng cho phƣơng pháp kiểm thử khác nhƣ kiểm thử chịu tải, kiểm thử an ninh an toàn,… 47 PHỤ LỤC Lớp HTML element: Lớp miêu tả phần tử HTML với thuộc tính nhƣ ID, HTML_ID, kiểu phần tử HTML, giá trị phần tử HTML public class Element_html { private int id; private String html_id; private String type; private ArrayList values; public Element_html(int _id, String _html_id, String _type, ArrayList _values){ id=_id; html_id=_html_id; type=_type; values = _values; } public int getId(){ return id; } public String getHtml_id(){ return html_id; } public String getType(){ return type; } public String getValueAt(int i){ return values.get(i); } } Lớp danh sách phần tử html: Lớp miêu tả danh sách phần tử HTML public class Elem_html_list { 48 ArrayList arrElement; public Elem_html_list(){ arrElement = new ArrayList(); } public void addElement(Element_html _e) { arrElement.add(_e); } public Element_html getElementById(int id){ for (int i=0; i