ĐẠI HỌC THÀNH ĐÔ KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề tài KIỂM THỬ ỨNG DỤNG WEB VỚI PHẦN MỀM SELENIUM Họ và tên Lớp Ngành Thời gian thực tập Giảng viên hướng dẫn HÀ NỘI 12/2016 MỤC[.]
ĐẠI HỌC THÀNH ĐÔ KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề tài: KIỂM THỬ ỨNG DỤNG WEB VỚI PHẦN MỀM SELENIUM Họ tên: Lớp: Ngành: Thời gian thực tập: Giảng viên hướng dẫn: HÀ NỘI 12/2016 MỤC LỤC LỜI MỞ ĐẦU CHƯƠNG I: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1.1 Khái niệm 1.2 Các cấp độ kiểm thử phần mềm 1.2.1 Kiểm thử đơn vị (Unit Test) 1.2.2 Kiểm thử tích hợp (Integration Test) 1.2.3 Kiểm thử hệ thống (System Test) 1.2.4 Kiểm thử chấp nhận sản phẩm (Acceptance Test) 1.3 Kỹ thuật kiểm thử phần mềm 1.3.1 Kỹ thuật kiểm thử hộp đen (Black – box Testing) 1.3.2 Kỹ thuật kiểm thử hộp trắng (White – box Testing) 10 1.3.2.1 Kiểm thử đường dẫn sở 10 CHƯƠNG 2: CÔNG CỤ KIỂM THỬ TỰ ĐỘNG SELENIUM .11 2.1 Tổng quan Selenium .11 2.1.1 Selenium gì? .11 2.1.2 Các thành phần Selenium 11 2.2 Selenium IDE 12 2.2.1 Cài đặt Selenium IDE 13 2.2.2 Các icon Selenium IDE 14 2.2.3 Các thao tác thực kiểm thử tự động với Selenium .16 2.2.3.1 Recording_Thực thu kịch với Selenium IDE 16 2.2.3.2 Thêm lệnh khẳng định xác nhận với menu ngữ cảnh 18 2.2.3.3 Các thao tác chỉnh sửa .18 2.2.3.4 Mở lưu lại test case 19 2.2.3.5 Chạy test case 19 CHƯƠNG 3: KẾT QUẢ KIỂM THỬ .21 3.1 Bài toán thử nghiệm 21 3.2 Sự khác kịch kiểm thử tự động kịch kiểm thử thủ công 21 3.3 Kịch kiểm thử thủ công 22 3.3.1 Chức đăng nhập 22 3.3.2 Chức kiểm tra thứ hạng từ khóa 23 3.4 Kịch kiểm thử tự động 23 3.5 Kết thử nghiệm .28 3.5.1 Chức đăng nhập 28 3.5.2 Chức check thứ hạng từ khóa 29 KẾT LUẬN 30 TÀI LIỆU THAM KHẢO 31 LỜI MỞ ĐẦU Kiểm thử phần mềm hoạt động giữ vai trò quan trọng để bảo đảm chất lượng phần mềm hoạt động mang tính sống cịn dự án sản xuất gia công phần mềm Vì vậy, kiểm thử phần mềm trở thành qui trình bắt buộc dự án phát triển phần mềm giới Ở Việt Nam, ngành công nghiệp phần mềm phát triển khơng thể xem nhẹ việc kiểm thử phần mềm xác suất thất bại cao, nữa, hầu hết công ty phần mềm có uy tín đặt u cầu nghiêm ngặt phần mềm khơng có tài liệu kiểm thử kèm khơng chấp nhận Tuy nhiên, hoạt động kiểm thử thường gặp nhiều khó khăn: Thứ nhất, kiểm thử hệ thống phức tạp đòi hỏi nhiều nguồn tài nguyên chi phí cao Thứ hai, tiến trình phát triển phần mềm trải qua nhiều hoạt động biến đổi thông tin, mát thông tin trình biến đổi yếu tố làm cho hoạt động kiểm thử khó khăn Thứ ba, kiểm thử chưa trọng đào tạo người Cuối cùng, không tồn kỹ thuật kiểm thử cho phép khẳng định phần mềm hoàn toàn đắn hay khơng chứa lỗi Với mục đích phát lỗi, kiểm thử phần mềm thường phải trải qua bước: tạo liệu thử, thực thi phần mềm liệu thử quan sát kết nhận Trong bước này, bước tạo liệu đóng vai trị quan trọng nhất, khơng thể tạo liệu từ miền vào chương trình, mà tạo liệu thử có khả phát lỗi cao Vấn đề đặt làm để đánh giá khả phát lỗi liệu thử? Một kinh nghiệm để giúp giải vấn đề này, sử dụng khái niệm chất lượng liệu thử phương tiện để đánh giá liệu thử “tốt” kiểm thử chương trình Ở đây, “tốt” đánh giá liên quan đến tiêu chuẩn chất lượng định trước, thường số dấu hiệu bao phủ chương trình Ví dụ, tiêu chuẩn bao phủ dịng lệnh đòi hỏi liệu thử thực dịng lệnh chương trình lần Nếu liệu thử tìm thấy khơng chất lượng liên quan đến tiêu chuẩn (tức tất câu lệnh thực lần), kiểm thử bắt buộc Do đó, mục tiêu tạo tập kiểm thử thực đầy đủ tiêu chuẩn chất lượng Tiêu chuẩn chất lượng tiêu biểu bao phủ câu lệnh kiểm thử định (thực tất đường dẫn sai qua chương trình) dựa vào việc thực chương trình với số lượng kiểm thử tăng dần để nâng cao độ tin cậy chương trình Tuy nhiên, chúng khơng tập trung vào nguyên nhân thất bại chương trình gọi lỗi Kiểm thử đột biến tiêu chuẩn Tiêu chuẩn tạo phiên chương trình có chứa lỗi đơn giản sau tìm kiểm thử để dấu hiệu lỗi Nếu tìm thấy liệu thử chất lượng làm lộ dấu hiệu tất phiên bị lỗi, tin tưởng vào tính đắn chương trình tăng Kiểm thử đột biến áp dụng cho nhiều ngơn ngữ lập trình kỹ thuật kiểm thử hộp trắng CHƯƠNG I: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1.1 Khái niệm Kiểm thử phần mềm trình thực thi hệ thống phần mềm để xác định xem phần mềm có với đặc tả khơng thực mơi trường mong đợi hay khơng Mục đích kiểm thử phần mềm tìm lỗi chưa phát hiện, tìm cách sớm bảo đảm lỗi sửa Mục tiêu kiểm thử phần mềm thiết kế tài liệu kiểm thử cách có hệ thống thực cho có hiệu quả, tiết kiệm thời gian, cơng sức chi phí 1.2 Các cấp độ kiểm thử phần mềm Cấp độ kiểm thử phần mềm thể hình 1.1 [25]: Kiểm thử mức đơn vị lập trình (Unit test) Các phận đơn lẻ Kiểm thử mức tích hợp đơn vị (Integration test) Các nhóm phận Kiểm thử mức hệ thống, sau tích hợp (System test) Kiểm thử để chấp nhận sản phẩm (Acceptance test) Toàn hệ thống Toàn hệ thống nhìn từ khách hàng Hình 1.1- Bốn cấp độ kiểm thử phần mềm 1.2.1 Kiểm thử đơn vị (Unit Test) Một đơn vị (Unit) thành phần phần mềm nhỏ mà ta kiểm thử được, ví dụ: hàm (Function), thủ tục (Procedure), lớp (Class), phương thức (Method) Kiểm thử đơn vị thường lập trình viên thực Công đoạn cần thực sớm tốt giai đoạn viết code xuyên suốt chu kỳ phát triển phần mềm Mục đích kiểm thử đơn vị bảo đảm thông tin xử lý kết xuất (khỏi Unit) xác, mối tương quan với liệu nhập chức xử lý Unit Điều thường đòi hỏi tất nhánh bên Unit phải kiểm tra để phát nhánh phát sinh lỗi Cũng mức kiểm thử khác, kiểm thử đơn vị đòi hỏi phải chuẩn bị trước ca kiểm thử (hay trường hợp kiểm thử) (test case) kịch (test script), định rõ liệu vào, bước thực liệu mong muốn xuất Các test case test script giữ lại để sử dụng sau 1.2.2 Kiểm thử tích hợp (Integration Test) Kiểm thử tích hợp kết hợp thành phần ứng dụng kiểm thử ứng dụng hoàn thành Trong kiểm thử đơn vị kiểm tra thành phần Unit riêng lẻ kiểm thử tích hợp kết hợp chúng lại với kiểm tra giao tiếp chúng Kiểm thử tích hợp có hai mục tiêu là: Phát lỗi giao tiếp xảy Unit Tích hợp Unit đơn lẻ thành hệ thống (gọi subsystem) cuối nguyên hệ thống hoàn chỉnh chuẩn bị cho kiểm thử mức hệ thống (system test) Có loại kiểm thử kiểm thử tích hợp sau: Kiểm thử cấu trúc (Structure test): Kiểm thử nhằm bảo đảm thành phần bên chương trình chạy đúng, trọng đến hoạt động thành phần cấu trúc nội chương trình, chẳng hạn lệnh nhánh bên Kiểm thử chức (Functional test): Kiểm thử trọng đến chức chương trình, khơng quan tâm đến cấu trúc bên trong, khảo sát chức chương trình theo yêu cầu kỹ thuật Kiểm thử hiệu (Performance test): Kiểm thử việc vận hành hệ thống Kiểm thử khả chịu tải (Stress test): Kiểm thử giới hạn hệ thống 1.2.3 Kiểm thử hệ thống (System Test) Mục đích kiểm thử hệ thống kiểm thử xem thiết kế toàn hệ thống (sau tích hợp) có thỏa mãn u cầu đặt hay không Kiểm thử hệ thống kiểm tra hành vi chức phần mềm lẫn yêu cầu chất lượng độ tin cậy, tính tiện lợi sử dụng, hiệu bảo mật Kiểm thử hệ thống bắt đầu tất phận phần mềm tích hợp thành công Thông thường loại kiểm thử tốn nhiều công sức thời gian Trong nhiều trường hợp, việc kiểm thử đòi hỏi số thiết bị phụ trợ, phần mềm phần cứng đặc thù, đặc biệt ứng dụng thời gian thực, hệ thống phân bố, hệ thống nhúng Ở mức độ hệ thống, người kiểm thử tìm kiếm lỗi, trọng tâm đánh giá hoạt động, thao tác, tin cậy yêu cầu khác liên quan đến chất lượng toàn hệ thống Điểm khác then chốt kiểm thử tích hợp kiểm thử hệ thống kiểm thử hệ thống trọng hành vi lỗi tồn hệ thống, cịn kiểm thử tích hợp trọng giao tiếp đơn thể đối tượng chúng làm việc Thông thường ta phải thực kiểm thử đơn vị kiểm thử tích hợp để bảo đảm Unit tương tác chúng hoạt động xác trước thực kiểm thử hệ thống Sau hồn thành kiểm thử tích hợp, hệ thống phần mềm hình thành với thành phần kiểm tra đầy đủ Tại thời điểm này, lập trình viên kiểm thử viên (Tester) bắt đầu kiểm thử phần mềm hệ thống hoàn chỉnh Việc lập kế hoạch cho kiểm thử hệ thống nên giai đoạn hình thành phân tích u cầu Địi hỏi nhiều cơng sức, thời gian tính xác, khách quan, kiểm thử hệ thống thực nhóm kiểm tra viên hồn tồn độc lập với nhóm phát triển dự án để đảm bảo tính xác khách quan Kiểm thử hệ thống thường có loại kiểm thử sau: Kiểm thử chức (Functional test): Bảo đảm hành vi hệ thống thỏa mãn yêu cầu thiết kế Kiểm thử khả vận hành (Performance test): Bảo đảm tối ưu việc phân bổ tài nguyên hệ thống (ví dụ nhớ) nhằm đạt tiêu thời gian xử lý hay đáp ứng câu truy vấn, Kiểm thử khả chịu tải (Stress test hay Load test): Bảo đảm hệ thống vận hành áp lực cao (ví dụ nhiều người truy xuất lúc) Stress test tập trung vào trạng thái tới hạn, "điểm chết", tình bất thường giao dịch ngắt kết nối (xuất nhiều test thiết bị POS, ATM), Kiểm thử cấu hình (Configuration test): Đảm bảo hệ thống hoạt động tương thích với loại phần cứng khác Kiểm thử khả bảo mật (Security test): Bảo đảm tính tồn vẹn, bảo mật liệu hệ thống Kiểm thử khả phục hồi (Recovery test): Bảo đảm hệ thống có khả khơi phục trạng thái ổn định trước tình tài nguyên liệu; đặc biệt quan trọng hệ thống giao dịch ngân hàng trực tuyến 1.2.4 Kiểm thử chấp nhận sản phẩm (Acceptance Test) Mục đích kiểm thử chấp nhận kiểm thử khả chấp nhận cuối để chắn sản phẩm phù hợp thỏa mãn yêu cầu khách hàng khách hàng chấp nhận sản phẩm Trong giai đoạn kiểm thử chấp nhận người kiểm tra khách hàng Khách hàng đánh giá phần mềm với mong đợi theo thao tác sử dụng quen thuộc họ Việc kiểm tra giai đoạn có ý nghĩa quan trọng tránh cho việc hiểu sai yêu cầu mong đợi khách hàng Gắn liền với giai đoạn kiểm thử chấp nhận thường nhóm dịch vụ tài liệu kèm, phổ biến hướng dẫn cài đặt, sử dụng, v.v…Tất tài liệu kèm phải cập nhật kiểm tra chặt chẽ 1.3 Kỹ thuật kiểm thử phần mềm Mục tiêu kiểm thử phải thiết kế trường hợp kiểm thử có khả cao việc phát nhiều lỗi với thời gian công sức tối thiểu Do chia kỹ thuật kiểm thử thành hai loại: Kỹ thuật kiểm thử hộp đen (Black – box Testing) hay gọi kỹ thuật kiểm thử chức (Functional Testing) Kỹ thuật kiểm thử hộp trắng (White – box Testing) hay gọi kỹ thuật kiểm thử cấu trúc (Structural Testing) 1.3.1 Kỹ thuật kiểm thử hộp đen (Black – box Testing) Kiểm thử hộp đen gọi kiểm thử hướng liệu (data - driven) kiểm thử hướng vào/ra (input/output driven) Trong kỹ thuật này, người kiểm thử xem phần mềm hộp đen Người kiểm thử hồn tồn khơng quan tâm đến cấu trúc hành vi bên chương trình Người kiểm thử cần quan tâm đến việc tìm tượng mà phần mềm không hành xử theo đặc tả Do đó, liệu kiểm thử xuất phát từ đặc tả Như vậy, cách tiếp cận kiểm thử hộp đen tập trung vào yêu cầu chức phần mềm Kiểm thử hộp đen cho phép người kiểm thử xây dựng nhóm giá trị đầu vào thực thi đầy đủ tất yêu cầu chức chương trình Kiểm thử hộp đen không thay kỹ thuật kiểm thử hộp trắng, bổ sung khả phát lớp lỗi khác với phương pháp hộp trắng Kiểm thử hộp đen cố gắng tìm loại lỗi sau: Các chức thiếu không Các lỗi giao diện Các lỗi cấu trúc liệu truy cập sở liệu bên Các lỗi thực Các lỗi khởi tạo kết thúc Và lỗi khác Không giống với kiểm thử hộp trắng thực sớm trình kiểm thử, kiểm thử hộp đen áp dụng giai đoạn sau kiểm thử Vì kiểm thử hộp đen khơng để ý có chủ đích cấu trúc điều khiển, quan tâm tập trung miền thông tin Nếu người kiểm thử muốn sử dụng phương pháp để tìm tất lỗi chương trình điều kiện bắt buộc phải kiểm thử tất đầu vào, tức Nút thu mặc định trạng thái "now recording, click to stop recording" Hình 2.6: Thực thu trường hợp kiểm thử_2 - Bước 3: Tiến hành thao tác cần kiểm thử link Ví dụ: Ta thực kiểm thử tự động trường hợp đăng nhập vào trang web thành công với username/password hợp lệ Trong trình thu, Selenium IDE tự động chèn thêm lệnh vào test case dựa hành động người thực Các command tự động thêm phổ biến: o Click a link- click or clickAndWait commands o Nhập giá trị- type command o Chọn giá trị từ select box - select command o Click vào checkboxe radio button - click command - Bước 4: Click vào nút thu Nút thu trạng thái "Click to record" - Bước 5: Save as test case - Một số lưu ý: Sau liên kết thường ghi lại lệnh nhấp chuột, phải thay đổi tốc độ chạy test case để đảm bảo test case tạm dừng trang 17 tải xong Nếu không, test case tiếp tục chạy trước trang nạp tất yếu tố Điều gây test case bị thất bại 2.2.3.2 Thêm lệnh khẳng định xác nhận với menu ngữ cảnh Các trường hợp kiểm kiểm thử thuộc tính trang web đòi hỏi lệnh xác minh (verify) khẳng định (assert) yếu tố giao diện Phần trình bày cách thêm lệnh vào test case Khi thu test case với Selenium IDE, vào trình duyệt hiển thị website ta muốn thực kiểm thử, trỏ truột phải vào vị trí trang, ta thấy lệnh xác minh khẳng định hình Để sử dụng lệnh ta việc chọn lệnh xác minh khẳng định mong muốn Các lệnh tự động hiển thị test case Selenium dự đốn lệnh, thơng số cần có giao diện để bổ xung lệnh xác minh Khi chọn thông báo Show All Avaiable Commands, có nhiều lệnh xác minh gợi ý Hình 2.7: Lệnh xác minh (verify) yếu tố trang web 2.2.3.3 - Các thao tác chỉnh sửa Chèn lệnh: Chèn vào bảng: Trong ô test case, click chuột trái vị trí muốn chèn lệnh Chuột phải chọn Insert command Selenium IDE thêm dòng trắng phía trước dịng chọn Nhập lệnh vào command, kết mong muốn vào 18 ô target, giá trị đầu vào vào ô value Chèn vào mã nguồn: Chọn vị trí test case mà bạn muốn chèn lệnh Trong test case, chuột trái vào vị trí muốn chèn lệnh Vào tag HTML, cần tạo dòng chứa lệnh bao gồm tham số (nếu lệnh yêu cầu có tham số), tham số thứ hai (nếu có) Lưu test case trước chọn lại table view - Chèn comment: Các comment thêm vào cho test case dễ hiểu Những comment bỏ qua chạy test case Comment sử dụng để thêm vào khoảng trống dọc (một nhiều dòng trắng) vào test case chúng ta, tạo comment trắng Một lệnh trắng tạo lỗi thực thi comment trắng khơng tạo lỗi thực thi Chèn vào bảng: Chọn vị trí test case muốn comment Click chuột phải chọn Insert Comment Sử dụng trường Command để nhập comment Chèn vào mã nguồn: Chọn vị trí test case muốn chèn comment Thêm comment có dạng HTML Ví dụ: - Chỉnh sửa comment hay lệnh: Chỉnh sửa qua giao diện: Chọn dịng cần chỉnh sửa chỉnh sửa trường Command, Target, Value Chỉnh sửa qua mã nguồn: Vào mã nguồn, chỉnh sửa trực tiếp vào dòng comment hay lệnh muốn chỉnh sửa 2.2.3.4 - Mở lưu lại test case Chọn tập tin/ Open Save Tuy nhiên Selenium có khác biệt test case test suite Để lưu lại bước kiểm thử Selenium- IDE sau sử dụng, bạn lưu lại test case riêng lẻ, hay lưu nhiều test case dạng test suite Nếu test case test suite không lưu Chương trình nhắc nhở ta lưu chúng trước lưu test suite Khi mở test case test suite có, Selenium-IDE hiển thị câu lệnh ô test case 2.2.3.5 Chạy test case Selenium IDE có nhiều lựa chọn để chạy test case Bạn chạy test case, dừng chạy tiếp, chạy dòng lệnh riêng lẻ, hay chạy test suite - Chạy test case: Chọn test case sau click vào nút Run để chạy test case 19