Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
3,12 MB
Nội dung
TRƯỜNG ĐẠI HỌC KINH TẾ KHOA THỐNG KÊ – TIN HỌC BÁO CÁO THỰC TẬP NGHỀ NGHIỆP NGÀNH HỆ THỐNG THÔNG TIN QUẢN LÝ CHUYÊN NGÀNH QUẢN TRỊ HỆ THỐNG THÔNG TIN & TIN HỌC QUẢN LÝ Đề tài: THỰC HIỆN KIỂM THỬ CHO WEBSITE GURU99 BANK: CHỨC NĂNG NEW/ EDIT CUSTOMER Đơn vị thực tập : TMA Solutions Bình Định Giảng viên hướng dẫn : TS Nguyễn Thị Uyên Nhi LỜI CẢM ƠN Lời chúng em xin gửi lời cảm ơn tới TMA Solutions Bình Định cho chúng em hội để học hỏi làm việc công ty Đặc biệt, chúng em xin cảm ơn hai anh Trần Duy Tân Lê Hoàng Linh – người trực tiếp hướng dẫn, tạo điều kiện, cung cấp kiến thức tài liệu cho chúng em suốt tập công ty; hỗ trợ nhiệt tình từ anh chị nhân viên, quản lý công ty để chúng em hồn thành tốt đợt thực tập vừa qua Chúng em xin gửi lời cảm ơn đến quý thầy cô khoa Thống kê – Tin học trường Đại học Kinh Tế - Đại học Đà Nẵng, đặc biệt chúng em xin cảm ơn cô Nguyễn Thị Un Nhi tận tình hướng dẫn ln theo sát trình thực tập chúng em để chúng em hồn thành tập thật tốt Vì thời gian kiến thức cịn hạn hẹp nên báo cáo chắn tránh khỏi thiếu sót Chúng em mong nhận ý kiến, đóng góp cơng ty, q thầy để chúng em hồn thành báo cáo tốt rút kinh nghiệm cho lần sau Chúng em xin chân thành cảm ơn i LỜI CAM ĐOAN Chúng em xin cam đoan cáo thực tập nghề nghiệp chúng em hướng dẫn Tiến sĩ: Nguyễn Thị Un Nhi Ngồi khơng có chép người khác Nội dung báo cáo thực tập sản phẩm mà chúng em nỗ lực nghiên cứu q trình hướng dẫn tham gia thực tập Công ty TMA Solutions Bình Định Các số liệu, kết trình bày báo cáo hoàn toàn trung thực, chúng em xin chịu hồn tồn trách nhiệm, kỷ luật mơn nhà trường đề có vấn đề xảy ii MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii MỤC LỤC iii DANH MỤC HÌNH ẢNH vi DANH MỤC BẢNG BIỂU vii DANH MỤC CÁC TỪ VIẾT TẮT viii LỜI MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ DOANH NGHIỆP VÀ LÝ THUYẾT VỀ KIỂM THỬ PHẦN MỀM 1.1 Giới thiệu tổng quát doanh nghiệp thực tập 1.1.1 Tởng quan TMA Solutions Bình Định 1.2 Cơ hội việc làm ngành 1.2.1 Mô tả công việc 1.2.2 Các kỹ cần có tester 1.2.3 Mức lương dành cho Fresher Tester 1.2.4 Cơ hội thăng tiến 1.3 Cơ sở lý thuyết kiểm thử phần mềm 1.3.1 Tổng quan kiểm thử phần mềm 1.3.2 Vòng đời phát triển phần mềm (SDLC) 1.3.3 Các loại kiểm thử 10 1.3.4 Các cấp độ kiểm thử 10 1.3.5 Test Case 11 1.3.6 Tool automation testing – Selenium – Python 12 iii CHƯƠNG TỔNG QUAN VỀ WEBSITE GURU99 BANK 14 2.1 Giới thiệu Website Guru99 Bank 14 2.2 Chức 14 2.3 Mô tả chức 15 2.4 Đặc tả chức 17 2.4.1 Chức New Customer 17 2.4.2 Chức Edit Customer 19 2.5 Workflow 21 2.5.1 Workflow chức New Customer 21 2.5.2 Workflow chức Edit Customer 22 CHƯƠNG TRIỂN KHAI THỰC HIỆN 23 3.1 Manual Testing 23 3.1.1 Thiết kế Test Case cho chức New customer 23 3.1.2 Thiết kế Test case cho chức Edit customer 25 3.1.3 Kết 27 3.2 Automation Testing 27 3.2.1 Thiết lập điều kiện môi trường cần thiết trước thực kiểm thử 27 3.2.2 Thực kiểm thử 28 3.2.3 Kết 31 3.3 So sánh kết kiểm thử Manual Automation 32 3.3.1 Kết thực Manual Automation Tetsting 32 3.3.2 Thời gian thực kiểm thử 33 3.3.3 Số lượng Test Case thực 33 3.3.4 Tính quán 34 iv 3.3.5 Tính linh hoạt 34 3.3.6 Tổng kết 34 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 35 TÀI LIỆU THAM KHẢO 37 v DANH MỤC HÌNH ẢNH Hình 1 Logo Cơng ty TMA Hình Mơ hình Waterfall Hình Mơ hình Agile Hình Phương pháp Scrum Hình Phương pháp Kanban Hình Trang chủ Website Guru99 Bank 14 Hình 2 Giao diện chức New Customer 17 Hình Giao diện nhập Customer ID 19 Hình Giao diện chức Edit Customer 19 Hình Workflow chức New Customer 21 Hình Workflow chức Edit Customer 22 Hình Test Case New Customer 25 Hình Test Case Edit Customer 26 Hình 3 Kết kiểm thử 27 Hình Kết Test Case NewCustomer_TC-002 31 Hình Kết Test Case NewCustomer_TC-009 31 Hình Kết Test Case NewCustomer_TC-011 31 Hình Kết Test Case EditCustomer_TC-01 32 Hình Kết Test Case EditCustomer_TC-11 32 vi DANH MỤC BẢNG BIỂU Bảng Bảng mô tả chức hệ thống 16 Bảng 2 Bảng giải nghĩa đầu vào chức New Customer 18 Bảng Bảng giải nghĩa đầu vào chức Edit Customer 20 Bảng Bảng so sánh kết Test Case 32 vii DANH MỤC CÁC TỪ VIẾT TẮT STLC : Software Testing Life Cycle SDLC : Software Development Life Cycle viii LỜI MỞ ĐẦU Mục tiêu đề tài - Nghiên cứu đề tài “Thực kiểm thử cho Website Guru99 Bank: Chức New/ Edit Customer” phương pháp thủ công tự động, giúp hiểu sâu kiến thức kiểm thử phần mềm Đề xuất Test Case quy trình kiểm thử tự động cách thức lựa chọn Test Case hiệu cho hai chức New Customer Edit Customer Đối tượng phạm vi nghiên cứu - Đối tượng nghiên cứu: Website Guru99 Bank - Phạm vi nghiên cứu: Kiểm thử thủ công kiểm thử tự động cho Website Guru99 Bank Kết cấu đề tài Đề tài tổ chức gồm phần mở đầu, chương nội dung phần kết luận - Mở đầu - Chương 1: Tổng quan doanh nghiệp lý thuyết kiểm thử phần mềm - Chương 2: Tổng quan Website Guru99 Bank - Chương 3: Triển khai thực - Kết luận hướng phát triển CHƯƠNG TRIỂN KHAI THỰC HIỆN 3.1 Manual Testing Link Test Case: https://bom.so/j4Eas5 3.1.1 Thiết kế Test Case cho chức New customer 23 24 Hình Test Case New Customer 3.1.2 Thiết kế Test case cho chức Edit customer 25 Hình Test Case Edit Customer 26 3.1.3 Kết Hình 3 Kết kiểm thử 3.2 Automation Testing 3.2.1 Thiết lập điều kiện môi trường cần thiết trước thực kiểm thử Khai báo thư viện import time import unittest from selenium import webdriver from selenium.common import NoSuchElementException, NoAlertPresentException from selenium.webdriver.common.by import By import tracemalloc import warnings import HtmlTestRunner Điều kiện kiểm thử • Chức New Customer def setUp(cls): tracemalloc.start() warnings.filterwarnings("ignore", category=ResourceWarning, message="unclosed file") cls.driver = webdriver.Chrome() cls.driver.maximize_window() cls.driver.get("https://www.demo.guru99.com/V4/") time.sleep(1) # Login - pre-condition cls.driver.find_element(By.NAME, "uid").send_keys("mngr516606") cls.driver.find_element(By.NAME, "password").send_keys("hnkl123@") cls.driver.find_element(By.NAME, 'btnLogin').click() time.sleep(1) cls.driver.find_element(By.XPATH, "//*[contains(text(),'New Customer')]").click() time.sleep(3) • Chức Edit Customer def setUp(cls): tracemalloc.start() warnings.filterwarnings("ignore", category=ResourceWarning, message="unclosed file") cls.driver = webdriver.Chrome() cls.driver.maximize_window() cls.driver.get("https://www.demo.guru99.com/V4/") time.sleep(1) 27 # Login - pre-condition cls.driver.find_element(By.NAME, "uid").send_keys("mngr516606") cls.driver.find_element(By.NAME, "password").send_keys("hnkl123@") cls.driver.find_element(By.NAME, 'btnLogin').click() time.sleep(1) cls.driver.find_element(By.XPATH, "//*[contains(text(),'Edit Customer')]").click() time.sleep(2) 3.2.2 Thực kiểm thử • Testcase ID: NewCustomer_TC-002: def test_NC_TC_002(self): # Create New Customer without entering a name self.driver.find_element(By.NAME, "name").send_keys("") self.driver.find_element(By.NAME, "dob").send_keys("16/06/1997") time.sleep(2) try: self.Expected_text = self.driver.find_element(By.XPATH,"//*[contains(text(),'Customer name must not be blank')]") if self.Expected_text.is_displayed(): print("NewCustomer_TC-002: Passed") else: print("NewCustomer_TC-002: Failed (Element of 'Expected_text' doesn't display)") except NoSuchElementException: print("NewCustomer_TC-002: Failed (Can't find element of 'Expected_text')") • Testcase ID: NewCustomer_TC-009: def test_NC_TC_009(self): # Create a New Customer and enter a name with numbers self.driver.find_element(By.NAME, "name").send_keys("Tran123") self.driver.find_element(By.NAME, "dob").send_keys("16/06/1997") self.driver.find_element(By.NAME, "addr").send_keys("256 Tay Son") self.driver.find_element(By.NAME, "city").send_keys("Quy Nhon") self.driver.find_element(By.NAME, "state").send_keys("Binh Dinh") self.driver.find_element(By.NAME, "pinno").send_keys("123456") self.driver.find_element(By.NAME, "telephoneno").send_keys("0909542112") self.driver.find_element(By.NAME, "emailid").send_keys("dtranthi@gmail.com") self.driver.find_element(By.NAME, "password").send_keys("123456") self.driver.find_element(By.XPATH, "//input[@value='Submit']").click() time.sleep(2) try: self.AlertText = self.driver.switch_to.alert self.PopupText = self.AlertText.text self.Expected_text = "please fill all fields" if self.Expected_text == self.PopupText: print("NewCustomer_TC-009: Passed") else: print("NewCustomer_TC-009: Failed ('Expected_text' is not in Popup)") except NoAlertPresentException: print("NewCustomer_TC-009: Failed (No Alert)") 28 • Testcase ID: NewCustomer_TC-011: def test_NC_TC_011(self): # Create a New Customer and enter an invalid date self.driver.find_element(By.NAME, "name").send_keys("Tran Thi D") self.driver.find_element(By.XPATH, "(//input[@name='rad1'])[2]").click() self.driver.find_element(By.NAME, "dob").send_keys("27/09/2023") time.sleep(2) try: self.Success_text = self.driver.find_element(By.XPATH, "//*[contains(text(),'Invalid date input')]") if self.Success_text.is_displayed(): print("NewCustomer_TC-011: Passed") else: print("NewCustomer_TC-011: Failed (Element of 'Expected_text' doesn't display)") except NoSuchElementException: print("NewCustomer_TC-011: Failed (Can't find element of 'Expected_text')") • Testcase ID: EditCustomer_TC-01: def test_EC_TC_01(self): # Edit Customer self.driver.find_element(By.NAME, "cusid").send_keys("53768") self.driver.find_element(By.NAME, "AccSubmit").click() time.sleep(2) self.addr = self.driver.find_element(By.NAME, "addr") self.addr.clear() self.addr.send_keys("256 Tay Son") self.city = self.driver.find_element(By.NAME, "city") self.city.clear() self.city.send_keys("Quy Nhon") self.state = self.driver.find_element(By.NAME, "state") self.state.clear() self.state.send_keys("Binh Dinh") self.pin = self.driver.find_element(By.NAME, "pinno") self.pin.clear() self.pin.send_keys("123456") self.phone = self.driver.find_element(By.NAME, "telephoneno") self.phone.clear() self.phone.send_keys("0909542112") self.mail = self.driver.find_element(By.NAME, "emailid") self.mail.clear() self.mail.send_keys("dtranthii@gmail.com") time.sleep(2) self.driver.find_element(By.NAME, "sub").click() time.sleep(2) try: self.alert_text = self.driver.switch_to.alert self.Expected_text = "Customer detailed updated successfully" if self.Expected_text == self.alert_text.text: print("EditCustomer_TC-01: Passed") else: print("EditCustomer_TC-01: Failed ('Expected_text' is not in Popup)") except NoAlertPresentException: print("EditCustomer_TC-01: Failed (No Alert)") 29 • Testcase ID: EditCustomer_TC-11: def test_EC_TC_11(self): # Edit Customer without entering an address self.driver.find_element(By.NAME, "cusid").send_keys("53768") self.driver.find_element(By.NAME, "AccSubmit").click() time.sleep(2) initial_addr = self.driver.find_element(By.NAME, "addr").get_attribute("value") initial_city = self.driver.find_element(By.NAME, "city").get_attribute("value") initial_state = self.driver.find_element(By.NAME, "state").get_attribute("value") initial_pin = self.driver.find_element(By.NAME, "pinno").get_attribute("value") initial_phone = self.driver.find_element(By.NAME, "telephoneno").get_attribute("value") initial_mail = self.driver.find_element(By.NAME, "emailid").get_attribute("value") time.sleep(1) self.addr = self.driver.find_element(By.NAME, "addr") self.addr.clear() self.addr.send_keys("") time.sleep(2) self.city = self.driver.find_element(By.NAME, "city") self.city.clear() self.city.send_keys("Quy Nhon") self.driver.find_element(By.NAME, "sub").click() time.sleep(1) self.alert_text = self.driver.switch_to.alert self.Expected_text = "Edit Customer Unsuccessfully" alert_passed = False # Flag to track alert check if self.Expected_text == self.alert_text.text: alert_passed = True time.sleep(2) self.alert_text.accept() time.sleep(2) self.driver.find_element(By.NAME, "cusid").send_keys("53768") self.driver.find_element(By.NAME, "AccSubmit").click() time.sleep(2) try: self.assertEqual(initial_addr, self.driver.find_element(By.NAME, "addr").get_attribute("value")) self.assertEqual(initial_city, self.driver.find_element(By.NAME, "city").get_attribute("value")) self.assertEqual(initial_state, self.driver.find_element(By.NAME, "state").get_attribute("value")) self.assertEqual(initial_pin, self.driver.find_element(By.NAME, "pinno").get_attribute("value")) self.assertEqual(initial_phone, self.driver.find_element(By.NAME, "telephoneno").get_attribute("value")) self.assertEqual(initial_mail, self.driver.find_element(By.NAME, "emailid").get_attribute("value")) if alert_passed: print("EditCustomer_TC-11: Passed (Alert Passed and Can load Old data)") else: print("EditCustomer_TC-11: Failed (Alert Failed but Can load Old data)") except AssertionError: if alert_passed: print("EditCustomer_TC-11: Failed (Alert Passed but Can't load 30 Old data)") else: print("EditCustomer_TC-11: Failed (Alert Failed and Can't load Old data)") 3.2.3 Kết • Testcase ID: NewCustomer_TC-002: Hình Kết Test Case NewCustomer_TC-002 • Testcase ID: NewCustomer_TC-009: Hình Kết Test Case NewCustomer_TC-009 • Testcase ID: NewCustomer_TC-011: Hình Kết Test Case NewCustomer_TC-011 31 • Testcase ID: EditCustomer_TC-01: Hình Kết Test Case EditCustomer_TC-01 • Testcase ID: EditCustomer_TC-11: Hình Kết Test Case EditCustomer_TC-11 3.3 So sánh kết kiểm thử Manual Automation 3.3.1 Kết thực Manual Automation Tetsting Testcase ID Manual Test Automation Test NewCustomer_TC-002 PASSED PASSED NewCustomer_TC-009 PASSED PASSED NewCustomer_TC-011 FAILED FAILED EditCustomer_TC-01 FAILED FAILED EditCustomer_TC-11 FAILED FAILED Bảng Bảng so sánh kết Test Case 32 Qua bảng ta thấy manual automation test trường hợp cho kết giống Và qua việc kiểm thử ta thấy Website Guru99 Bank mắc phải nhiều lỗi chức hiển thị thông báo Đối với chức New Customer nhập liệu không theo yêu cầu vào trường hệ thống thông báo lỗi bên cạnh trường đó, ta nhấn nút “Submit” hệ thống pop-up: “please fill all fields” bắt buộc ta phải nhập kiểu liệu chấp nhận lưu thông tin Nhưng chức Edit Customer, nhập liệu muốn thay đổi không theo yêu cầu vào trường hệ thống thơng báo lỗi bên cạnh trường nhấn nút “Submit” hệ thống cho phép lưu thay đổi thông tin dù liệu không theo yêu cầu 3.3.2 Thời gian thực kiểm thử Automation Testing: Ban đầu, việc viết kịch kiểm thử làm tốn nhiều thời gian Tuy nhiên, kịch viết thời gian thực Test Case nhanh Và kịch sử dụng lại nhiều lần tương lai, giúp tiết kiệm thời gian thuận tiện cho sau trình thực tự động hóa Manual Testing: Kiểm thử thủ cơng tốn thời gian công sức lần thực Test Case Sự tốn thời gian tăng phạm vi bao phủ lớn cần kiểm thử nhiều môi trường khác 3.3.3 Số lượng Test Case thực Automation Test: Kiểm thử tự động có khả thực lượng lớn Test Case cách nhanh chóng đồng nhất, nhờ khả chạy tự động Điều đặc biệt hữu ích cần kiểm thử nhiều môi trường thiết bị Manual Test: Trong kiểm thử thủ cơng, số lượng Test Case mà người kiểm thử khoảng thời gian cụ thể u cầu thực thủ cơng bước 33 3.3.4 Tính qn Automation Testing: Kiểm thử tự động thường cung cấp tính quán cao kịch kiểm thử viết lần sau chạy lại nhiều lần mà không bị ảnh hưởng bởi yếu tố người Điều giúp đảm bảo tác vụ kiểm thử thực theo cách định chạy Manual Testing: Kiểm thử thủ cơng dẫn đến khơng qn dựa vào người để thực bước kiểm thử Những sai sót nhỏ khơng chắn q trình kiểm thử thủ cơng dẫn đến kết không quán lần kiểm thử 3.3.5 Tính linh hoạt Automation Testing: Kiểm thử tự động có khả kiểm tra ngẫu nhiên thấp kiểm thử thủ cơng, kiểm tra lập trình sẵn Manual Testing: Kiểm thử thủ cơng có tính linh hoạt cao việc xử lý trường hợp kiểm thử đa dạng, phức tạp khơng xác định trước, người kiểm thử sử dụng kỹ năng, kinh nghiệm để kiểm tra phần mềm cách linh hoạt hiệu quả, chí kiểm thử cách linh hoạt mà khơng cần có kịch kiểm thử trước 3.3.6 Tổng kết Kết hợp hai phương pháp: Kiểm thử tự động thủ công để tận dụng ưu điểm hai phương pháp Trong trường hợp này, việc kết hợp kiểm thử tự động thủ công giúp xác định chắn lỗi mà Website Guru99 Bank gặp phải 34 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết đạt được: Sau thời gian 10 tuần tham gia thực tập cơng ty TMA Solutions Bình Định, với hướng dẫn tận tình từ mentor anh chị công ty, chúng em tiếp thu cho thêm nhiều kiến thức đạt số kết sau: - Nắm lý thuyết kiểm thử, hiểu tầm quan trọng việc kiểm thử - Áp dụng lý thuyết để thực kiểm thử thủ công kiểm thử tự động cho chức Website Guru99 Bank - Nâng cao tinh thần tự học, tìm hiểu kiến thức - Cải thiện kỹ thuyết trình - Cải thiện kỹ tiếng anh thông qua việc đọc tài liệu tiếng anh - Nâng cao kỹ mềm như: Viết email, làm trình bày slide, kỹ thuyết trình trước đám đơng, cách ứng xử chuyên nghiệp môi trường doanh nghiệp thông qua buổi đào tạo công ty Hạn chế: - Khi có vấn đề chưa rõ, cịn gặp khó khăn chưa mạnh dạn hỏi mentor - Các trường hợp kiểm thử chưa đầy đủ nhiều chức chưa kiểm thử Bài học kinh nghiệm: Trong q trình thực tập cơng ty, em rút số học: - Cần chủ động làm việc môi trường doanh nghiệp: chủ động học hỏi, tìm hiểu cơng việc mình, chủ động làm quen với người - Nhìn thấy thiếu sót thân thực tập doanh nghiệp học tập người trước để khắc phục nhược điểm thân - Có mối quan hệ giúp cho phát triển thân - Trang bị thêm cho thân kỹ mềm kiến thức Testing 35 Hướng phát triển: Trâm Anh Sau khoảng thời gian thực tập công ty, tiếp xúc môi trường thực tế doanh nghiệp thân em cịn nhiều thiếu sót cần hoàn thiện tương lai Từ kiến thức có sau q trình học hỏi thực tập doanh nghiệp, thân em cố gắng tiếp tục rèn luyện để cố kiến thức cải thiện kiến thức kỹ lĩnh vực kiểm thử Hiện thân hướng dẫn học hỏi Manual Testing, thời gian tới, em tìm hiểu sâu Automation Testing để phục vụ cho công việc đề án tốt nghiệp sau Bảo Tuân Trong trình thực thực tập vị trí Automation Testing, em có hội tiếp xúc học hỏi nhiều từ môi trường làm việc thực tế Các kinh nghiệm thu thập kiến thức mẻ mở cho em hướng phát triển sâu rộng lĩnh vực Trong suốt thời gian thực tập, em học cách viết trì kịch kiểm thử tự động Em nhận thấy viết code kỹ quan trọng em thấy tiến việc áp dụng kiến thức lập trình để tạo kịch kiểm thử chất lượng Để phát triển tốt hơn, em dự định tìm hiểu thêm ngơn ngữ framework kiểm thử phổ biến Robot Appium để xây dựng kịch kiểm thử phức tạp hiệu Ngoài ra, em trau dồi kỹ giao tiếp, em nhận thấy giao tiếp lúc làm việc nhóm với thành viên ngồi nhóm quan trọng Em muốn trau dồi thêm nhiều kỹ liên quan đến BA để chuyển hướng sang BA mà kiến thức đủ tốt 36 TÀI LIỆU THAM KHẢO Tài liệu công ty cung cấp https://www.guru99.com/ https://tryqa.com/ https://www.tutorialspoint.com/software_testing/ https://www.softwaretestingclass.com/software-testing-life-cycle-stlc/ https://www.mountaingoatsoftware.com/agile/scrum http://scrummethodology.com/ https://leankit.com/learn/kanban/kanban-vs-scrum/ http://softwaretestingfundamentals.com/unit-testing/ 10 http://softwaretestingfundamentals.com/integration-testing/ 11 http://softwaretestingfundamentals.com/system-testing/ 12 http://softwaretestingfundamentals.com/acceptance-testing/ 13 http://softwaretestingfundamentals.com/test-case/ 14 http://www.softwaretestingmentor.com/what-is-testcase/ 15 https://sangbui.com/postman/page/2/ 37