KIỂM THỬ TRONG SCRUM
KIỂM THỬ TRONG SCRUM
GIỚI THIỆU CHƯƠNG
Kiểm thử (Testing) trong Scrum không phải là giai đoạn riêng biệt cuối cùng, mà là hoạt động xuyên suốt mỗi Sprint. Scrum thúc đẩy kiểm thử sớm, liên tục, tự động nếu có thể. Chương này giúp sinh viên hiểu vai trò của kiểm thử, các loại kiểm thử thường dùng, cách viết test case và thực hành kiểm thử phù hợp với nhóm phát triển Agile.
KIỂM THỬ TRONG MÔ HÌNH TRUYỀN THỐNG VS SCRUM
| Tiêu chí | Mô hình truyền thống (Waterfall) |
Scrum/Agile |
| Vị trí kiểm thử | Cuối quá trình | Trong từng Sprint |
| Người kiểm thử | Chuyên viên QA | Dev + QA + Tester |
| Thời điểm kiểm thử | Sau khi lập trình xong | Kiểm thử sớm & liên tục |
| Mục tiêu | Tìm lỗi | Ngăn lỗi xuất hiện từ đầu |
CÁC LOẠI KIỂM THỬ TRONG SCRUM
1. Unit Test (Kiểm thử đơn vị)
o Do lập trình viên viết, kiểm tra từng hàm/chức năng nhỏ.
2. Integration Test (Kiểm thử tích hợp)
o Kiểm tra sự phối hợp giữa các module.
3. System Test (Kiểm thử hệ thống)
o Đảm bảo toàn hệ thống hoạt động như mong đợi.
4. Acceptance Test (Kiểm thử chấp nhận)
o Dựa trên tiêu chí chấp nhận của User Story, do nhóm và PO thực
hiện.
5. Regression Test (Kiểm thử hồi quy)
o Đảm bảo chức năng cũ không bị lỗi sau khi thêm tính năng mới.
KIỂM THỬ VÀ DEFINITION OF DONE (DOD)
Trong Scrum, một chức năng chỉ được coi là "xong" khi thỏa mãn DoD, thường bao gồm:
Đã code & build thành công
Đã test đơn vị
Đã test chấp nhận
Không còn bug nghiêm trọng
Được review code và merge
Kiểm thử là điều kiện bắt buộc để hoàn thành mỗi mục trong Sprint.
VIẾT KỊCH BẢN KIỂM THỬ (TEST CASE)
Mỗi Test Case nên có:
ID: Mã định danh
Tên: Tên chức năng kiểm thử
Mục đích
Dữ liệu đầu vào
Các bước thực hiện
Kết quả mong đợi
Trạng thái kiểm thử (PASSED/FAILED)
Ví dụ:
| TC001 | Đăng nhập thành công |
Nhập đúng email và mật khẩu |
Trang chủ hiển thị |
QUY TRÌNH KIỂM THỬ TRONG MỘT SPRINT
1. Từ User Story → xác định tiêu chí chấp nhận
2. Viết test case tương ứng
3. Lập trình chức năng
4. Thực hiện kiểm thử (manual/auto)
5. Ghi nhận kết quả, sửa lỗi nếu cần
6. Cập nhật trạng thái trong Backlog
KIỂM THỬ TỰ ĐỘNG (AUTOMATED TESTING)
Tăng tốc độ kiểm thử
Giảm sai sót do con người
Thích hợp cho kiểm thử lặp lại (regression)
Công cụ phổ biến:
Unit test: JUnit (Java), Pytest (Python), Mocha (Node.js)
UI test: Selenium, Cypress
API test: Postman, SoapUI
CI/CD: GitHub Actions, GitLab CI, Jenkins
Trong dự án sinh viên, có thể chỉ cần manual test hoặc test tự động ở mức cơ bản.
VAI TRÒ CỦA CÁC THÀNH VIÊN TRONG KIỂM THỬ
| Vai trò | Trách nhiệm kiểm thử |
| Developer | Viết Unit Test, kiểm tra chức năng mình lập trình |
| Product Owner | Xác nhận tiêu chí chấp nhận đã đạt (Acceptance) |
| Tester (nếu có) | Viết test case, kiểm thử thủ công hoặc tự động |
| Scrum Master | Đảm bảo test là một phần trong Definition of Done |
QUẢN LÝ LỖI (BUG TRACKING)
Các nội dung cần ghi:
Mô tả lỗi
Bước tái hiện lỗi
Mức độ nghiêm trọng (High, Medium, Low)
Ai chịu trách nhiệm sửa
Trạng thái lỗi: Open, In Progress, Fixed, Verified, Closed
Công cụ dùng để quản lý bug:
Jira, Trello, ClickUp, GitHub Issues, Google Sheets
THỬ NGHIỆM THỰC TẾ TRONG DỰ ÁN SINH VIÊN
Gợi ý:
Mỗi thành viên đảm nhận một phần kiểm thử
Có thể chia theo loại: test giao diện, test logic, test database
Tạo bảng Google Sheet chung để ghi kết quả test case
Định kỳ test lại sau mỗi Sprint (regression)
CÁCH VIẾT TEST CASE TỪ USER STORY
User Story:
Là một sinh viên, tôi muốn đổi mật khẩu để bảo vệ tài khoản.
Test Case đề xuất:
| Mã | Mô tả | Đầu vào | Kết quả mong đợi |
| TC01 | Đổi mật khẩu thành công |
Mật khẩu cũ đúng, mật khẩu mới hợp lệ |
Thông báo thành công |
| TC02 | Mật khẩu mới quá ngắn |
Nhập < 8 ký tự | Báo lỗi |
| TC03 | Nhập sai mật khẩu cũ |
Nhập sai mật khẩu | Báo lỗi |
LƯU Ý KHI KIỂM THỬ GIAO DIỆN (UI)
Kiểm tra căn lề, font chữ, màu sắc
Giao diện có tương thích điện thoại không?
Nút bấm, form nhập liệu hoạt động đúng?
Có thông báo lỗi rõ ràng?
LƯU Ý KHI KIỂM THỬ CƠ SỞ DỮ LIỆU
Dữ liệu có được lưu đúng vào bảng không?
Trường khóa chính/khóa ngoại có hoạt động đúng?
Có phát hiện lỗi trùng khóa?
CÂU HỎI ÔN TẬP
1. Trong Scrum, kiểm thử được thực hiện ở giai đoạn nào?
2. Test Case gồm những thành phần nào?
3. So sánh Unit Test và Acceptance Test?
4. Mối quan hệ giữa kiểm thử và Definition of Done?
5. Khi nào nên dùng kiểm thử tự động?
BÀI TẬP THỰC HÀNH
Bài tập 1: Chọn một User Story bất kỳ của nhóm bạn, viết tối thiểu 3 test
case kèm dữ liệu và kết quả mong đợi.
Bài tập 2: Tạo bảng theo dõi lỗi bằng Google Sheet hoặc Trello cho một
Sprint.
Bài tập 3: Cài đặt một bộ Unit Test đơn giản (ví dụ dùng assert trong Python
hoặc JUnit trong Java) cho 1 hàm kiểm tra số nguyên tố.
TÀI LIỆU THAM KHẢO
1. Agile Testing, Lisa Crispin & Janet Gregory
2. Test-Driven Development: By Example, Kent Beck
3. Tài liệu nội bộ môn “Kiểm thử phần mềm” – khoa CNTT
4. Scrum Guide – www.scrumguides.org
5. Video hướng dẫn viết Test Case – YouTube