LỜI MỞ ĐẦU Ngày nay, công nghệ ngày càng phát triển nhanh chóng, đã kéo theo hệ thống mạng và các phần mềm gia tăng về số lượng theo quy mô rộng và cả chất lượng của phần mềm theo chiều sâu. Từ đó đã làm nảy sinh ra nhiều vấn đề về lỗi hỏng hóc phần mềm không đáng có, gây ra những ảnh hưởng nghiêm trọng đến những mặt khác. Những lỗi này có thể do chính bản thân phần mềm bị hỏng hóc hoặc cũng có thể là do con người cố tình gây nên. Vấn đề nan giải và đầy tính cấp thiết ấy đang ngày càng có xu hướng mở rộng và càng khó giải quyết.
Vì vậy, yêu cầu đặt ra là cần có công tác kiểm thử phần mềm để có thể ngăn chặn và phòng ngừa các lỗi xuất hiện ở trong phần mềm. Tuy nhiên, số lượng phần mềm ngày càng lớn gây khó khăn không nhỏ đến hoạt động kiểm thử khi thực hiện kiểm thử thủ công. Từ đó đã xuất hiện các công cụ kiểm thử tự động nhằm hỗ trợ cho hoạt động kiểm thử, giúp giảm thời gian, giảm tài nguyên, tăng độ chính xác và sự đảm bảo. Đó là lý do nhóm chọn đề tài “Xây dựng và kiểm thử chức năng Quản lý điểm sinh viên và kiểm thử tự động bằng công cụ Google Test”.
KIỂM THỬ PHẦN MỀM 1. Khái niệm - Kiểm thử là quy trình kiểm chứng để đánh giá và tăng cường chất lượng của sản phẩm phần mềm, nhằm phát hiện lỗi hoặc bất cứ vấn đề gì về sản phẩm. Kiểm thử phần mềm (software testing) là một hoạt động kiểm tra, đánh giá chất lượng của phần mềm. - Kiểm thử phần mềm đóng vai trò rất quan trọng: Kiểm thử phần mềm là hoạt động đảm bảo chất lượng phần mềm và mang tính sống còn trong các dự án sản xuất phần mềm.
Vì vậy nó đã trở thành quy trình bắt buộc trong các dự án phần mềm hiện nay. Kiểm thử phần mềm để tránh những rủi ro, lỗi phát sinh trong suốt quá trình tạo ra sản phẩm. Lỗi càng phát hiện ra sớm càng giúp tránh được rủi ro và chi phí. Quy trình kiểm thử phần mềm 1.
Phân tích yêu cầu - Đầu vào: tài liệu đặc tả yêu cầu, tài liệu thiết kế hệ thống, tài liệu khách hàng, bản prototype của khách hàng yêu cầu (nếu có),. - Hoạt động: Đọc hiểu, nghiên cứu phân tích các yêu cầu có trong các bản tài liệu. Đưa ra các câu hỏi còn thắc mắc về yêu cầu phần mềm với BA, team, leader, khách hàng để hiểu rõ hơn về yêu cầu sản phẩm - Đầu ra: tài liệu chứa các câu hỏi và câu trả lời liên quan đến nghiệp vụ của hệ thống, tài liệu báo cáo tính khả thi, phân tích rủi ro của việc kiểm thử phần mềm. Lập kế hoạch kiểm thử - Đầu vào: các tài liệu đặc tả đã được cập nhật thông qua các câu hỏi và trả lời được đưa ra trong giai đoạn phân tích yêu cầu.
- Hoạt động: Xác định phạm vi kiểm thử: thời gian, lịch trình cho các công việc. Xác định phương pháp tiếp cận. Xác định nguồn lực: con người và thiết bị. Lên kế hoạch thiết kế công việc test: các chức năng cần kiểm thử, cái nào cần thực hiện trước, sau, ai là người thực hiện.
- Đầu ra: các tài liệu như test plan, test estimation, test schedule. Thiết kế kịch bản kiểm thử - Đầu vào: test plan, test estimation, test schedule, các tài liệu đặc tả đã được cập nhật. - Hoạt động: Review tài liệu: xác định công việc cần làm. Viết test case/checklist.
Chuẩn bị dữ liệu kiểm thử: test data, test script. 6 Review test case/checklist: tránh rủi ro trong thiết kế test case - Đầu ra: test design, test case, check list, test data, test automation script. Thiết lập môi trường kiểm thử - Đầu vào: test plan, smoke test case, test data. - Hoạt động: Thực thi các smoke test case để kiểm tra môi trường kiểm thử đã sẵn sàng cho việc test chưa - Đầu ra: môi trường đã được cài đặt đúng theo yêu cầu, sẵn sàng cho việc kiểm thử và kết quả của smoke test case.
Thực hiện kiểm thử - Đầu vào: test plan, test design, test case, check list, test data, test automation script. - Hoạt động: Thực hiện các test case như thiết kế So sánh với kết quả mong đợi sau báo cáo các bug xảy ra lên tool quản lý lỗi và theo dõi trạng thái của lỗi đến khi được sửa thành công. Đo và phân tích tiến độ - Đầu ra: test results (kết quả kiểm thử), defect reports (danh sách các lỗi tìm được). Đóng chu trình kiểm thử - Đầu vào: tất cả những tài liệu liên quan đã được tổng hợp, ghi chép và hoàn thiện đầy đủ trong suốt quy trình kiểm thử của dự án - Hoạt động: Tổng kết báo cáo kết quả về việc thực thi test, chức năng nào hoàn thành/ chức năng chưa hoàn thành, lỗi còn nhiều ở chức năng nào, dev nào còn nhiều lỗi, lỗi có nghiêm trọng hay không.
- Đầu ra: các tài liệu Test report, Test results (final) 1. Các cấp độ kiểm thử Có 4 cấp độ kiểm thử phần mềm là: - Kiểm thử đơn vị (Unit Testing) là cấp độ kiểm thử cơ bản, thực hiện test từng module nhỏ trong hệ thống. Kiểm thử đơn vị có thể được thực hiện tách biệt với phần còn lại của hệ thống tùy thuộc vào mô hình vòng đời phát triển được chọn cho ứng dụng cụ thể đó. - Kiểm thử tích hợp (Integration Testing) có nghĩa là kiểm thử kết hợp.
Một dự án phần mềm được kết hợp bởi nhiều module riêng lẻ khác nhau và được code bởi nhiều lập trình viên khác nhau. Chính vì thế kiểm thử tích hợp là tích hợp kiểm tra các module riêng lẻ với nhau thành một nhóm - Kiểm thử hệ thống (System Testing) là thực hiện kiểm thử một hệ thống đã được tích hợp hoàn chỉnh để xác minh rằng nó đúng yêu cầu của phần mềm. Kiểm thử hệ thống nằm trong phạm vi kiểm thử hộp đen và do đó, không yêu cầu kiến thức về thiết kế bên trong của mã hoặc logic. 7 - Kiểm thử chấp nhận (Acceptance Testing): Sau khi kiểm tra hệ thống đã sửa tất cả hoặc hầu hết các lỗi, hệ thống sẽ được gửi đến người dùng hoặc khách hàng để kiểm tra chấp nhận.
Về cơ bản kiểm thử chấp nhận cũng khá giống kiểm thử hệ thống nhưng được thực hiện bởi khách hàng 1. Các kỹ thuật kiểm thử phần mềm - Kiểm thử hộp đen: là một phương pháp kiểm thử phần mềm được thực hiện mà không biết được cấu tạo bên trong của phần mềm, là cách mà các tester kiểm tra xem hệ thống như một chiếc hộp đen, không có cách nào nhìn thấy bên trong của cái hộp. Đối tượng kiểm thử có thể là 1 hàm chức năng, 1 module chức năng, 1 phân hệ chức năng. - Kiểm thử hộp trắng: là một phương pháp kiểm thử phần mềm trong đó tester biết về cấu trúc nội bộ / thiết kế.
Người kiểm tra chọn đầu vào để thực hiện các đường dẫn thông qua mã và xác định đầu ra thích hợp. Kiến thức lập trình và kiến thức thực hiện là rất cần thiết trong kiểm thử hộp trắng. Đối tượng được kiểm thử là 1 thành phần phần mềm, có thể là 1 hàm chức năng, 1 module chức năng, 1 phân hệ chức năng… - Kiểm thử hộp xám: là phương pháp kiểm thử phần mềm kết hợp giữa kiểm thử hộp đen và kiểm thử hộp trắng. Hộp xám trong kiểm thử phần mềm giống như bán trong suốt, nhìn vào sẽ thấy lớp vỏ bên ngoài và một phần cấu trúc bên trong.
Đối tượng kiểm thử: Cấu trúc mã, cách sử dụng ứng dụng, kiểm thử tích hợp 1. Kỹ thuật thiết kế ca kiểm thử - Kiểm thử tĩnh: Kiểm thử tĩnh là một kỹ thuật kiểm thử phần mềm để tìm kiếm lỗi trong code, thuật toán, tài liệu yêu cầu và tài liệu thiết kế mà không cần thực thi code. Kiểm thử tĩnh được ứng dụng ở giai đoạn đầu của quá trình phát triển phần mềm, giúp tránh lỗi sớm, dễ dàng xác định và giải quyết lỗi. Kiểm thử tĩnh cũng có thể rút kinh nghiệm từ các lỗi tìm được và cải tiến quy trình - Kiểm thử động: Kiểm thử động là một phương pháp kiểm thử phần mềm được sử dụng để kiểm tra hành vi động của mã phần mềm.
Mục đích chính của kiểm thử động là kiểm tra hành vi của phần mềm với các biến động hoặc các biến không phải là hằng số và tìm ra các khu vực yếu trong môi trường thời gian chạy phần mềm. Kiểm thử động là một trong các loại kiểm thử phần mềm, bao gồm cả kiểm thử tự động. KIỂM THỬ TỰ ĐỘNG 2. Khái niệm Kiểm thử tự động là quá trình sử dụng các công cụ và phần mềm để thực hiện các bước kiểm thử một cách tự động, thay vì thủ công bởi con người.
Các công cụ và kịch bản được thiết kế để tự động hóa việc thực hiện các bước kiểm thử, đánh giá kết quả và báo cáo kết quả kiểm thử. Mục tiêu và nguyên tắc khi kiểm thử tự động Mục tiêu: Tăng tốc độ thực hiện kiểm thử: Kiểm thử tự động thực hiện các trường hợp kiểm thử bằng mã, giúp thực hiện kiểm thử nhanh hơn nhiều so với kiểm thử thủ công. Tiết kiệm thời gian và công sức cho các nhà kiểm thử, cho phép họ tập trung vào các nhiệm vụ quan trọng hơn như phân tích kết quả và thiết kế trường hợp kiểm thử mới. Tăng tính nhất quán: Các kịch bản kiểm thử tự động đảm bảo rằng các bước kiểm thử được thực hiện một cách chính xác và nhất quán mỗi lần.
Loại bỏ sự sai sót do con người, dẫn đến kết quả kiểm thử đáng tin cậy hơn. Tăng độ chính xác: Công cụ kiểm thử tự động có khả năng so sánh kết quả thực tế với kết quả mong đợi một cách chính xác. Phát hiện lỗi sớm và chính xác hơn so với kiểm thử thủ công. Nguyên tắc: Tự động hóa mọi thứ có thể: Tự động hóa tất cả các công đoạn kiểm thử có thể, từ việc khởi chạy ứng dụng đến nhập dữ liệu và so sánh kết quả.
Giảm thiểu sự can thiệp của con người, giúp tăng tốc độ và hiệu quả của quá trình kiểm thử. Lặp lại: Chạy các kịch bản kiểm thử tự động nhiều lần để đảm bảo tính ổn định và độ tin cậy của ứng dụng. Phát hiện các lỗi tiềm ẩn có thể xảy ra sau nhiều lần sử dụng.