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

Tạo báo cáo thử nghiệm

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Cloud Firestore và Cơ sở dữ liệu thời gian thực đều dựa trên các ngôn ngữ quy tắc mạnh mẽ, ngắn gọn được tạo riêng để quản lý bảo mật thông tin và kiểm soát truy cập. Tuy nhiên, khi các quy tắc ngày càng dài và phức tạp hơn, bạn có thể cần một số trợ giúp để gỡ lỗi trong hành vi của chúng.

Trình mô phỏng Firebase bao gồm khả năng tạo báo cáo phạm vi quy tắc, vì vậy bạn có thể xem chính xác từng biểu thức con được đánh giá khi bạn tạo lại lỗi. Các báo cáo cũng cung cấp thông tin về tần suất mỗi trường hợp thử nghiệm sử dụng một quy tắc, như các kỹ thuật "phủ sóng" truyền thống.

Tạo báo cáo

Sau khi chạy một bộ thử nghiệm, bạn có thể truy cập các báo cáo phạm vi thử nghiệm cho biết từng quy tắc bảo mật của bạn đã được đánh giá như thế nào.

Để nhận các báo cáo, hãy truy vấn một điểm cuối được tiếp xúc trên trình giả lập khi nó đang chạy. Đối với phiên bản thân thiện với trình duyệt, hãy sử dụng URL sau:

Cloud Firestore

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

Cơ sở dữ liệu thời gian thực

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

Điều này phá vỡ các quy tắc của bạn thành các biểu thức và biểu thức con mà bạn có thể di chuột qua để biết thêm thông tin, bao gồm số lượng đánh giá và giá trị được trả về. Đối với phiên bản JSON thô của dữ liệu này, hãy bao gồm URL sau trong truy vấn của bạn:

Cloud Firestore

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

Cơ sở dữ liệu thời gian thực

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

Gỡ lỗi quy tắc mẫu

Để dễ dàng tạo báo cáo thử nghiệm, hãy sử dụng trình mô phỏng khởi động nhanh có sẵn trên GitHub dành cho Cloud FirestoreCơ sở dữ liệu thời gian thực . Những phần khởi động nhanh này hướng dẫn bạn cách cài đặt và khởi chạy trình giả lập đúng cách, sau đó tạo các bài kiểm tra mẫu từ một bộ quy tắc mẫu.

Hãy xem xét một ứng dụng mẫu sử dụng Cloud Firestore tính số lần người dùng nhấp vào một nút. Ứng dụng sử dụng các quy tắc sau:

Cloud Firestore

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

Để gỡ lỗi trong các quy tắc được hiển thị ở trên, hãy sử dụng thử nghiệm JavaScript mẫu sau:

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

Trình giả lập tạo một báo cáo có sẵn tại URL được lưu ý ở trên:

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

Báo cáo hiển thị các lỗi không xác định và giá trị rỗng sau:

Vấn đề với ví dụ cụ thể này là các quy tắc không phân biệt giữa việc tạo tài liệu và cập nhật tài liệu. Do đó, không được phép ghi nếu tài liệu không tồn tại và không thể tạo tài liệu vì nó không tồn tại. Việc phân biệt "ghi" thành hai thao tác cụ thể hơn - "tạo" và "cập nhật" - sẽ giải quyết được vấn đề.

Cloud 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;
     }
   }
 }
 

Báo cáo đã tạo cho biết tần suất từng quy tắc được sử dụng và những gì được trả lại.