CYBERSOFT
Đăng nhập

Thiết kế ca kiểm thử từ Use Case cho hệ thống đặt vé máy bay: luồng chính, thay thế, ngoại lệ (có trắc nghiệm)

Chuyên công nghệTMĐTNâng caoChuẩn SEO
🗓 1 tháng trước19 phút đọc·👁 590 lượt xem👤 366 người đọc

Bài nâng cao: học Use Case Testing qua use case 'Đặt vé máy bay' của hệ thống SkyBooking. Xác định tác nhân, tiền/hậu điều kiện, sinh ca từ basic/alternate/exception flow, kết hợp dữ liệu biên, 2 tình huống lỗi thật (bán trùng ghế, hoàn tiền sai), nhiều mockup (đặc tả use case, sơ đồ luồng, Jira, kanban, dashboard), FAQ và trắc nghiệm 5 câu. Chuẩn SEO, dẫn về khóa Tester CyberSoft.

1. Tóm tắt nhanh & màn hình bạn sẽ test

⭐ TL;DR — Kiểm thử theo Use Case (Use Case Testing) là kỹ thuật sinh ca kiểm thử trực tiếp từ đặc tả use case: tác nhân (actor), tiền điều kiện, hậu điều kiện, luồng chính (basic flow) và các luồng thay thế/ngoại lệ (alternate/exception flow). Bài này bám use case 'Đặt vé máy bay' của hệ thống SkyBooking (hãng hàng không SkyViet): bạn học cách đọc đặc tả use case, sinh ca từ từng luồng, kết hợp với dữ liệu biên, và tránh bẫy chỉ test luồng chính rồi bỏ sót lỗi bán trùng ghế hay hoàn tiền sai. Nhiều mockup thật, 2 tình huống thực tế và trắc nghiệm cuối bài.

Khi bạn mới học viết test case, phản xạ tự nhiên là chỉ test 'chuyện gì xảy ra khi mọi thứ suôn sẻ'. Nhưng một use case đầy đủ không chỉ có MỘT con đường — nó có một luồng chính (basic flow) mô tả kịch bản thành công điển hình, và nhiều luồng thay thế (alternate flow, vẫn dẫn tới thành công nhưng theo cách khác) cùng luồng ngoại lệ (exception flow, dẫn tới thất bại có kiểm soát). Use case testing chính là kỹ thuật đọc đặc tả này và sinh ra một bộ ca kiểm thử bao phủ đủ mọi nhánh, thay vì chỉ một đường thẳng. Chúng ta sẽ thực hành trên use case 'Đặt vé máy bay' của hệ thống SkyBooking — nơi bỏ sót một luồng ngoại lệ có thể khiến khách hàng mất tiền hoặc hãng bay bán trùng một chỗ ngồi.

🔒 skybooking.vn/dat-ve/SGN-HAN-VN1546 SkyBooking · Đặt vé Chuyến bay VN1546 · SGN → HAN · 07:15Ghế đã chọn 12A · Extra Legroom (+150.000đ)Họ tên hành khách NGUYEN VAN ASố hộ chiếu/CMND 079203011234Tổng tiền (giá vé + phụ phí + thuế) 1.850.000 ₫Xác nhận & Thanh toán LUỒNG THAY THẾ A1: phụ phí ghế Extra Legroom NGOẠI LỆ E1: ghế có thể bị đặt trước ngay lúc xác nhận thanh toán
Màn hình test: đặt vé SkyBooking, khoanh vùng luồng thay thế (phụ phí ghế) và luồng ngoại lệ (hết ghế khi thanh toán)
📖 Use Case: một mô tả có cấu trúc về cách một tác nhân (actor) tương tác với hệ thống để đạt một mục tiêu cụ thể, gồm tiền điều kiện, hậu điều kiện, luồng chính và các luồng thay thế/ngoại lệ.

2. Thành phần của một Use Case: tác nhân, tiền/hậu điều kiện, luồng chính

Use case 'Đặt vé máy bay' của SkyBooking có ba tác nhân: Hành khách (chủ động thực hiện use case), Cổng thanh toán (hệ thống ngoài, xác thực và trừ tiền), và Dịch vụ quản lý ghế (hệ thống nội bộ khóa/nhả ghế theo thời gian thực). Tiền điều kiện (precondition) là điều kiện PHẢI đúng trước khi use case bắt đầu: hành khách đã đăng nhập, đã tìm kiếm và chọn một chuyến bay còn ghế trống. Hậu điều kiện (postcondition) là trạng thái hệ thống PHẢI đạt được sau khi use case kết thúc — và quan trọng, hậu điều kiện cần được đặc tả cho CẢ kết quả thành công lẫn thất bại, không chỉ trường hợp suôn sẻ.

