NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ TỰ ĐỘNG ỨNG DỤNG WEB

95 237 1
NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ TỰ ĐỘNG ỨNG DỤNG WEB

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

WebdriverIO là một tiện ích kiểm thử tự động cho các ứng dụng Web, có thể kiểm thử trên nhiều trình duyệt, hỗ trợ nhiều ngôn ngữ lập trình, giao tiếp được với các công cụ kiểm thử khác và đặc biệt công cụ này là một bộ mã nguồn mở

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI KHOA ĐIỆN - ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ - - ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ ỨNG DỤNG WEB Giảng viên hướng dẫn: PGS ĐÀO THANH TOẢN Sinh viên thực hiện: Mã sinh viên: Lớp: Khóa: TẠ HỮU ĐỨC 171502856 Kỹ thuật điện tử & Tin học công nghiệp K58 Hà Nội – 2022 TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI KHOA ĐIỆN - ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ - - ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ ỨNG DỤNG WEB Giảng viên hướng dẫn: PGS ĐÀO THANH TOẢN Sinh viên thực hiện: Mã sinh viên: Lớp: Khóa: TẠ HỮU ĐỨC 171502856 Kỹ thuật điện tử & Tin học công nghiệp K58 Hà Nội – 2022 Đồ án tốt nghiệp BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC GTVT Độc lập- Tự do- Hạnh phúc NHIỆM VỤ THIẾT KẾ TỐT NGHIỆP BỘ MÔN: KỸ THUẬT ĐIỆN TỬ KHOA: ĐIỆN- ĐIỆN TỬ Sinh viên: TẠ HỮU ĐỨC Tên tóm tắt yêu cầu, nội dung đề tài: Nghiên cứu WebdriverIO áp dụng cho kiểm thử ứng dụng web Số liệu cần thiết chủ yếu để thiết kế: - Cách dùng Client API để tương tác với Web Element Automation Test - Cách tổ chức Page Object, Test Verification, Test Script - Tài liệu phân tích web siêu thị bán hoa trực tuyến, test case cho chức web Nội dung thuyết minh, yêu cầu giải thích tính tốn thiết kế TN: - Chương 1: Tổng quan kiểm thử phần mềm WebDriverIO - Chương 2: Phân tích web siêu thị bán hoa online - Chương 3: Ứng dụng WebdriverIO kiểm thử siêu thị bán hoa online - Chương 4: Thực nghiệm đánh giá kết SVTH: Tạ Hữu Đức Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp Những yêu cầu bổ sung thêm nhiệm vụ thiết kế TN chuyên đề - - - - - - - - - - - Cán hướng dẫn: - Giáo viên trường: PGS.TS ĐÀO THANH TOẢN - Cán sản xuất: Ngày giao nhiệm vụ thiết kế tốt nghiệp: Ngày nộp thiết kế tốt nghiệp: Ngày tháng T/L HIỆU TRƯỞNG /11/2021 10/01/2022 năm 2021 Đã giao nhiệm vụ TKTN TRƯỞNG BỘ MÔN GIÁO VIÊN HƯỚNG DẪN Nguyễn Thanh Hải Đào Thanh Toản TRƯỞNG KHOA Nguyễn Thanh Hải Đã nhận nhiệm vụ TKTN Tạ Hữu Đức Sinh viên: Lớp: SVTH: Tạ Hữu Đức Khóa: Kỹ thuật điện tử tin học công nghiệp 58 Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp LỜI CẢM ƠN Em xin chân thành gửi lời cảm ơn tới tồn thể q Thầy Cơ khoa Điện –Điện tử Trường Đại học Giao thông vận tải tận tình truyền đạt kiến thức quý báu tạo điều kiện thuận lợi cho em q trình học tập để em có kiến thức ngày hôm từ kiến thức tảng giúp em nhiều trình hồn thành đồ án tốt nghiệp Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc đến Thầy giáo PGS Đào Thanh Toản người hết lòng giúp đỡ, tạo điều kiện để em học tập, nghiên cứu khoa học hướng dẫn tận tình bảo để giúp em hồn thành đồ án tốt nghiệp Cuối cùng, Tôi xin cảm ơn đến gia đình, bạn bè anh chị công ty VTI động viên, ủng hộ giúp đỡ tơi suốt q trình học tập hoàn thành tốt nghiệp Hà Nội, ngày tháng năm 2022 Sinh viên Tạ Hữu Đức SVTH: Tạ Hữu Đức Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp LỜI NÓI ĐẦU Trong Các ứng dụng Web ngày phát triển mạnh mẽ nhằm dần trở thành tảng kết nối thông tin nhiều doanh nghiệp đóng vai trị định thương mại điện tử, trao đổi thông tin Để đưa ứng dụng Web với chất lượng tốt, có tính linh hoạt nhiều tảng khác (hệ điều hành, trình duyệt, ) cho nhiều đối tượng sử dụng trở thành thách thức việc phát triển đảm bảo chất lượng phần mềm Điều dẫn tới việc kiểm thử ứng dụng Web trở nên thiết yếu dự án phần mềm cần phải có phương pháp đặc biệt khác với phần mềm truyền thống Để tạo sản phẩm công nghệ thơng tin hay phần mềm có chất lượng cao hoạt động kiểm thử đóng vai trị quan trọng Tuy nhiên, kiểm thử thủ công lại chiếm đến 40% thời gian, kinh phí nguồn nhân lực phát triển dự án phần mềm Do vậy, hàng loạt công cụ hỗ trợ kiểm thử đơn vị (như TestNG, JUnit, NUnit, TagUnit, JBehave,…), kiểm thử chức (như Selenium, Quicktest professional, IBM Rational Functional tester,…), kiểm thử hiệu (như Jmeter, OpenSTA, Load runner, ) đời Trong đó, WebdriverIO tiện ích kiểm thử tự động cho ứng dụng Web, kiểm thử nhiều trình duyệt, hỗ trợ nhiều ngơn ngữ lập trình, giao tiếp với công cụ kiểm thử khác đặc biệt công cụ mã nguồn mở, tổ chức khơng cần tốn kinh phí mua quyền Từ vấn đề nêu phía em định chọn đề tài "NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ ỨNG DỤNG WEB" với mong muốn có nhìn thực tế, rõ ràng kiểm thử phần mềm tiếp cận với công cụ kiểm thử tự động WebdriverIO để làm tiền đề cho định hướng tương lai trở thành kỹ sư kiểm thử phần mềm SVTH: Tạ Hữu Đức Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp MỤC LỤC TRÍCH YẾU ĐỒ ÁN TỐT NGHIỆP LỜI CẢM ƠN PHẦN MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ WEBDRIVER IO 1.1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1.1.1 Khái niệm kiểm thử phần mềm 1.1.2 Các cấp độ kiểm thử phần mềm 1.2 KIỂM THỬ TỰ ĐỘNG 1.2.1 Khái niệm kiểm thử tự động 1.2.2 Quy trình kiểm thử tự động 1.2.3 So sánh kiểm thử tự động kiểm thử thủ công 1.2.4 Một số công cụ kiểm thử tự động phổ biến 1.3 CÔNG CỤ KIỂM THỬ TỰ ĐỘNG WEBDRIVERIO 1.3.1 Tổng quan WebdriverIO 1.3.2 Các câu lệnh thông dụng sử dụng WebdriverIO 11 1.4 KẾT LUẬN CHƯƠNG 14 CHƯƠNG 2: PHÂN TÍCH WEB SIÊU THỊ BÁN HOA ONLINE 14 2.1 XÁC ĐỊNH YÊU CẦU CỦA HỆ THỐNG 14 2.1.1 Xác định mô tả tác nhân 14 2.1.2 Biểu đồ ca sử dụng 15 2.1.3 Xây dựng kịch kiểm thử 16 2.2 PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CỦA TRANG WEB 23 2.2.1 Phân tích yêu cầu 23 2.2.2 Phân tích hệ thống 23 2.2.3 Sở đồ website 29 2.3 KẾT LUẬN CHƯƠNG 29 CHƯƠNG 3: ỨNG DỤNG WEBDRIVERIO TRONG KIỂM THỬ WEB SIÊU THỊ BÁN HOA ONLINE 30 3.1 THIẾT KẾ TEST CASE CHO CÁC CHỨC NĂNG CHÍNH 30 SVTH: Tạ Hữu Đức Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp 3.1.1 Chức đăng kí tài khoản 30 3.1.2 Chức thêm sản phẩm vào giỏ hàng 36 3.1.3 Chức chỉnh sửa giỏ hàng 38 3.1.4 Chức đặt hàng 41 3.2 PHƯƠNG HƯỚNG GIẢI QUYẾT VẤN ĐỀ VÀ THỰC THI KIỂM THỬ TỰ ĐỘNG 44 3.2.1 Yêu cầu công nghệ 44 3.2.2 Hướng thực thi kiểm thử tự động 44 3.2.3 Các bước thực kiểm thử tự động 47 3.2.4 Báo cáo phân tích lỗi 55 3.3 KẾT LUẬN CHƯƠNG 57 CHƯƠNG 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 57 4.1 GIỚI THIỆU VỀ WEB SIÊU THỊ BÁN HOA ONLINE 57 4.2 KIỂM THỬ TỰ ĐỘNG WEBSITE VỚI WEBDRIVERIO VÀ NODE.JS 58 4.2.1 Chức đăng kí tài khoản 58 4.2.2 Chức thêm sản phẩm vào giỏ hàng 77 4.2.3 Chức chỉnh sửa số lượng sản phẩm giỏ hàng 78 4.2.4 Chức đặt hàng 79 4.3 ĐÁNH GIÁ KẾT QUẢ KIỂM THỬ 80 4.4 KẾT LUẬN CHƯƠNG 81 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 81 PHỤ LỤC 82 TÀI LIỆU THAM KHẢO 82 SVTH: Tạ Hữu Đức Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp DANH MỤC CÁC HÌNH ẢNH Hình 1 Các cấp độ kiểm thử Hình Kiểm thử đơn vị Hình Kiểm thử tích hợp .4 Hình Kiểm thử hệ thống .5 Hình Kiểm thử chấp nhận Hình Biểu đồ ca sử dụng cho hệ thống trang dành cho người dùng 15 Hình 2 Sơ đồ thực thể 24 Hình Lược đồ sở liệu .25 Hình Sơ đồ web siêu thị bán hoa online 29 Hình Giao diện chức đăng ký tài khoản 30 Hình Giao diện chức thêm sản phẩm vào giỏ hàng 36 Hình 3 Chức chỉnh sửa giỏ hàng 38 Hình Giao diện chức đặt hàng 42 Hình Quá trình kiểm thử tự động .46 Hình Kết chạy test script hiển thị Allure Report 53 Hình Kết chạy test script hiển thị Allure Report 54 Hình Kết chạy test script trả dạng file Excel 54 Hình Nhập kết test script vào file Test Case tương ứng .55 Hình 10 Nhập kết test script vào file Test Case tương ứng 55 Hình 11 Allure Report đưa nguyên nhân dẫn đến Test Script bị fail .56 Hình Dữ liệu đầu vào cho chức đăng ký tài khoản 74 Hình Kết Test Script hiển thị Allure Report 75 Hình Kết Test Script hiển thị Allure Report 76 SVTH: Tạ Hữu Đức Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp 10 DANH MỤC CÁC BẢNG Bảng Kịch Use Case Đăng Nhập 16 Bảng 2 Kịch use case đăng ký tài khoản 16 Bảng Kịch use case tìm kiếm sản phẩm 17 Bảng Kịch use case xem thông tin sản phẩm từ form kết tìm kiếm .18 Bảng Kịch use case thêm sản phẩm vào giỏ hàng .19 Bảng Kịch use case chỉnh sửa số lượng sản phẩm giỏ hàng .20 Bảng Kịch use case xóa sản phẩm giỏ hàng 21 Bảng Kịch use case đặt hàng .22 Bảng Thông tin liệu phần tử bảng KHACH_HANG .26 Bảng 10 Thông tin liệu phần tử bảng ADM 26 Bảng 11 Thông tin liệu phần tử bảng LIEN_HE .26 Bảng 12 Thông tin liệu phần tử bảng TIN_TUC 27 Bảng 13 Thông tin liệu phần tử bảng LOAI_HOA 27 Bảng 14 Thông tin liệu phần tử bảng HOA 27 Bảng 15 Thông tin liệu phần tử bảng DONDATHANG 28 Bảng 16 Thông tin liệu phần tử bảng CT_DONDATHANG 28 Bảng Mô tả yêu cầu chức đăng ký 31 Bảng Các trường hợp kiểm tra chức đăng ký 33 Bảng 3 Các trường hợp kiểm tra chức thêm sản phẩm vào giỏ hàng 37 Bảng Mô tả yêu cầu chức chỉnh sửa giỏ hàng 39 Bảng Các trường hợp kiểm tra chức chỉnh sửa giỏ hàng 40 Bảng Mô tả yêu cầu chức đặt hàng 43 Bảng Các trường hợp test chức đặt hàng 43 Bảng Ví dụ file js chứa phương thức dùng chung cho object page 48 Bảng Ví dụ file page_object.js chứa element sử dụng cho chức chỉnh sửa giỏ hàng 49 Bảng 10 Ví dụ Test Script cho chức chỉnh sửa số lượng sản phẩm 50 Bảng 11 Ví dụ file json chứa input data cho chức chỉnh sửa số lượng 51 Bảng 12 Test Script chỉnh sửa sau nhận input data từ file json .52 SVTH: Tạ Hữu Đức Lớp: Kĩ thuật điện tử & tin học công nghiệp K58 Đồ án tốt nghiệp 69 await Register.inputSDT(TestRegister.RGC13.sdt); await Register.inputEmailRegister(TestRegister.RGC13.email); await Register.inputDiachi(TestRegister.RGC13.dia_chi); await Register.inputCodeRegister(); await browser.pause(15000); await Register.onClickRegisterBtn(); let validateRGc13= await $(thanhcong).getText(); await expect(validateRGc13).to.equal(TestRegister.RGC13.thanhcong); }) //Tên đăng nhập chứa khoảng trằng it('RGC14', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC14.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC14.mat_khau); await Register.inputHoRegister(TestRegister.RGC14.ho_kh); await Register.inputTenRegister(TestRegister.RGC14.ten_kh); await Register.inputSDT(TestRegister.RGC14.sdt); await Register.inputEmailRegister(TestRegister.RGC14.email); await Register.inputDiachi(TestRegister.RGC14.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc014 = await $(errorUsername).getText(); await expect(errorRGc014).to.equal(TestRegister.RGC14.error); }) //Tên đăng nhập chứa kí tự đặc biệt it('RGC15', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC15.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC15.mat_khau); await Register.inputHoRegister(TestRegister.RGC15.ho_kh); await Register.inputTenRegister(TestRegister.RGC15.ten_kh); SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 70 await Register.inputSDT(TestRegister.RGC15.sdt); await Register.inputEmailRegister(TestRegister.RGC15.email); await Register.inputDiachi(TestRegister.RGC15.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc015 = await $(errorUsername).getText(); await expect(errorRGc015).to.equal(TestRegister.RGC15.error); }) //Tên đăng nhập chứa tiếng việt có dấu it('RGC16', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC16.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC16.mat_khau); await Register.inputHoRegister(TestRegister.RGC16.ho_kh); await Register.inputTenRegister(TestRegister.RGC16.ten_kh); await Register.inputSDT(TestRegister.RGC16.sdt); await Register.inputEmailRegister(TestRegister.RGC16.email); await Register.inputDiachi(TestRegister.RGC16.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc016 = await $(errorUsername).getText(); await expect(errorRGc016).to.equal(TestRegister.RGC16.error); }) //Tài khoản tồn sở liệu it('RGC17', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC17.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC17.mat_khau); await Register.inputHoRegister(TestRegister.RGC17.ho_kh); await Register.inputTenRegister(TestRegister.RGC17.ten_kh); SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 71 await Register.inputSDT(TestRegister.RGC17.sdt); await Register.inputEmailRegister(TestRegister.RGC17.email); await Register.inputDiachi(TestRegister.RGC17.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc017 = await $(errorUsername).getText(); await expect(errorRGc017).to.not.equal(TestRegister.RGC17.error); }) //Tên đăng nhập kí tự it('RGC18', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC18.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC18.mat_khau); await Register.inputHoRegister(TestRegister.RGC18.ho_kh); await Register.inputTenRegister(TestRegister.RGC18.ten_kh); await Register.inputSDT(TestRegister.RGC18.sdt); await Register.inputEmailRegister(TestRegister.RGC18.email); await Register.inputDiachi(TestRegister.RGC18.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc018 = await $(errorUsername).getText(); await expect(errorRGc018).to.equal(TestRegister.RGC18.error); }) //Tên đăng nhập chứa 31 kí tự it('RGC19', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC19.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC19.mat_khau); await Register.inputHoRegister(TestRegister.RGC19.ho_kh); await Register.inputTenRegister(TestRegister.RGC19.ten_kh); SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 72 await Register.inputSDT(TestRegister.RGC19.sdt); await Register.inputEmailRegister(TestRegister.RGC19.email); await Register.inputDiachi(TestRegister.RGC19.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc019 = await $(errorUsername).getText(); await expect(errorRGc019).to.equal(TestRegister.RGC19.error); }) //Check độ dài mật kí tự (4 kí tự) it('RGC20', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC20.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC20.mat_khau); await Register.inputHoRegister(TestRegister.RGC20.ho_kh); await Register.inputTenRegister(TestRegister.RGC20.ten_kh); await Register.inputSDT(TestRegister.RGC20.sdt); await Register.inputEmailRegister(TestRegister.RGC20.email); await Register.inputDiachi(TestRegister.RGC20.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc20 = await $(errorPassword).getText(); await expect(errorRGc20).to.equal(TestRegister.RGC20.error); }) //Check độ dài mật chứa 31 kí tự it('RGC21', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC21.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC21.mat_khau); await Register.inputHoRegister(TestRegister.RGC21.ho_kh); await Register.inputTenRegister(TestRegister.RGC21.ten_kh); SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 73 await Register.inputSDT(TestRegister.RGC21.sdt); await Register.inputEmailRegister(TestRegister.RGC21.email); await Register.inputDiachi(TestRegister.RGC21.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc21 = await $(errorPassword).getText(); await expect(errorRGc21).to.equal(TestRegister.RGC21.error); }) //Check số điện thoại chứa 12 kí tự it('RGC22', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC22.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC22.mat_khau); await Register.inputHoRegister(TestRegister.RGC22.ho_kh); await Register.inputTenRegister(TestRegister.RGC22.ten_kh); await Register.inputSDT(TestRegister.RGC22.sdt); await Register.inputEmailRegister(TestRegister.RGC22.email); await Register.inputDiachi(TestRegister.RGC22.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc22 = await $(errorSDT).getText(); await expect(errorRGc22).to.equal(TestRegister.RGC22.error); }) //Check số điện thoại có chứa số âm it('RGC23', async()=>{ await Register.inputUsernameRegister(TestRegister.RGC23.ten_dn); await Register.inputPasswordRegister(TestRegister.RGC23.mat_khau); await Register.inputHoRegister(TestRegister.RGC23.ho_kh); await Register.inputTenRegister(TestRegister.RGC23.ten_kh); SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 74 await Register.inputSDT(TestRegister.RGC23.sdt); await Register.inputEmailRegister(TestRegister.RGC23.email); await Register.inputDiachi(TestRegister.RGC23.dia_chi); await Register.inputCodeRegister(); await browser.pause(10000); await Register.onClickRegisterBtn(); let errorRGc23 = await $(errorSDT).getText(); await expect(errorRGc23).to.equal(TestRegister.RGC23.error); }) }) Bảng Tạo file chứa test script để kiểm tra tính chức đăng ký tài khoản Trong đó, tất giá trị nhập giá trị nhập vào: Tên Đăng Nhập, Mật Khẩu, Họ, Tên thể dạng tham số để truyền liệu đầu vào khác mà không cần thay đổi mã code Trong file Test Script có sử dụng thư viện “Chai Assertion Library” dùng để thực việc test verification nội dung thơng báo lỗi xác u cầu đặc tả ❖ File Excel mô tả liệu đầu vào cho chức đăng ký tài khoản: Hình Dữ liệu đầu vào cho chức đăng ký tài khoản SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 75 Trong đó: • Ten_dn, mat_khau, ho_kn, ten_kh, sdt, email, dia_chi, gioi_tinh_ID Field name liên quan đến thông tin người dùng (được viết theo Bảng 2.9 Thông tin liệu phần tử bảng KHACH_HANG) • TCID Test Case ID ❖ Kết test script hiển thị “Allure Report” Hình Kết Test Script hiển thị Allure Report SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 76 Hình Kết Test Script hiển thị Allure Report ❖ Kết kiểm thử chức đăng ký tài khoản sử dụng test tựu động Bảng Kết kiểm thử chức đăng ký tài khoản Số lượng test case 23 Số lượng test case pass 15 Số test case Failure Số test case Error Số test case chưa thực Tỉ lệ thành cơng 65,21% Nhận xét: • Tính khả dụng o Giao diện đơn giản, dễ sử dụng, chức phím tab, enter hoạt động tốt o Khơng có lỗi tả, khơng khó để đọc chữ, hình ảnh xếp gọn gàng, hợp lý SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 77 o Giao diện có đầy đủ có menu menu quán với giao diện chức khác hệ thống • Lỗi giao diện: o Xuất lỗi hiển thị mã HTLM textbox khiến cho việc đăng ký tài khoản trở nên khó khăn thời gian • Lỗi chức năng: o Các textbox [Tên Đăng Nhập], [Mật Khẩu] cho người dùng nhập tối đa 15 kí tự thay 30 kí tự (xem bảng Bảng 2.9 Thông tin liệu phần tử bảng KHACH_HANG) o [Họ], [Tên], [Email], [Địa Chỉ Nhà] khơng giới hạn kí tự thêm vào 4.2.2 Chức thêm sản phẩm vào giỏ hàng ❖ Kết kiểm thử chức thêm sản phẩm vào giỏ hàng sử dụng phương pháp test tự động Bảng Kết kiểm thử chức thêm sản phẩm vào giỏ hàng Số lượng test case 24 Số lượng test case pass 24 Số test case Failure Số test case Error Số test case chưa thực Tỉ lệ thành cơng 100% ❖ Nhận xét: • Tính khả dụng o Giao diện đơn giản, dễ sử dụng, chức phím tab, enter hoạt động tốt Khơng có lỗi tả, khơng khó để đọc chữ o Giao diện có đầy đủ có menu menu quán với giao diện chức khác hệ thống o Khi phóng to, thu nhỏ không bị vỡ giao diện SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 78 • Về chức o Thực đầy đủ tất trƣờng hợp đƣợc mô tả thiết kế test case • Hạn chế o Khách hàng lựa chọn số lượng trước thêm sản phẩm vào giỏ hàng 4.2.3 Chức chỉnh sửa số lượng sản phẩm giỏ hàng ❖ Kịch kiểm thử cho chức chỉnh sửa số lượng sản phẩm giỏ hàng Bảng Kết kiểm thử chức chỉnh sửa số lượng sản phẩm giỏ hàng Số lượng test case Số test case pass Số test case Failure Số test case Error Số test case chưa thực Tỉ lệ thành cơng 85,72% ❖ Nhận xét • Tính khả dụng o Giao diện đơn giản, dễ sử dụng, chức phím tab, enter hoạt động tốt Khơng có lỗi tả, khơng khó để đọc chữ o Giao diện có đầy đủ có menu menu quán với giao diện chức khác hệ thống o Khi phóng to, thu nhỏ khơng bị vỡ giao diện • Về chức o Thực tương đối đầy đủ tất trường hợp mô tả thiết kế test case SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 79 o Giới hạn số lượng sản phẩm giỏ hàng không hoạt động người dùng nhập số lượng lớn 50 vào sản phẩm 4.2.4 Chức đặt hàng ❖ Kết kiểm thử chức đặt hàng Bảng Kết kiểm thử chức chỉnh sửa số lượng sản phẩm giỏ hàng Số lượng test case Số test case pass Số test case Failure Số test case Error Số test case chưa thực Tỉ lệ thành công 40% ❖ Nhận xét: • Tính khả dụng o Giao diện đơn giản, dễ sử dụng, chức phím tab, enter hoạt động tốt o Khơng có lỗi tả, khơng khó để đọc chữ, hình ảnh xếp gọn gàng, hợp lý o Giao diện có đầy đủ có menu menu quán với giao diện chức khác hệ thống o Khi phóng to, thu nhỏ khơng bị vỡ giao diện • Về chức o Thực không đầy đủ trường hợp mô tả thiết kế test case o Trường [Date] không phân biệt input data kí tự chữ hay số, đồng thời khơng phân biệt ngày tháng khứ, tương lai SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 80 o Người dùng đặt hàng thành công không thêm địa giao hàng o Người dùng xem lại đơn hàng sau đặt 4.3 ĐÁNH GIÁ KẾT QUẢ KIỂM THỬ Đánh giá tồn q trình kiểm thử sử dụng kiểm thử tự động WebdriverIO tổng số test case tương ứng với chức hệ thống: Bảng 10 Kết kiểm thử chức Số test Số test Số test tự động pass failure Đăng ký tài khoản 23 15 Thêm sản phẩm vào 24 24 85,72% 40% Chức Tỉ lệ thành công 65,21% 100% giỏ hàng Sửa số lượng sản phẩm giỏ hàng Đặt hàng Nhận xét: • Chức Đăng ký tài khoản: đảm bảo tương đối tính form đăng ký tài khoản, nhiên test case liên quan đến giới hạn kí tự bị fail • Chức năng: Thêm sản phẩm vào giỏ hàng đảm bảo thực thi đầy đủ test case (chỉ bao gồm case kiểm thử tự động) • Chức sửa số lượng sản phẩm: đảm bảo tương test case trình test tự động, nhiên số lượng sản phẩm khơng giới hạn khơng có thơng báo để khách hàng biết sản phẩm hàng hay số lượng lại • Chức Đặt hàng: chức quan trọng web liên quan đến thương mại điện tử Tuy nhiên form thông tin giao hàng thiết kế sơ sài: SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 81 o Trường [Ngày Giao Hàng] không phân biệt liệu dạng chữ hay số, không phân biệt ngày tháng khứ o Trường [Nơi Giao Hàng] để trống khách hàng nhận thông báo đặt hàng thành công o Khách hàng xem lại đơn hàng sau xác nhận đặt hàng 4.4 KẾT LUẬN CHƯƠNG Chương vận dụng sở lý thuyết kiểm thử phần mềm kiểm thử phần mềm tự động, kết hợp với việc sử dụng công cụ kiểm thử WebDriverIO framework Mocha để kiểm thử chức ứng dụng Web Siêu Thị Bán Hoa Online trình duyệt Chrome Đồng thời đưa báo cáo kiểm thử phân tích nguyên nhân gây lỗi KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kiểm thử phần mềm giữ vai trò quan trọng việc đảm bảo chất lượng sản phẩm phần mềm Sử dụng công cụ kiểm thử tự động giúp giảm thời gian, chi phí, nhân lực q trình phát triển phần mềm Nhưng khơng thể thay hồn tồn kiểm thử viên, có việc cấu hình khó khăn nhiều so với kiểm thử thủ cơng Vì kiểm thử viên phải người nhận biết nên sử dụng công cụ kiểm thử tự động nên kiểm thử thủ công Sau thời gian thực đồ án hướng dẫn PGS Đào Thanh Toản , kết mà em thu cụ thể sau: ❖ Kết đạt được: • Trình bày kiến thức kiểm thử phần mềm nói chung kiểm thử phần mềm tự động cho ứng dụng Web nói riêng • Phân tích ứng dụng Web Siêu Thị Bán Hoa Online • Giới thiệu đặc điểm, thành phần công cụ kiểm thử tự động WebdriverIO • Kết hợp cơng cụ WebDriverIO framework Mocha kiểm thử tự động ứng dụng Web SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 82 • Sử dụng Chai Assertion Library để test verification • Sử dụng Allure Report để thu lại kết kiểm thử • Áp dụng kiến thức tìm hiểu vào thực kiểm thử tự động chức ứng dụng Web Siêu Thị Bán Hoa Online ❖ Hạn chế • Chưa tối ưu hóa test script có khả sử dụng nhiều lần • Mới kiểm thử tự động web nhỏ chức cịn sơ khai • Kiến thức ngôn ngữ JavaScript chưa chuyên sâu nên gặp đơi chút khó khăn với test script bị lỗi • Sử dụng Allure Report cịn hạn chế, chưa thể sử dụng để phân tích chi tiết test script ❖ Hướng phát triển đề tài: • Tìm hiểu kiến thức, phương pháp hiệu kiểm thử tự động • Sử dụng WebdriverIO áp dụng kiểm thử tự động cho trang web lớn thực tế • Tìm giải pháp thích hợp để tối ưu hóa test script giúp tiết kiệm thời gian mang lại hiệu cao PHỤ LỤC ❖ Folder tổng hợp file liên quan đến đồ án tốt nghiệp https://drive.google.com/drive/folders/13HXiCboA53HdrxV0pJIumnvBOfUHI8q0? usp=sharing TÀI LIỆU THAM KHẢO Danh mục website tham khảo: [1] WebdriverIO Next-gen browser and mobile automation test framework for Node.js https://webdriver.io/ [2] Selenium automates browsers https://www.selenium.dev/ [3] Chai Assertion Library https://www.chaijs.com/ SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58 Đồ án tốt nghiệp 83 [4] VIBLO Learning https://viblo.asia/ [5] Mocha - the fun, simple, flexible JavaScript test framework https://mochajs.org/ [6] NodeJS https://nodejs.org [7] Allure Reporter https://webdriver.io/docs/allure-reporter/ [8] GitHub - webdriverio/webdriverio: Next-gen browser and mobile automation test framework for Node.js https://github.com/webdriverio/webdriverio [9] API Reference https://webdriver.io/docs/api SVTH: Tạ Hữu Đức Lớp: KTĐT & THCN K58

Ngày đăng: 09/02/2022, 09:49

Tài liệu cùng người dùng

Tài liệu liên quan