“Bug” – nỗi ám ảnh trong phát triển phần mềm, nhưng lại là “đồng minh” giúp Tester phát huy vai trò. Để kiểm soát lỗi hiệu quả, việc viết testcase đúng và đủ là yếu tố then chốt. Bài viết dưới đây, FPT Polytechnic Hà Nội sẽ giới thiệu 3 dạng testcase phổ biến, giúp nâng cao chất lượng kiểm thử trong thực tế.

Testcase là gì?
Testcase (trường hợp kiểm thử) là tập hợp các bước kiểm tra cụ thể được thiết kế để đánh giá một tính năng hoặc hành vi của hệ thống phần mềm. Mỗi testcase thường bao gồm: mục tiêu kiểm thử, dữ liệu đầu vào, các bước thực hiện, kết quả mong đợi và kết quả thực tế.
Testcase dựa trên Tài liệu đặc tả (Spec/Document)
Đây là dạng testcase cơ bản và được sử dụng phổ biến nhất, đặc biệt ở các giai đoạn đầu của quá trình kiểm thử. Tester sẽ căn cứ vào tài liệu yêu cầu (Requirement Document) hoặc tài liệu đặc tả (Specification) để xây dựng các bước kiểm thử.

Mục tiêu:
- Kiểm tra phần mềm có hoạt động đúng theo yêu cầu thiết kế ban đầu không
- Đảm bảo các tính năng cốt lõi không bị sai lệch
Lưu ý: Dạng testcase này giúp phát hiện các lỗi sai so với tài liệu gốc, nhưng có thể bỏ sót các tình huống thực tế không được mô tả trong tài liệu.
Testcase dựa trên Hành vi người dùng (User Flow)
Khác với cách tiếp cận theo tài liệu, dạng testcase này đặt người kiểm thử vào vị trí của người dùng cuối – những người không đọc spec, không biết kỹ thuật, nhưng sử dụng phần mềm mỗi ngày.

Phương pháp:
- Kiểm thử theo luồng sử dụng tự nhiên, từ màn hình này đến màn hình khác
- Không bó buộc vào logic kỹ thuật, mà tập trung vào trải nghiệm người dùng
Ví dụ thực tiễn:
Một hệ thống yêu cầu người dùng nhập tuổi ≤ 90 và có số CMND để đăng ký BHXH. Với luồng người dùng, sẽ phát sinh tình huống: trẻ dưới 14 tuổi chưa có CMND nhưng vẫn cần đăng ký. Nếu chỉ viết testcase theo tài liệu, tester sẽ bỏ sót case này. Nhưng nếu theo logic sử dụng thực tế, đây là tình huống cần được xử lý.
Testcase theo luồng phức tạp (Complicated Flow)
Đây là bước kiểm thử nâng cao, được thực hiện sau khi đã hoàn tất hai dạng testcase trên. Tester sẽ khai thác hệ thống theo các tình huống bất thường, nhiều hướng rẽ nhánh hoặc thao tác không tuần tự.

Mục tiêu:
- Tìm ra lỗi tiềm ẩn mà người dùng nâng cao hoặc tình huống không dự đoán trước có thể gặp phải
- Đánh giá độ ổn định và khả năng xử lý của hệ thống trong điều kiện bất thường
Ví dụ:
- Tạo sự kiện với 5 bước: Tester đi ngược từ bước 4 về bước 2, rồi quay lại bước 5 để xem dữ liệu có thay đổi không
- Kết bạn bằng sponsor code: Sau khi hoàn tất, quay lại màn hình trước xem hệ thống phản hồi ra sao? Cho nhập lại hay không? Nếu tắt trình duyệt và mở lại, hệ thống sẽ xử lý ra sao?
Viết testcase không đơn thuần là một công việc lặp đi lặp lại, mà là quá trình tư duy và sáng tạo. Ba dạng testcase – theo tài liệu, theo luồng người dùng và theo luồng phức tạp – chính là ba tầng kiểm thử giúp đảm bảo sản phẩm vừa đúng, vừa dễ dùng, vừa bền vững trước các tình huống bất ngờ.
Trong thực tế, hệ thống càng lớn thì khả năng xuất hiện các lỗi phức tạp càng cao. Vì vậy, người làm kiểm thử cần không ngừng rèn luyện kỹ năng phân tích, khả năng mô phỏng hành vi người dùng, và cả sự “tò mò kỹ thuật” để phát hiện những lỗi ẩn sâu.
Giảng viên Nguyễn Thị Thùy
Bộ môn Ứng dụng phần mềm
FPT Polytechnic Hà Nội

