Currently, the only significant risk that could jeopardize the success of our project is just not doing the final assignments. To mitigate these risks, we are starting working on these assignments days early and with a clear focus on our project. In terms of making changes to the existing design of the system, we have continued with our current system and are in testing phase. This week, we have been focused on completing our testing phase and then started to work on final assignments.
Here are the specific unit test and overall system tests carried out on our system:
1. Computer Vision Detection Unit Tests: We tested our YOLO-based pothole detection model using different sample road images and videos. These tests ensured we are able to accurately detect potholes and assign severity on them against our own labeled data sets. We learned that our model performs better when the potholes are clearly visible and centered in our frame but confidence levels dropped when the lighting/texture was off.
2. GPS Metadata Parsing Tests: We solo tested the GPS data from both the Raspberry Pi and Notecard pipeline such that it was able to correctly attach GPS latitude and longitude to each pothole detection. What we learned is that GPS detection is a more fragile part of our system. When we tried testing inside, the module could not detect any location and then once we moved outside it was finally able to see a satellite and send coordinates.
3. Backend API Unit Tests: We tested the backend endpoints responsible for receiving pothole detection data and writing to Firestore. These tests checked whether the API correctly handled different types of requests. These tests were mainly for error handling. We learned that the backend needed strong validation because the edge device and cloud upload system may sometimes send incomplete or inconsistent data.
4. Scalability Tests: In order to test scalability for our Firebase DB, we utilized their built-in Firebase Local Emulator Suite to run 1000+ tests for simultaneous requests. What we found is that our Firebase DB can handle 9000 requests in around 2 minutes with a 100% success rate. The average duration for the Cloud Function upload was 236.87 ms.
5. Frontend Map Display Unit Tests: We tested whether pothole data retrieved from Firestore appeared correctly on the user-facing map. These tests checked that each pothole marker was placed at the correct GPS location and displayed the correct severity. We learned that the frontend needed to handle empty or incomplete data gracefully instead of assuming every pothole record was valid.
6. Overall System Testing: After unit testing each individual component, we did end-to-end field testing by taking a user and allowing them to drive around Pittsburgh and we found that the core pipeline worked. The computer vision model could detect potholes and then send all metadata to Firebase to be visualized on the frontend.

