Müşterimizden gelen çok özel gereksinimlere göre arama sonuçlarının sırasız bir listesini sıralamaya yardımcı olmak için bir liste karşılaştırıcısı üzerinde çalışıyorum. Gereklilikler, önem sırasına göre aşağıdaki kurallara göre sıralanmış bir alaka düzeyi algoritması gerektirir:
- Adla tam eşleşme
- Arama sorgusu adındaki tüm kelimeler veya sonucun eş anlamlısı
- Arama sorgusunun adı veya sonucun eş anlamlısı olan bazı kelimeleri (% azalan)
- Açıklamasında arama sorgusunun tüm kelimeleri
- Açıklamasında arama sorgusundan bazı kelimeler (% azalan)
- Son değiştirilme tarihi azalan
Bu karşılaştırıcı için doğal tasarım seçimi, 2 gücüne dayanan puanlı bir sıralama gibi görünüyordu. Daha az önemli kuralların toplamı, yüksek önem kuralındaki hiçbir zaman pozitif bir eşleşmeden daha fazla olamaz. Bu, aşağıdaki puanla elde edilir:
- 32
- 16
- 8 (% inişe göre ikincil tie-breaker puanı)
- 4
- 2 (% inişe göre ikincil tie-breaker puanı)
- 1
TDD ruhunda önce birim testlerimle başlamaya karar verdim. Her bir benzersiz senaryo için bir test senaryosuna sahip olmak, kural 3 ve 5'teki ikincil kravat kırıcı mantığı için ek test senaryolarını dikkate almayan en az 63 benzersiz test vakasında olacaktır.
Gerçek testler aslında daha az olacaktır. Gerçek kurallara bağlı olarak, bazı kurallar daha düşük kuralların her zaman doğru olmasını sağlar (Örn. 'Tüm Arama Sorgusu sözcükleri açıklamada göründüğünde' kuralı 'Kural' Bazı Arama Sorgusu kelimeleri açıklamada görünür 'her zaman doğrudur). Bu test senaryolarının her birini yazma çabası hala buna değer mi? Bu, TDD'de% 100 test kapsamı hakkında konuşurken genellikle çağrılan test seviyesi midir? Değilse, kabul edilebilir bir alternatif test stratejisi ne olurdu?