Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Test raporları oluşturun

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Cloud Firestore ve Realtime Database, bilgi güvenliğini ve erişim kontrolünü yönetmek için özel olarak oluşturulmuş güçlü, özlü kural dillerine dayanır. Ancak, kurallar uzadıkça ve karmaşıklaştıkça, davranışlarındaki hataları ayıklamak için biraz yardıma ihtiyacınız olabilir.

Firebase Emülatörleri, kural kapsamı raporları oluşturma yeteneği içerir, böylece bir hatayı yeniden oluşturduğunuzda her bir alt ifadenin tam olarak neye göre değerlendirildiğini görebilirsiniz. Raporlar ayrıca, geleneksel "satır kapsamı" teknikleri gibi, her bir test senaryosunun bir kuralı ne sıklıkta kullandığı hakkında bilgi sağlar.

Rapor oluştur

Bir dizi testi çalıştırdıktan sonra, güvenlik kurallarınızdan her birinin nasıl değerlendirildiğini gösteren test kapsamı raporlarına erişebilirsiniz.

Raporları almak için öykünücü çalışırken açıkta kalan bir uç noktayı sorgulayın. Tarayıcı dostu bir sürüm için aşağıdaki URL'yi kullanın:

Bulut Firestore

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html
 

Gerçek Zamanlı Veritabanı

http://localhost:9000/.inspect/coverage?ns=<database_name>
 

Bu, kurallarınızı, değerlendirme sayısı ve döndürülen değerler dahil olmak üzere daha fazla bilgi için fareyle üzerine getirebileceğiniz ifadelere ve alt ifadelere ayırır. Bu verilerin ham JSON sürümü için sorgunuza aşağıdaki URL'yi ekleyin:

Bulut Firestore

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage
 

Gerçek Zamanlı Veritabanı

http://localhost:9000/.inspect/coverage.json?ns=<database_name>
 

Hata ayıklama örnek kuralları

Kolayca bir test raporu oluşturmak için GitHub for Cloud Firestore ve Realtime Database'de bulunan öykünücü hızlı başlangıçlarını kullanın. Bu hızlı başlangıçlar, öykünücüleri düzgün şekilde yükleme ve başlatma, ardından örnek bir kurallar kümesinden örnek testler oluşturma konusunda size yol gösterir.

Kullanıcıların bir düğmeyi kaç kez tıkladığını sayan Cloud Firestore kullanan örnek bir uygulamayı ele alalım. Uygulama aşağıdaki kuralları kullanır:

Bulut Firestore

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow write: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

Yukarıda gösterilen kurallardaki hataları ayıklamak için aşağıdaki örnek JavaScript testini kullanın:

const counter0 = db.collection("counters").doc("0");
await firebase.assertSucceeds(counter0.set({value: 0}));

Öykünücü, yukarıda belirtilen URL'de bulunan bir rapor oluşturur:

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html

Rapor, aşağıdaki tanımsız ve boş değerli hataları gösterir:

Bu özel örnekle ilgili sorun, kuralların belge oluşturma ve belgeyi güncelleme arasında ayrım yapmamasıdır. Sonuç olarak, belge yoksa yazmaya izin verilmez ve belge olmadığı için oluşturulamaz. "Yazma"yı iki daha spesifik işleme - "oluştur" ve "güncelle" olarak ayırmak sorunu çözer.

Bulut Firestore

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow create: if request.resource.data.value == 0;
       allow update: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

Oluşturulan rapor, her bir kuralın ne sıklıkta kullanıldığını ve neyin döndürüldüğünü gösterir.