Đặc tả Use Case: Đặt vé máy bay (SkyBooking) Loại luồngDiễn giải ngắn gọnKết quả mong đợiBasic FlowBFChọn ghế trống → nhập thông tin hành khách → thanh toán thành côngTạo vé + mã đặt chỗ (PNR), khóa ghế, gửi email xác nhậnAlternateA1Chọn ghế có phụ phí (Extra Legroom)Cộng đúng phụ phí vào tổng tiền trước khi thanh toánAlternateA2Áp mã giảm giá hợp lệTrừ đúng số tiền giảm giá, tổng tiền không âmAlternateA3Thanh toán bằng ví điện tử thay vì thẻVé vẫn được tạo, định dạng mã PNR không đổiExceptionE1Ghế vừa chọn bị hành khách khác đặt trước lúc xác nhậnChặn giao dịch, hoàn tiền nếu đã trừ, yêu cầu chọn ghế khácExceptionE2Cổng thanh toán từ chối hoặc hết thời gian chờKhông tạo vé, không khóa ghế, thông báo lỗi rõ ràngExceptionE3Hành khách thoát trang giữa chừng trước khi thanh toánGhế giữ tạm (hold) rồi tự nhả sau 15 phútExceptionE4Nhập số hộ chiếu/CMND sai định dạngChặn tại bước nhập, yêu cầu sửa lại, không cho sang bước kếBasic flow là ĐƯỜNG ĐI CHÍNH; alternate flow vẫn tới đích nhưng khác đường; exception flow là nhánh thất bại có kiểm soát.
Bảng đặc tả đầy đủ use case 'Đặt vé máy bay': basic flow, alternate flow (A1–A3), exception flow (E1–E4)

Luồng chính (basic flow) của use case này là: chọn chuyến bay và ghế → nhập thông tin hành khách → hệ thống tính tổng tiền → hành khách xác nhận thanh toán → cổng thanh toán trả về thành công → hệ thống tạo vé, khóa ghế, gửi email xác nhận kèm mã đặt chỗ (PNR). Đây là 'đường đi mặc định' mà mọi luồng thay thế và luồng ngoại lệ đều RẼ RA từ một bước cụ thể trong đó — nắm chắc luồng chính giúp bạn xác định chính xác điểm rẽ nhánh khi phân tích các luồng còn lại.

📖 Tiền điều kiện / Hậu điều kiện: tiền điều kiện là điều kiện bắt buộc đúng TRƯỚC khi use case chạy; hậu điều kiện là trạng thái hệ thống bắt buộc đúng SAU khi use case kết thúc, dù thành công hay thất bại.

3. Vì sao Use Case Testing đặc biệt quan trọng ở hệ thống đặt vé máy bay

Hệ thống đặt vé máy bay là nơi hội tụ ba đặc điểm khiến các lỗi ngoài luồng chính trở nên nguy hiểm bất thường. Thứ nhất, có TÀI NGUYÊN GIỚI HẠN dùng chung (ghế trên chuyến bay) mà nhiều hành khách có thể tranh chấp cùng lúc — đây chính là nguồn gốc của các lỗi điều kiện đua (race condition) như bán trùng ghế. Thứ hai, có NHIỀU TÁC NHÂN phối hợp trong cùng một use case (hành khách, cổng thanh toán, dịch vụ quản lý ghế), và một lỗi đồng bộ giữa các tác nhân này (ví dụ: đã trừ tiền nhưng chưa khóa ghế kịp) có thể để lại trạng thái dữ liệu không nhất quán rất khó phát hiện qua kiểm thử hời hợt.

Thứ ba, mỗi bước trong luồng đều CHẠM TIỀN THẬT — giá vé, phụ phí ghế, mã giảm giá, phí hủy vé — nên một lỗi ở nhánh ít được để ý (như luồng hủy vé hoàn tiền) có thể gây thất thoát tài chính lặp lại trên hàng nghìn giao dịch trước khi bị phát hiện. Vì ba lý do này, một use case tưởng đơn giản như 'Đặt vé máy bay' thực chất chứa nhiều nhánh rủi ro cao hơn hẳn so với một form nhập liệu thông thường, và xứng đáng được phân tích kỹ bằng use case testing thay vì chỉ lướt qua luồng chính rồi coi là 'đã test đủ'.

Đây cũng là lý do use case testing thường được xem là kỹ thuật 'trưởng thành' hơn hẳn so với việc chỉ viết test case theo từng trường dữ liệu: nó buộc tester tư duy theo TRÌNH TỰ TƯƠNG TÁC thay vì từng ô nhập rời rạc, và chính trình tự đó — chứ không phải giá trị nhập vào — mới là nơi các lỗi nghiêm trọng nhất của hệ thống đặt vé thường ẩn náu.

4. Chuẩn bị: xác định actor, tiền/hậu điều kiện & luồng chính

Trước khi sinh bất kỳ ca kiểm thử nào, bạn cần một đặc tả use case đủ rõ ràng. Nếu tài liệu nghiệp vụ chưa viết sẵn dưới dạng use case, việc đầu tiên của tester là TỰ DỰNG lại nó từ yêu cầu rời rạc và phỏng vấn nhanh BA/PO.

▶ Bước 1: Liệt kê mọi tác nhân tham gia use case (Hành khách, Cổng thanh toán, Dịch vụ quản lý ghế...) và vai trò cụ thể của từng tác nhân.

▶ Bước 2: Viết rõ tiền điều kiện (trạng thái bắt buộc trước khi bắt đầu) và hậu điều kiện thành công/thất bại (trạng thái bắt buộc sau khi kết thúc).

🔒

Nội dung bị khoá

Bạn đang xem bản xem trước. Đăng nhập để mở khoá toàn bộ bài viết và tất cả tài liệu Tester/QA.

Đã xem 24% nội dung
  • Đọc trọn vẹn mọi bài viết
  • Lưu bài & ghi chú cá nhân
  • Theo dõi tiến độ đã đọc
  • Luyện phỏng vấn, ISTQB, Mock
Đăng nhập để đọc tiếp

Chưa có mã? Lấy mã qua Fanpage / Zalo CyberSoft.

0

💬 Bình luận (0)

Bạn có thể đọc mọi bình luận. Đăng nhập để bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!