Kurgusal bir öneri servisi, modelden dönen ürünleri skorlarına göre sıralıyor. Mevcut test öneri listesinin boş olmadığını doğruladığı için model değiştiğinde en uygun ürünün geriye düşmesini yakalayamıyor:
def test_recommendations_are_returned():
result = recommend(user_id=7, limit=3)
assert result
assert len(result) <= 3
Bu test teknik olarak geçerli olsa da modelin sıralama kalitesindeki bir gerilemeyi kanıtlamaz. Örneğin model, daha düşük skorlu bir ürünü ilk sıraya taşısa bile test başarılı olur.
Asgari düzeltme ve AI incelemesi
Küçük ve sabit bir test verisiyle beklenen sıralama ile iş kuralları açıkça doğrulanabilir:
def test_recommendations_keep_expected_ranking(fake_model):
fake_model.scores.return_value = {
"urun-a": 0.95,
"urun-b": 0.72,
"urun-c": 0.41,
}
result = recommend(user_id=7, limit=3)
assert result == ["urun-a", "urun-b", "urun-c"]
assert len(result) == len(set(result))
Gerçek model kullanılan testlerde kesin sıralama yerine kabul edilebilir bir sözleşme tercih edilebilir. Örneğin ilk sıradaki ürünün beklenen aday kümesinde bulunması, kullanılamayan ürünlerin dönmemesi ve skor farkı anlamlı değilse eşitlik kuralının belirlenmesi ayrı ayrı test edilmelidir. Rastgelelik varsa sabit tohum kullanmak veya modeli sahte bir uygulamayla değiştirmek testin tekrarlanabilirliğini artırır.
AI ile inceleme isterken modelden şu üç noktayı ayrı raporlaması istenebilir: testin hangi model davranışını kanıtladığı, hangi regresyonları kaçırdığı ve hangi varsayımların test verisine gömüldüğü. Ancak AI, ürün sırasını her zaman kesin kabul edilmesi gereken bir kural sanabilir. İş gereksinimi sıralamayı garanti etmiyorsa katı bir liste karşılaştırması yanlış pozitif üretir.
Doğrulama adımları
- Beklenen sıralama ve eşit skor davranışını ürün gereksinimiyle karşılaştırın.
- Model skorlarından birini bilerek düşürüp testin başarısız olduğunu doğrulayın.
- Kullanılamayan veya yinelenen aday ekleyerek iş kuralı testlerini çalıştırın.
- Aynı sabit verilerle testi birkaç kez çalıştırıp sonucun değişmediğini kontrol edin.
