Comprehensive testing procedures for the Life in Between XR application.
- Testing Overview
- Test Scenes
- Unit Testing
- Integration Testing
- Device Testing
- AR Testing
- Performance Testing
- Test Checklist
- Unit Tests: Individual components
- Integration Tests: Component interactions
- System Tests: Full application flow
- Device Tests: Real device testing
- AR Tests: ARCore functionality
- Performance Tests: Performance benchmarks
- Unity Editor: Initial testing
- Development Build: Early device testing
- Release Build: Final testing before deployment
Purpose: Main menu and navigation
Test Cases:
- Menu loads correctly
- All buttons functional
- Navigation to other scenes works
- UI elements display correctly
- Animations play smoothly
How to Test:
- Open scene in Unity Editor
- Press Play
- Click through all menu options
- Verify navigation works
Purpose: Autocomplete search functionality
Test Cases:
- Search field accepts input
- Autocomplete suggestions appear
- Suggestions filter correctly
- Selection works
- Results display properly
- Line filtering works
Test Data:
- Test with various search terms
- Test with no results
- Test with special characters
- Test with long queries
How to Test:
- Open scene
- Select a transit line
- Type in search field
- Verify autocomplete appears
- Select a suggestion
- Verify result
Purpose: 3D map rendering
Test Cases:
- 3D map loads
- Buildings render correctly
- Materials applied correctly
- Camera controls work
- Performance acceptable
- Map data loads
How to Test:
- Open scene
- Press Play
- Verify map displays
- Test camera movement
- Check frame rate
- Verify building data
Purpose: Demo/prototype scene
Test Cases:
- Scene loads
- All assets present
- Interactions work
- Performance acceptable
Test individual scripts in isolation:
// Test line selection
[Test]
public void SelectLine_SelectsCorrectLine()
{
// Arrange
var selector = new LineSelector();
var line1 = new Line { name = "Red Line" };
var line2 = new Line { name = "Blue Line" };
selector.LinesList = new List<Line> { line1, line2 };
// Act
selector.SelectLine("Red Line");
// Assert
Assert.IsTrue(line1.selected);
Assert.IsFalse(line2.selected);
}// Test UI visibility
[Test]
public void Update_HidesSelectorWhenSearchActive()
{
// Arrange
var uiManager = new UIManager();
uiManager.searchDropdown = new GameObject();
uiManager.selectorBar = new GameObject();
// Act
uiManager.searchDropdown.SetActive(true);
uiManager.Update();
// Assert
Assert.IsFalse(uiManager.selectorBar.activeSelf);
}Use Unity Test Framework:
- Window > General > Test Runner
- Create test assemblies
- Write test scripts
- Run tests
Test how components work together:
-
Line Selection + Search:
- Select line
- Verify search filters by line
- Change line
- Verify search updates
-
Search + 3D Map:
- Search for location
- Verify map updates
- Verify location highlighted
-
UI Manager + Components:
- Open search
- Verify selector hides
- Close search
- Verify selector shows
Test full scene flows:
- Menu → Search Scene
- Menu → Map Scene
- Search → Map navigation
- Back navigation
Before testing on device:
-
Build Configuration:
- Development build for debugging
- Enable script debugging
- Enable profiler connection
-
Device Setup:
- Enable Developer Options
- Enable USB Debugging
- Install ARCore
- Ensure sufficient storage
- App installs successfully
- No installation errors
- App appears in app drawer
- Icon displays correctly
- App launches without crash
- Splash screen displays
- Main menu loads
- No errors in logcat
- AR features work
- Search works
- 3D map displays
- Line selection works
- Bookmarks work
- Frame rate acceptable (30+ FPS)
- No stuttering
- Memory usage reasonable
- Battery usage acceptable
- No overheating
- No internet connection
- Poor AR tracking
- Low storage space
- Background/foreground
- App killed and restarted
Test on various devices:
| Device | Android Version | ARCore | Status |
|---|---|---|---|
| Google Pixel 6 | Android 12 | Yes | Tested |
| Samsung Galaxy S21 | Android 11 | Yes | Tested |
| Older Device | Android 8 | No | N/A |
- Planes detected on flat surfaces
- Planes update correctly
- Multiple planes supported
- Plane removal works
- Tracking stable
- No drift
- Handles movement well
- Recovers from tracking loss
Test in various lighting:
- Bright daylight
- Indoor lighting
- Low light
- Mixed lighting
Test on different surfaces:
- Wood table
- Carpet floor
- Tile floor
- Avoid: mirrors, glass, blank walls
-
Environment Setup:
- Well-lit area
- Textured surfaces
- Sufficient space
-
Launch App:
- Grant camera permission
- Wait for AR session start
-
Test Plane Detection:
- Move device slowly
- Point at flat surface
- Verify plane appears
-
Test Tracking:
- Move device around
- Verify tracking stable
- Test rapid movement
-
Test Recovery:
- Cover camera briefly
- Uncover camera
- Verify tracking recovers
- Target: 30+ FPS minimum, 60 FPS ideal
- Tool: Unity Profiler
- Method: Profile during typical usage
- Tool: Unity Profiler
- Check: Memory leaks
- Monitor: Over time, during extended use
- Method: Extended use testing
- Monitor: Battery drain rate
- Compare: With similar apps
- Monitor: API call frequency
- Check: Data usage
- Test: Offline functionality
- All features work
- No crashes
- No console errors
- UI responsive
- ARCore works
- Plane detection works
- Tracking stable
- Works in various conditions
- Frame rate acceptable
- Memory usage reasonable
- No memory leaks
- Battery usage acceptable
- Works on target Android versions
- Works on various devices
- Handles different screen sizes
- Works with/without internet
- No internet connection
- Poor AR conditions
- Low storage
- Background/foreground
- App killed
After each change:
- Run full test suite
- Test affected features
- Test related features
- Verify no regressions
Consider implementing:
- Unit test automation
- Integration test automation
- UI test automation
- Performance test automation
Document test results:
- Test date
- Device tested
- Android version
- Test results
- Issues found
- Screenshots/videos
When bugs found:
- Document steps to reproduce
- Capture logs
- Take screenshots
- Note device/environment
- Create GitHub issue
Last Updated: 2024