CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 8 1.1 Kiểm thử phần mềm 8 1.1.1 Khái niệm 8 1.1.2 Mục tiêu của kiểm thử phần mềm 8 1.1.3 Vai trò của kiểm thử phần mềm 8 1.1.4 Các cấp độ kiểm thử phần mềm 9 1.2 Kiểm thử tự động (Automation Testing) 11 1.2.1 Khái niệm kiểm thử tự động 11 1.2.2 Quy trình kiểm thử tự động 12 1.2.3 Ưu điểm và nhược điểm của kiểm thử tự động 14 1.3 Một số công cụ kiểm thử phần mềm tự động phổ biến 15 CHƯƠNG 2 KIỂM THỬ ỨNG DỤNG WEB 16 2.1 Khái quát về kiểm thử ứng dụng Web 16 2.1.1 Các loại ứng dụng Web 16 2.1.2 Đặc điểm về chất lượng của một ứng dụng Web 17 2.2 Công việc chính khi kiểm thử Web 18 2.2.1 Kiểm thử chức năng 18 2.2.2 Kiểm thử khả năng sử dụng 20 2.2.3 Kiểm thử tương thích 20 2.2.4 Kiểm thử hiệu suất 21 2.2.5 Kiểm thử bảo mật 22 2.3 Một số công cụ hỗ trợ kiểm thử chức năng trên nền Web 22 CHƯƠNG 3 PHẦN MỀM KIỂM THỬ TỰ ĐỘNG SELENIUM 24 3.1 Lý do chọn phần mềm Selenium 24 3.2 Tổng quan về Selenium 24 3.3 Đặc điểm của Selenium 24 3.4 Các thành phần của Selenium 25 3.4.1 Selenium IDE (Integrated Development Environment) 25 3.4.2 Selenium RC (Remote Control) 28 3.4.3 Selenium Grid 30 3.4.4 Selenium WebDriver 30 KẾT LUẬN 38
NHẬN XÉT CỦA ĐƠN VỊ THỰC TẬP Trưởng đơn vị Hà nội, ngày …tháng…năm … (Ký tên, đóng dấu) Người nhận xét (Ký và ghi rõ họ tên) MỤC LỤC MỤC LỤC 4 DANH MỤC HÌNH ẢNH 6 MỞ ĐẦU 7 CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 8 1.1 Kiểm thử phần mềm 8 1.1.1 Khái niệm 8 1.1.2 Mục tiêu của kiểm thử phần mềm .8 1.1.3 Vai trò của kiểm thử phần mềm 8 1.1.4 Các cấp độ kiểm thử phần mềm 9 1.2 Kiểm thử tự động (Automation Testing) 11 1.2.1 Khái niệm kiểm thử tự động 11 1.2.2 Quy trình kiểm thử tự động .12 1.2.3 Ưu điểm và nhược điểm của kiểm thử tự động 14 1.3 Một số công cụ kiểm thử phần mềm tự động phổ biến 15 CHƯƠNG 2 KIỂM THỬ ỨNG DỤNG WEB 16 2.1 Khái quát về kiểm thử ứng dụng Web 16 2.1.1 Các loại ứng dụng Web .16 2.1.2 Đặc điểm về chất lượng của một ứng dụng Web .17 2.2 Công việc chính khi kiểm thử Web 18 2.2.1 Kiểm thử chức năng 18 2.2.2 Kiểm thử khả năng sử dụng .20 2.2.3 Kiểm thử tương thích 20 2.2.4 Kiểm thử hiệu suất 21 2.2.5 Kiểm thử bảo mật 22 2.3 Một số công cụ hỗ trợ kiểm thử chức năng trên nền Web 22 CHƯƠNG 3 PHẦN MỀM KIỂM THỬ TỰ ĐỘNG SELENIUM 24 2 3.1 Lý do chọn phần mềm Selenium 24 3.2 Tổng quan về Selenium 24 3.3 Đặc điểm của Selenium 24 3.4 Các thành phần của Selenium 25 3.4.1 Selenium IDE (Integrated Development Environment) .25 3.4.2 Selenium RC (Remote Control) 28 3.4.3 Selenium Grid 30 3.4.4 Selenium WebDriver 30 KẾT LUẬN 38 TÀI LIỆU THAM KHẢO .39 3 DANH MỤC HÌNH ẢNH Hình 1-1 Các cấp độ kiểm thử phần mềm .9 Hình 1-2 Quy trình kiểm thử tự động 12 Hình 3-1 Các thành phần của Selenium 25 Hình 3-2 Giao diện của Selenium IDE 26 Hình 3-3 Các thành phần của Selenium Grid .30 Hình 3-4 Cấu trúc của Selenium WebDriver 32 Hình 3-5 Cấu trúc của Selenium Remote Control 33 4 MỞ ĐẦU Ngày nay, công nghệ thông tin nói chung và công nghệ phần mềm nói riêng đang chiếm một vị trí quan trọng trong tiến trình công nghiệp hoá, hiện đại hoá đất nước Song song với việc phát triển công nghệ phần mềm luôn tiềm ẩn những thách thức cho dành các doanh nghiệp, nhà phát triển phần mềm trong việc kiểm soát lỗi, chất lượng đầu ra của sản phẩm Tuy nhiên ở Việt Nam, số lượng các kiểm thử viên vẫn chưa đáp ứng được với nhu cầu của thị trường Bên cạnh đó, xu hướng áp dụng tự động hoá đang được triển khai rộng rãi ở nhiều lĩnh vực, trong đó có kiểm thử phần mềm Đặc biệt, khi kiểm thử phần mềm là công đoạn chiếm phần lớn thời gian trong quá trình phát triển dự án phần mềm thì sự ra đời của các công cụ kiểm thử tự động càng có ý nghĩa hơn bao giờ hết, giúp tiết kiệm thời gian, công sức và tiền bạc Selenium là một công cụ hỗ trợ kiểm thử tự động dành cho các ứng dụng Web, hoạt động trên hầu hết các trình duyệt phổ biến hiện nay như Firefox, Chrome, Microsoft Edge, Safari, v.v cũng như hỗ trợ số lượng lớn các ngôn ngữ lập trình Web phổ biến Công cụ Selenium hiện được đánh giá là một trong những công cụ tốt nhất cho kiểm thử tự động các ứng dụng Web Báo cáo này đưa ra những cái nhìn tổng quan về kiểm thử tự động phần mềm và phần mềm kiểm thử tự động Selenium 5 CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1.1 Kiểm thử phần mềm 1.1.1 Khái niệm Kiểm thử phần mềm (Software Testing) là một quá trình kiểm tra để phát hiện ra lỗi của những phần mềm, ứng dụng nhằm cung cấp cho khách hàng, lập trình viên thông tin về chất lượng của phần mềm được kiểm thử Mục đích cuối cùng của công việc này là để đảm bảo sản phẩm (phần mềm, ứng dụng) được tạo ra theo đúng mong muốn khách hàng và hoạt động hiệu quả Có 2 phương pháp kiểm thử: Kiểm thử thủ công (Manual Testing) Kiểm thử tự động (Automation Testing) 1.1.2 Mục tiêu của kiểm thử phần mềm Các mục tiêu trực tiếp: Xác định và phát hiện nhiều lỗi nhất có thể trong phần mềm được kiểm thử Sau khi sửa chữa các lỗi đã xác định và kiểm tra lại, làm cho phần mềm đã được kiểm thử đến một mức độ chấp nhận được về chất lượng Thực hiện các yêu cầu kiểm thử cần thiết một cách hiệu quả và có hiệu quả, trong phạm vi ngân sách và thời gian cho phép Các mục tiêu gián tiếp: Để biên dịch một tài liệu về các lỗi phần mềm thường gặp nhằm mục đích ngăn ngừa và sửa chữa lỗi 1.1.3 Vai trò của kiểm thử phần mềm Kiểm thử phần mềm có nhiệm vụ chỉ ra các lỗi và sai sót hình thành trong các giai đoạn phát triển sản phẩm Kiểm thử là điều cần thiết vì nó đảm bảo độ tin cậy của khách hàng và sự hài lòng của họ về ứng dụng Nó rất quan trọng trong việc đảm bảo chất lượng của sản phẩm Sản phẩm chất lượng được giao cho khách hàng giúp họ sử dụng hiệu quả hơn 6 Thử nghiệm phần mềm là cần thiết để cung cấp các phần mềm chất lượng cao cho khách hàng hoặc ứng dụng phần mềm đòi hỏi chi phí bảo trì thấp hơn và do đó dẫn đến kết quả chính xác, nhất quán và đáng tin cậy hơn Thử nghiệm là cần thiết cho một hiệu suất hiệu quả của ứng dụng phần mềm hoặc sản phẩm Điều quan trọng là đảm bảo rằng ứng dụng không dẫn đến bất kỳ lỗi nào vì nó có thể rất tốn kém trong tương lai hoặc trong các giai đoạn sau của quá trình phát triển Nó là khâu quan trọng để đảm bảo hoạt động kinh doanh phần mềm phát triển Đảm bảo uy tín của chủ sở hữu sản phẩm đối với khách hàng 1.1.4 Các cấp độ kiểm thử phần mềm Một sản phẩm phần mềm từ khi bắt đầu phát triển đến khi hoàn thành và đưa đến tay người dùng cuối phải trải qua bốn mức kiểm thử: Hình 1-1 Các cấp độ kiểm thử phần mềm Kiểm thử đơn vị - Unit Test: Cấp độ này chủ yếu do lập trình viên trực tiếp thực hiện Phần mềm khi phát triển sẽ bao gồm nhiều đơn vị chức năng (hàm, phương thức) hợp thành Mỗi lập trình viên sẽ đảm nhiệm việc phát triển một hay nhiều đơn vị chức năng Kiểm thử đơn vị chính là việc lập trình viên sau khi hoàn thành code đơn vị chức năng của mình sẽ tiến hành kiểm thử chức năng đó một cách cô lập nhằm phát hiện ra lỗi và khắc phục trước khi tích hợp với các đơn vị chức năng khác 7 Mục đích: Đảm bảo thông tin được xử lý đúng và có đầu ra chính xác trong mối tương quan giữa dữ liệu nhập và chức năng của đơn vị Kiểm thử tích hợp – Integration Test: Kiểm thử tích hợp kết hợp các module của một ứng dụng và kiểm thử như một ứng dụng đã hoàn thành Trong khi Unit Test kiểm tra các thành phần Unit riêng lẻ thì Intgration Test kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa chúng Mục đích: Phát hiện lỗi giao tiếp xảy ra giữa các đơn vị cũng như lỗi của bản thân từng đơn vị (nếu có) Tích hợp các đơn vị đơn lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng là nguyên hệ thống hoàn chỉnh (system) chuẩn bị cho kiểm tra ở mức hệ thống Kiểm thử hệ thống – System Test: Kiểm thử hệ thống là một mức của tiến trình kiểm thử phần mềm khi các module đã được kiểm thử thành công System Test thường được thực hiện bởi một nhóm kiểm thử viên hoàn toàn độc lập với nhóm phát triển dự án với mục tiêu là để đánh giá phần mềm có hoạt động đúng theo các yêu cầu đã được đưa ra không System Test là kiểm thử cả các hành vi chức năng của phần mềm lẫn các yêu cầu về chất lượng như độ tin cậy, tính tiện lợi khi sử dụng, hiệu năng và bảo mật Mức kiểm thử này đặc biệt thích hợp cho việc phát hiện lỗi giao tiếp với phần mềm hoặc phần cứng bên ngoài, chẳng hạn các lỗi "tắc nghẽn" (deadlock) hoặc chiếm dụng bộ nhớ Trong system test lại bao gồm nhiều loại kiểm thử khác nhau, một số loại phổ biến nhất gồm: Functional Testing (Kiểm thử chức năng): Bảo đảm các hành vi của hệ thống thỏa mãn đúng yêu cầu thiết kế Interface/GUI Test (Kiểm thử giao diên người dùng): Là kỹ thuật kiểm thử để xác nhận xem giao diện của phần mềm có hoạt động đúng như mong đợi hay không (về các đối tượng trên giao diện, vị trí, màu sắc, lỗi chính tả, trạng thái của các đối tượng…) 8 Performance Testing (Kiểm thử hiệu năng): Đảm bảo tối ưu việc phân bổ tài nguyên hệ thống (bộ nhớ, …) nhằm đạt các chỉ tiêu như thời gian xử lý hay đáp ứng câu truy vấn… Stress Test (Kiểm thử khả năng chịu tải): Đảm bảo hệ thống vận hành đúng dưới áp lực cao (ví dụ nhiều người truy xuất cùng lúc) Stress Test tập trung vào các trạng thái tới hạn, các “điểm chết”, các tình huống bất thường như đang giao dịch thì ngắt kết nối (xuất hiện nhiều trong kiểm tra thiết bị như POS, ATM…) Configuration test (Kiểm thử cấu hình): Kiểm thử sự tương thích giữa phần mềm và phần cứng Security Test (Kiểm thử bảo mật): Bảo đảm tính toàn vẹn, bảo mật của dữ liệu và của hệ thống Recovery Test (Kiểm thử khả năng phục hồi): Bảo đảm hệ thống có khả năng khôi phục trạng thái ổn định trước đó trong tình huống mất tài nguyên hoặc dữ liệu, đặc biệt quan trọng đối với các hệ thống giao dịch như ngân hàng trực tuyến… Kiểm thử chấp nhận – Acceptance Test: Thông thường, sau giai đoạn System Test là Acceptance Test, được khách hàng thực hiện hoặc ủy quyền cho một nhóm thứ ba thực hiện Mục đích của Acceptance Test là để chứng minh phần mềm đã thỏa mãn tất cả yêu cầu của khách hàng và khách hàng chấp nhận sản phẩm 1.2 Kiểm thử tự động (Automation Testing) Kiểm thử phần mềm tốn nhiều chi phí, nhân lực và thời gian Trong một số dự án, chi phí kiểm thử phần mềm chiếm 40% tổng giá trị của dự án Do đó một trong các mục tiêu của kiểm thử là tự động hóa nhiều, nhờ đó mà giảm thiểu chi phí, giảm lỗi, đặc biệt giúp việc kiểm thử dễ dàng và nhanh chóng hơn 1.2.1 Khái niệm kiểm thử tự động Kiểm thử tự động là thực hiện kiểm thử phần mềm một cách tự động các bước trong một kịch bản kiểm thử bằng một chương trình đặc biệt có rất ít hoặc không có sự tương tác của con người, giúp cho người thực hiện việc kiểm thử phần mềm không phải lặp đi lặp lại các bước nhàm chán tránh cho việc kiểm thử viên bỏ sót các bài test 9 Dữ liệu dùng để kiểm thử tự động có thể lấy từ file bên ngoài (Excel, …) nhập vào ứng dụng, so sánh kết quả mong đợi với kết quả thực tế và xuất ra báo cáo kết quả kiểm thử Kiểm thử tự động sẽ được sử dụng khi: Dự án không đủ tài nguyên (thời gian, nhân lực và chi phí) Phải thực hiện kiểm thử hồi quy khi sản phẩm được sửa đổi hoặc nâng cấp và cần kiểm thử lại các tính năng đã thực hiện tốt trước đó Kiểm tra khả năng vận hành của sản phẩm trong các môi trường đặc biệt (đo tốc độ xử lý trung bình ứng với mỗi yêu cầu, xác định khả năng chịu tải tối đa, kiểm tra các cơ chế an ninh và an toàn, ) 1.2.2 Quy trình kiểm thử tự động Quy trình kiểm thử tự động gồm các bước sau: Lập kế hoạch kiểm thử Thiết kế test case Phát triển test script Thực hiện kiểm thử Đánh giá kết quả kiểm thử Hình 1-2 Quy trình kiểm thử tự động Lập kế hoạch kiểm thử: Mục đích: Nhằm chỉ định và mô tả các loại kiểm thử sẽ được triển khai và thực hiện Kết quả của bước lập kế hoạch là bản tài liệu kế hoạch kiểm thử phần mềm, bao gồm: Các giai đoạn kiểm thử áp dụng cho dự án phần mềm Chiến lược kiểm thử Các công cụ kiểm thử 10