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

توليد تقارير الاختبار

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

يعتمد كلا من Cloud Firestore و Realtime Database على لغات قواعد قوية وموجزة تم إنشاؤها خصيصًا للتحكم في أمان المعلومات والتحكم في الوصول. ومع ذلك ، نظرًا لأن القواعد تصبح أطول وأكثر تعقيدًا ، فقد تحتاج إلى بعض المساعدة في تصحيح الأخطاء في سلوكها.

تتضمن محاكيات Firebase القدرة على إنشاء تقارير تغطية القواعد ، حتى تتمكن من رؤية ما تم تقييمه بالضبط لكل تعبير فرعي عند إعادة إنتاج خطأ. توفر التقارير أيضًا معلومات حول مدى تكرار استخدام كل حالة اختبار لقاعدة ، مثل تقنيات "تغطية الخط" التقليدية.

قم بإنشاء تقرير

بعد إجراء مجموعة من الاختبارات ، يمكنك الوصول إلى تقارير التغطية الاختبارية التي توضح كيفية تقييم كل قاعدة من قواعد الأمان الخاصة بك.

للحصول على التقارير ، استعلم عن نقطة نهاية مكشوفة على المحاكي أثناء تشغيله. للحصول على إصدار متوافق مع المتصفح ، استخدم عنوان URL التالي:

سحابة Firestore

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

قاعدة بيانات الوقت الفعلي

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

يؤدي هذا إلى تقسيم القواعد إلى تعبيرات وتعبيرات فرعية يمكنك تمرير الماوس فوقها للحصول على مزيد من المعلومات ، بما في ذلك عدد التقييمات والقيم التي تم إرجاعها. للحصول على نسخة JSON الأولية من هذه البيانات ، قم بتضمين عنوان URL التالي في استعلامك:

سحابة Firestore

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

قاعدة بيانات الوقت الفعلي

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

قواعد المثال التصحيح

لإنشاء تقرير اختبار بسهولة ، استخدم برنامج Quickstarts للمحاكي المتاح على GitHub لـ Cloud Firestore و Realtime Database . ترشدك هذه الخطوات السريعة من خلال التثبيت والتهيئة الصحيحة للمحاكيات ، ثم إنشاء اختبارات عينة من مجموعة أمثلة من القواعد.

ضع في اعتبارك تطبيقًا نموذجيًا يستخدم Cloud Firestore يحسب عدد المرات التي ينقر فيها المستخدمون على زر. يستخدم التطبيق القواعد التالية:

سحابة Firestore

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

لتصحيح الأخطاء في القواعد الموضحة أعلاه ، استخدم نموذج اختبار JavaScript التالي:

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

ينشئ المحاكي تقريرًا متاحًا على عنوان URL المذكور أعلاه:

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

يعرض التقرير أخطاء القيمة الخالية وغير المعرفة التالية:

تكمن المشكلة في هذا المثال المحدد في أن القواعد لا تفرق بين إنشاء المستند وتحديث المستند. وبالتالي ، لا يُسمح بالكتابة إذا لم يكن المستند موجودًا ، ولا يمكن إنشاء المستند لأنه غير موجود. إن التفريق بين "الكتابة" في عمليتين أكثر تحديدًا - "إنشاء" و "تحديث" - يحل المشكلة.

سحابة 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;
     }
   }
 }
 

يُظهر التقرير الذي تم إنشاؤه مدى تكرار استخدام كل قاعدة وما تم إرجاعه.