Hoang_Sai wrote:Em có một bài toán tính số testcase như thế này mà ko biết cách làm, mong mọi người chỉ giúp em:
Bài toán yêu cầu tính toán tỉ lệ chiết khấu cho khách mua vé máy bay.
Input gồm:
- - Tuổi hành khách (5-120)
- Ngày bay >= ngày hiện tại
- Thành phần cá nhân (VIP, bình thường)
Điều kiện giảm giá:
- - Giảm giá cho những hành khách <=15 tuổi hoặc >= 65 tuổi là 50%.
- Giảm giá cho những hành khách đặt vé trước một tháng là 20%.
- Áp dụng cho những hành khách đạt 1 trong 2 tiêu chí trên. Giảm giá cho khách VIP là 10%.
Tính số testcase basic phải kiểm thử cho bài toán này.
Trước khi trả lời câu hỏi này, mình sẽ hỏi lại người ra đề (người hỏi mình bài tập này) một số câu hỏi như sau:
- 1. Có được phép áp dụng nhiều điều kiện giảm giá cùng lúc không? Ví dụ: Khách hàng A 65 tuổi và đặt vé trước 1 tháng rưỡi và ông ta là khách VIP. Trường hợp này sẽ được giảm bao nhiêu %
2. "Trước một tháng" là dựa vào 30 ngày hay là so với "ngày này tháng trước" nghĩa là cùng ngày mà khác tháng.
Sau khi có câu trả lời, thì nó sẽ quyết định "kết quả mong đợi của một số test case.
Đây là cách mình tính dựa vào
phân vùng tương đương và
phân tích giá trị biên
Input 1:
--------------5--------------15---------------------64------------120-------------
---invalid----|----50%------|----bình thường-----|----50%------|---invalid--
Các giá trị cần test: 8
- + 4 tuổi => invalid (báo lỗi tuổi không hợp lệ)
+ 5 tuổi => giảm 50%
+ 15 tuổi => giảm 50%
+ 16 tuổi => không giảm
+ 64 tuổi => không giảm
+ 65 tuổi => giảm 50%
+ 120 tuổi => giảm 50%
+ 121 tuổi => invalid
Input 2:
---------------trước 0 ngày---------trước 1 tháng------
---invalid----|-----bình thường----|--20%---------
Các giá trị cần test: 5
Giả sử:
- + Ngày hiện tại là 19-11-2014
+ Ngày hiện tại là ngày mua vé (tính toán giảm giá ngay lúc mua)
Vậy mình có những case sau:
- + ngày bay: 18-11 => không hợp lệ (< ngày hiện tại)
+ ngày bay: 19-11 => không giảm giá (= ngày hiện tại)
+ ngày bay: 18-12 => không giảm giá (mua trước < 1 tháng)
+ ngày bay: 19-12 => 20% (mua trước = 1 tháng)
+ ngày bay: 20-12 => 20% (mua trước > 1 tháng)
Input 3: 2
- + Khách Thường => không giảm
+ Khách VIP => giảm thêm 10%
Dựa vào pairwise mình có 8 x 5 = 40 case cần test.
Đây là trả lời cho câu hỏi dựa vào các kỹ thuật thiết kế test case (lý thuyết).
Trên thực tế mình có thể dựa vào các giá trị trên để pair mà không cần phải sử dụng order-2 => số test case thực sự được test sẽ ít hơn.