Tôi đang làm việc trên một công cụ so sánh danh sách để hỗ trợ sắp xếp danh sách kết quả tìm kiếm không theo thứ tự theo yêu cầu rất cụ thể từ khách hàng của chúng tôi. Các yêu cầu yêu cầu một thuật toán phù hợp được xếp hạng với các quy tắc sau theo thứ tự quan trọng:
- Kết hợp chính xác về tên
- Tất cả các từ truy vấn tìm kiếm trong tên hoặc từ đồng nghĩa của kết quả
- Một số từ truy vấn tìm kiếm theo tên hoặc từ đồng nghĩa của kết quả (% giảm dần)
- Tất cả các từ của truy vấn tìm kiếm trong mô tả
- Một số từ của truy vấn tìm kiếm trong phần mô tả (% giảm dần)
- Ngày sửa đổi cuối cùng giảm dần
Sự lựa chọn thiết kế tự nhiên cho bộ so sánh này dường như là một thứ hạng được tính dựa trên sức mạnh của 2. Tổng các quy tắc ít quan trọng hơn không bao giờ có thể nhiều hơn một trận đấu tích cực theo quy tắc quan trọng cao hơn. Điều này đạt được bằng số điểm sau:
- 32
- 16
- 8 (Điểm hòa vốn thứ cấp dựa trên% giảm dần)
- 4
- 2 (Điểm hòa vốn thứ cấp dựa trên% giảm dần)
- 1
Theo tinh thần TDD, tôi quyết định bắt đầu với bài kiểm tra đơn vị của mình trước. Để có một trường hợp thử nghiệm cho mỗi kịch bản duy nhất sẽ có tối thiểu 63 trường hợp thử nghiệm duy nhất không xem xét các trường hợp thử nghiệm bổ sung cho logic ngắt kết nối thứ cấp theo quy tắc 3 và 5. Điều này có vẻ hống hách.
Các thử nghiệm thực tế sẽ thực sự ít hơn mặc dù. Dựa trên các quy tắc thực tế, các quy tắc nhất định đảm bảo rằng các quy tắc thấp hơn sẽ luôn đúng (Ví dụ: 'Tất cả các từ Truy vấn Tìm kiếm xuất hiện trong mô tả' thì quy tắc 'Một số từ Truy vấn Tìm kiếm xuất hiện trong mô tả' sẽ luôn đúng). Vẫn là mức độ nỗ lực trong việc viết ra từng trường hợp thử nghiệm này có đáng không? Đây có phải là mức độ kiểm tra thường được yêu cầu khi nói về phạm vi kiểm tra 100% trong TDD? Nếu không thì chiến lược thử nghiệm thay thế có thể chấp nhận là gì?