Chương I: Tổng quan về kiểm thử phần mềm Giới thiệu về kiểm thử phần mềm, nêu lên vai trò kiểm thử trong quá trình phát triển dự 1 án phần mềm và quy trình kiểm thử phần mềm. Đồng thời tập trung tìm hiểu việc kiểm thử tự động Web, các bước kiểm thử và lựa chọn công cụ phù hợp- Selenium WebDriver. Từ đó đi sâu vào tìm hiểu công cụ Selenium WebDriver về vai trò, ưu nhược điểm cũng như các đặc trưng và các câu lệnh mà công cụ hỗ trợ. ➢ Chương II: Ứng dụng Intellij IDEA Giới thiệu ứng dụng Intellij IDEA và ngôn ngữ , framework ứng dụng vào kiểm thử tự động cho website.net ➢ Chương III: Kịch bản kiểm thử website.net Lên kịch bản kiểm thử tự động và đưa ra báo cáo cho kết quả kiểm thử.
➢ Chương III: Thực nghiệm và đánh giá kết quả Áp dụng các kiến thức đã trình bày vào bài toán cụ thể: Sử dụng công cụ kiểm thử tự động Selenium WebDriver để kiểm thử tự động các chức năng đã phân tích. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1. Kiểm thử phần mềm 1.1 Khái niệm kiểm thử phần mềm Kiểm thử phần mềm có nhiều định nghĩa khác nhau đề xuất bởi nhiều tổ chức hay cá nhân khác nhau nhưng chúng ta có thể hiểu rằng: “Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi”.2 Mục tiêu 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 thử 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.3 Các cấp độ kiểm thử 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ử: 3 Hình 1: Các cấp độ kiểm thử phần mềm. ⮚ Kiểm thử đơn vị - Unit Test Một đơn vị là một thành phần nhỏ nhất mà ta có thể kiểm thử được. Ví dụ, các hàm (Function), thủ tục (Procedure), lớp (Class) hay phương thức (Method) để có thể xem là Unit.
Kiểm thử đơn vị nằm trong phạm vi Kiểm thử hộp trắng (White-box Testing), tức là kiểm tra code bên trong của một chức năng hoặc hệ thống để xem chức năng hoặc hệ thống đó được viết đúng chuẩn code hay chưa, đoạn code đó chạy hiệu năng có tốt không. Unit Test thường do các lập trình viên thực hiện,ngoài ra khi kiểm thử viên thực hiện yêu cầu phải có kiến thức về lập trình. Cùng với các mục kiểm thử khác, Unit Test cũng đòi hỏi phải chuẩn bị trước các Test case hoặc Test script, trong đó chỉ rõ dữ liệu đầu vào, các bước thực hiện và kết quả mong muốn. ⮚ Kiểm thử tích hợp – Integration Test Kiểm thử tích hợp là kết hợp các thành phần 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 và Unit riêng thì Integration 4 Test kết hợp chúng lại và kiểm tra sự giao tiếp chúng. Ví dụ: sau khi đã unit test chức năng đăng nhập và chức năng đăng ký tài khoản thì ta có thể tiến hành kiểm thử tích hợp của 2 chức năng này để xem chúng có tương tác tốt với nhau không, sau khi đăng ký tài khoản thành công thì ta có thể tiến hành đăng nhập bằng tài khoản đã đăng ký tài khoản xem có thực hiện được không. Hai mục tiêu chính là: ● Phát hiện lỗi giao tiếp xảy ra giữa các Unit. ● Tích hợp các Unit lẻ thành hệ thống nhỏ (Subsystem) và cuối cùng là nguyên một hệ thống hoàn chỉnh (System) chuẩn bị cho kiểm thử ở mức hệ thống.
⮚ Kiểm thử hệ thống – System Test Mục đích là kiểm thử thiết kế của toàn hệ thống (sau khi tích hợp) có thỏa mãn yêu cầu đã đặt ra hay không. System Test bắt đầu sau khi tất cả các bộ phận của phần mềm được tích hợp thành công. Thông thường loại kiểm thử này tốn rất nhiều công sức và thời gian. Trong nhiều trường hợp, việc kiểm thử đòi hỏi một số thiết bị phụ trợ, phần mềm hoặc phần cứng đặc thù, đặc biệt là các ứng dụng thời gian thực, hệ thống phân bố, hoặc hệ thống nhúng.
Người thực hiện test level này thường là Tester. Kiểm thử hệ thống thuộc phạm vi Kiểm thử hộp đen (tức là Tester chỉ quan tâm đầu vào và kết quả mong đợi ở đầu ra mà không cần kiểm tra code bên trong được viết như thế nào). ⮚ Kiểm thử chấp nhận – User Acceptance Test Mức độ kiểm thử phần mềm cuối cùng chính là Acceptance Test (Kiểm thử chấp nhận) – kiểm tra xem hệ thống có đáp ứng đúng nhu cầu và mong đợi của khách hàng hay không. Kiểm thử chấp nhận thường đượ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.
Trong kiểm thử hệ thống, khách hàng sẽ kiểm tra xem phần mềm được viết 5 có hoạt động đúng như mong đợi của mình không, có đảm bảo tính tiện dụng, hiệu suất hoạt động có như mong đợi không, có bảo mật tốt hay không,…. Tìm lỗi không phải là trọng tâm chính trong kiểm thử chấp nhận, vì việc tìm lỗi đã được đội Developer và Tester thực hiện trong các giai đoạn kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống rồi. Acceptance test gồm 2 loại kiểm thử là: ● Alpha Test, người dùng kiểm thử phần mềm ngay tại nơi phát triển phần mềm, lập trình viên sẽ ghi nhận các lỗi hoặc phản hồi, và lên kế hoạch sửa chữa. ● Beta Test, phần mềm sẽ được gửi tới cho người dùng để kiểm thử ngay trong môi trường thực, lỗi hoặc phản hồi cũng sẽ gửi ngược lại cho lập trình viên để sửa chữa.
Kiểm thử tự động và kiểm thử thủ công 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 với 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. Công cụ kiểm thử tự động có thể lấy dữ liệu từ bên ngoài (Excel,…) nhập vào ứng dụng, so sánh kết quả mong đợi (từ file Excel,…) với kết quả thực tế và xuất ra báo cáo 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 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,.
Quy trình kiểm thử tự động Quy trình kiểm thử tự động gồm các bước sau: 6 ➢ Lập kế hoạch kiểm thử: ● Nhằm chỉ định và mô tả các loại kiểm thử sẽ được triển khai và thực hiện. ➢ Thiết kế test case: ● Nhằm xác định các test case và các bước kiểm tra chi tiết cho mỗi phiên bản phần mềm. Giai đoạn thiết kế test case là hết sức quan trọng, nó bảo đảm tất cả các tình huống kiểm thử “quét” hết tất cả các yêu cầu cần kiểm tra. ➢ Phát triển test script: ● Bước này thường không bắt buộc trong các loại và mức kiểm thử, chỉ yêu cầu trong những trường hợp đặc thù cần thiết kế, tạo ra các test script có khả năng chạy trên máy tính tự động hóa việc thực thi các bước kiểm tra định nghĩa ở bước thiết kế test case.
● Trong đó, mỗi test script được hiểu là một nhóm mã lệnh đặc biệt dạng đặc tả kịch bản dùng để tự động hóa một trình tự kiểm thử, giúp cho việc kiểm thử nhanh hơn, hoặc cho những trường hợp mà kiểm thử bằng tay sẽ rất khó khăn hoặc không khả thi. Các test script có thể tạo thử công hoặc tạo tự động dùng công cụ kiểm thử. ➢ Thực hiện kiểm thử: ● Thực hiện các bước kiểm tra đã thiết kế hoặc thực thi các test script nếu tiến hành kiểm tra tự động và ghi nhận kết quả. ➢ Đánh giá kết quả kiểm thử: ● Đánh giá toàn bộ quá trình kiểm thử, bao gồm xem xét và đánh giá kết quả kiểm thử, liệt kê lỗi, chỉ định các yêu cầu thay đổi và tính toán các số liệu liên quan đến quá trình kiểm thử như số giờ, số lượng lỗi, phân loại lỗi,… 1.
Khái niệm kiểm thử thủ công Kiểm thử thủ công là kiểm thử phần mềm trong đó các kiểm thử được thực hiện thủ công bởi QA Analyst. Kiểm thử thủ công được thực hiện để tìm ra các lỗi trong phần mềm đang được phát triển. Trong kiểm thử thủ công, tester sẽ kiểm thử tất cả các tính năng thiết yếu của ứng dụng hoặc 7 phần mềm. Tester thực hiện các test cases và tạo báo cáo kiểm thử mà không cần sự trợ giúp của bất kỳ công cụ kiểm thử phần mềm tự động nào.
Đây là một phương pháp kiểm thử cổ điển, giúp tìm lỗi trong các hệ thống phần mềm, thường được tiến hành bởi một tester có kinh nghiệm và thực hiện theo quy trình kiểm thử phần mềm. Sự khác biệt giữa Kiểm thử tự động và kiểm thử thủ công Thông số Kiểm thử tự động Kiểm thử thủ công Định nghĩa Kiểm thử tự động sử dụng các Các trường hợp kiểm thử được công cụ tự động để thực hiện các thực hiện bởi tester trên phần trường hợp kiểm thử. mềm Thời gian xử lý Kiểm thử tự động nhanh hơn Các trường hợp kiểm thử được đáng kể so với phương pháp kiểm thực hiện bởi tester trên phần thử thủ công. mềm Kiểm thử ngẫu Tự động hóa không cho phép Kiểm thử ngẫu nhiên có thể nhiên kiểm thử ngẫu nhiên thực hiện trong Kiểm thử thủ (Exploratory công testing) Đầu tư ban đầu Đầu tư ban đầu trong kiểm thử tự Đầu tư ban đầu trong kiểm thử động cao hơn.
Mặc dù ROI tốt thủ công là tương đối thấp hơn hơn về lâu dài. kiểm thử tự động. ROI thấp hơn so với kiểm thử Tự động trong thời gian dài.