20 KiB
Maya Image Plane Node Plugin - Test Plan
1. Introduction
This test plan outlines the testing strategy, coverage, and approach for the Maya Image Plane Node plugin. The plugin is designed to decode MP4 video files using FFmpeg and display video frames in Maya's Viewport 2.0 with various features including frame rate synchronization, user-adjustable playback rate, post-effects (crop, resize, flip), and frame caching.
2. Test Objectives
- Verify that the plugin loads correctly in Maya 2023
- Validate FFmpeg integration for MP4 video decoding
- Confirm proper frame display in Viewport 2.0
- Test frame rate synchronization with Maya's timeline
- Verify user-adjustable playback rate functionality
- Test post-effects processing (crop, resize, flip)
- Validate frame caching mechanism for performance
- Ensure proper module packaging and installation
- Verify error handling and edge cases
- Confirm thread safety and performance requirements
3. Scope of Testing
In Scope
- Plugin loading and initialization in Maya 2023
- FFmpeg video decoding functionality
- MPxNode implementation and attribute handling
- MHWRender::MPxDrawOverride viewport integration
- Frame rate synchronization logic
- User-adjustable playback rate controls
- Post-effects processing (crop, resize, flip)
- Frame caching mechanism
- Module packaging and deployment
- Error handling and validation
- Performance and memory usage
Out of Scope
- Audio playback functionality (future feature)
- Advanced post-effects beyond crop/resize/flip
- Integration with external video editing tools
- Support for video formats beyond MP4
- Network streaming capabilities
4. Test Approach
4.1 Test Levels
- Unit Testing: Test individual components (FFmpeg decoder, frame cache, post-effects processor)
- Integration Testing: Test interactions between components (node ↔ decoder, node ↔ viewport, decoder ↔ cache)
- System Testing: Test complete plugin functionality in Maya 2023 environment
- Performance Testing: Measure frame decoding rates, memory usage, cache efficiency
- Regression Testing: Ensure new changes don't break existing functionality
4.2 Test Techniques
- Black-box testing for functional requirements
- White-box testing for internal component validation
- Boundary value analysis for attribute ranges
- State transition testing for playback states
- Error guessing for error handling validation
- Exploratory testing for usability and edge cases
5. Test Coverage Areas
5.1 Plugin Loading and Initialization
- Plugin loads successfully in Maya Plugin Manager
- Node type appears in Node Editor
- Default attribute values are correct
- Node can be created and deleted without errors
- Plugin unloads cleanly
5.2 FFmpeg Integration
- Successfully opens various MP4 files
- Decodes frames correctly (RGB/RGBA output)
- Handles different video codecs (H.264, H.265, etc.)
- Reports accurate video properties (width, height, frame rate, duration)
- Handles corrupted/unreadable files gracefully
- Properly releases FFmpeg resources on close
5.3 Maya Node Implementation
- All attributes are correctly defined and accessible
- Attribute affects relationships work correctly
- Node computation updates outputs based on inputs
- Error states are properly reported via attributes
- Thread-safe communication between decoding and main threads
- Proper cleanup of resources in destructor
5.4 Viewport 2.0 Integration
- Video frames display correctly in viewport
- Proper texture updates when frames change
- Correct handling of RGB and RGBA formats
- Appropriate bounding box calculation
- Viewport selection works correctly
- Fallback rendering when no frame data available
- Efficient texture updates (sub-data when possible)
5.5 Frame Rate Synchronization
- Synchronizes with Maya's timeline when useMayaFrameRate=true
- Uses video's native frame rate when useMayaFrameRate=false
- Correctly applies playbackRate multiplier
- Handles looping and non-looping modes
- Manages frame rate changes in Maya's timeline
- Provides smooth playback across different frame rates
- Correct startTime handling when playback resets
5.6 User-Adjustable Playback Rate
- playbackRate attribute functions correctly (0.01 to 10.0)
- Default value is 1.0 (normal speed)
- Attribute is keyable and storable
- Extreme values are clamped appropriately
- Smooth acceleration/deceleration when rate changes
- Reverse playback (negative rates) if implemented
5.7 Post-Effects Processing
- Crop functionality works correctly with boundary clamping
- Resize functionality scales frames appropriately
- Flip functionality mirrors frames horizontally/vertically
- Combined effects work in correct order (crop → resize → flip)
- Performance impact is minimized
- Fallback to unprocessed frame when processing fails
- Proper handling of different pixel formats
5.8 Frame Caching
- Frames are cached to avoid re-decoding
- Random access to any frame works correctly
- Cache replacement policy (LRU) functions correctly
- Memory limits are respected
- Thread-safe access for concurrent operations
- Cache invalidation when video file changes
- Prefetching of future frames works
- Cache statistics are accurate and accessible
5.9 Module Packaging
- Module file (.mod) is generated correctly
- Plugin binary (.mll) installs to correct location
- FFmpeg DLLs are included/bundled appropriately
- Plugin loads correctly from module path
- Version information is correct
- Debug and release builds work correctly
- Uninstallation works cleanly
5.10 Error Handling and Validation
- Invalid video file paths are handled gracefully
- Unsupported codecs produce appropriate error messages
- Memory allocation failures are handled
- OpenGL errors are caught and reported
- Attribute validation prevents invalid values
- Errors are logged to Maya's script editor
- Graceful degradation when components fail
5.11 Performance and Memory
- Frame decoding meets real-time playback requirements
- Memory usage stays within reasonable limits
- Cache hit ratio is measured and optimized
- Texture updates are efficient
- No memory leaks in extended playback
- CPU usage is reasonable during playback
6. Test Environment Requirements
6.1 Hardware
- Windows 10 or later (64-bit)
- Minimum 8GB RAM (16GB recommended)
- DirectX 11 compatible graphics card
- Multi-core processor (4+ cores recommended)
6.2 Software
- Maya 2023 (tested with specific build)
- Visual Studio 2017 (matching Maya 2023's compiler)
- FFmpeg 4.0 or later (tested with 4.4)
- CMake 3.14+
- Sample MP4 test videos (various codecs, resolutions, frame rates)
- Corrupted MP4 files for error testing
- Edge case videos (very high/low resolution, extreme frame rates)
6.3 Test Tools
- Maya's Script Editor for error logging
- Performance monitoring tools (Task Manager, Process Explorer)
- Memory profiling tools (if available)
- Video analysis tools (MediaInfo, VLC)
- Screen capture tools for visual verification
7. Test Deliverables
- Test Plan Document (this document)
- Test Case Specifications - Detailed test cases for each coverage area
- Test Data - Sample video files, corrupted files, edge case videos
- Test Scripts - Automated test scripts where applicable
- Test Execution Reports - Results from test execution
- Defect Reports - Documented issues found during testing
- Test Summary Report - Overall assessment of plugin quality
- Traceability Matrix - Mapping requirements to test cases
8. Test Schedule
8.1 Phase 1: Unit Testing (Weeks 1-2)
- FFmpeg decoder component tests
- Frame cache component tests
- Post-effects processor tests
- Time management component tests
8.2 Phase 2: Integration Testing (Weeks 3-4)
- Node ↔ decoder integration
- Node ↔ viewport integration
- Decoder ↔ cache integration
- Attribute affects validation
8.3 Phase 3: System Testing (Weeks 5-6)
- Complete plugin functionality in Maya
- End-to-end workflow testing
- Performance and stress testing
- Module packaging validation
8.4 Phase 4: Regression Testing (Ongoing)
- Retesting after bug fixes
- Validation of new features
- Continuous integration testing
9. Entry and Exit Criteria
9.1 Entry Criteria
- Code complete for the component/feature being tested
- Unit tests passing for new code
- Build successful without errors
- Test environment prepared and verified
- Test data available
9.2 Exit Criteria
- All planned test cases executed
- Critical and high severity defects resolved
- No critical functionality blocked by defects
- Performance meets requirements
- Test summary report completed and approved
10. Risks and Mitigations
10.1 Technical Risks
-
Risk: FFmpeg compatibility issues with Maya's compiler Mitigation: Use vcpkg or pre-built FFmpeg binaries matching VS 2017
-
Risk: OpenGL context issues in Viewport 2.0 Mitigation: Follow MHWRender::MPxDrawOverride guidelines strictly
-
Risk: Threading issues between decoding and main thread Mitigation: Use proven thread-safe patterns (mutexes, condition variables)
-
Risk: Memory leaks in frame caching Mitigation: Proper reference counting with AVFrame objects
-
Risk: Performance not meeting real-time requirements Mitigation: Optimize caching, use efficient scaling algorithms, profile regularly
10.2 Schedule Risks
-
Risk: Dependencies taking longer than expected Mitigation: Parallel development where possible, regular integration
-
Risk: Complex bug resolution taking time Mitigation: Early and frequent testing, root cause analysis focus
11. Approvals
| Role | Name | Signature | Date |
|---|---|---|---|
| QA Lead | [To be filled] | ||
| Development Lead | [To be filled] | ||
| Project Manager | [To be filled] |
This test plan is a living document and will be updated as the project progresses and new information becomes available.
1. Introduction
This test plan outlines the testing strategy, coverage, and approach for the Maya Image Plane Node plugin. The plugin is designed to decode MP4 video files using FFmpeg and display video frames in Maya's Viewport 2.0 with various features including frame rate synchronization, user-adjustable playback rate, post-effects (crop, resize, flip), and frame caching.
2. Test Objectives
- Verify that the plugin loads correctly in Maya 2023
- Validate FFmpeg integration for MP4 video decoding
- Confirm proper frame display in Viewport 2.0
- Test frame rate synchronization with Maya's timeline
- Verify user-adjustable playback rate functionality
- Test post-effects processing (crop, resize, flip)
- Validate frame caching mechanism for performance
- Ensure proper module packaging and installation
- Verify error handling and edge cases
- Confirm thread safety and performance requirements
3. Scope of Testing
In Scope
- Plugin loading and initialization in Maya 2023
- FFmpeg video decoding functionality
- MPxNode implementation and attribute handling
- MHWRender::MPxDrawOverride viewport integration
- Frame rate synchronization logic
- User-adjustable playback rate controls
- Post-effects processing (crop, resize, flip)
- Frame caching mechanism
- Module packaging and deployment
- Error handling and validation
- Performance and memory usage
Out of Scope
- Audio playback functionality (future feature)
- Advanced post-effects beyond crop/resize/flip
- Integration with external video editing tools
- Support for video formats beyond MP4
- Network streaming capabilities
4. Test Approach
4.1 Test Levels
- Unit Testing: Test individual components (FFmpeg decoder, frame cache, post-effects processor)
- Integration Testing: Test interactions between components (node ↔ decoder, node ↔ viewport, decoder ↔ cache)
- System Testing: Test complete plugin functionality in Maya 2023 environment
- Performance Testing: Measure frame decoding rates, memory usage, cache efficiency
- Regression Testing: Ensure new changes don't break existing functionality
4.2 Test Techniques
- Black-box testing for functional requirements
- White-box testing for internal component validation
- Boundary value analysis for attribute ranges
- State transition testing for playback states
- Error guessing for error handling validation
- Exploratory testing for usability and edge cases
5. Test Coverage Areas
5.1 Plugin Loading and Initialization
- Plugin loads successfully in Maya Plugin Manager
- Node type appears in Node Editor
- Default attribute values are correct
- Node can be created and deleted without errors
- Plugin unloads cleanly
5.2 FFmpeg Integration
- Successfully opens various MP4 files
- Decodes frames correctly (RGB/RGBA output)
- Handles different video codecs (H.264, H.265, etc.)
- Reports accurate video properties (width, height, frame rate, duration)
- Handles corrupted/unreadable files gracefully
- Properly releases FFmpeg resources on close
5.3 Maya Node Implementation
- All attributes are correctly defined and accessible
- Attribute affects relationships work correctly
- Node computation updates outputs based on inputs
- Error states are properly reported via attributes
- Thread-safe communication between decoding and main threads
- Proper cleanup of resources in destructor
5.4 Viewport 2.0 Integration
- Video frames display correctly in viewport
- Proper texture updates when frames change
- Correct handling of RGB and RGBA formats
- Appropriate bounding box calculation
- Viewport selection works correctly
- Fallback rendering when no frame data available
- Efficient texture updates (sub-data when possible)
5.5 Frame Rate Synchronization
- Synchronizes with Maya's timeline when useMayaFrameRate=true
- Uses video's native frame rate when useMayaFrameRate=false
- Correctly applies playbackRate multiplier
- Handles looping and non-looping modes
- Manages frame rate changes in Maya's timeline
- Provides smooth playback across different frame rates
- Correct startTime handling when playback resets
5.6 User-Adjustable Playback Rate
- playbackRate attribute functions correctly (0.01 to 10.0)
- Default value is 1.0 (normal speed)
- Attribute is keyable and storable
- Extreme values are clamped appropriately
- Smooth acceleration/deceleration when rate changes
- Reverse playback (negative rates) if implemented
5.7 Post-Effects Processing
- Crop functionality works correctly with boundary clamping
- Resize functionality scales frames appropriately
- Flip functionality mirrors frames horizontally/vertically
- Combined effects work in correct order (crop → resize → flip)
- Performance impact is minimized
- Fallback to unprocessed frame when processing fails
- Proper handling of different pixel formats
5.8 Frame Caching
- Frames are cached to avoid re-decoding
- Random access to any frame works correctly
- Cache replacement policy (LRU) functions correctly
- Memory limits are respected
- Thread-safe access for concurrent operations
- Cache invalidation when video file changes
- Prefetching of future frames works
- Cache statistics are accurate and accessible
5.9 Module Packaging
- Module file (.mod) is generated correctly
- Plugin binary (.mll) installs to correct location
- FFmpeg DLLs are included/bundled appropriately
- Plugin loads correctly from module path
- Version information is correct
- Debug and release builds work correctly
- Uninstallation works cleanly
5.10 Error Handling and Validation
- Invalid video file paths are handled gracefully
- Unsupported codecs produce appropriate error messages
- Memory allocation failures are handled
- OpenGL errors are caught and reported
- Attribute validation prevents invalid values
- Errors are logged to Maya's script editor
- Graceful degradation when components fail
5.11 Performance and Memory
- Frame decoding meets real-time playback requirements
- Memory usage stays within reasonable limits
- Cache hit ratio is measured and optimized
- Texture updates are efficient
- No memory leaks in extended playback
- CPU usage is reasonable during playback
6. Test Environment Requirements
6.1 Hardware
- Windows 10 or later (64-bit)
- Minimum 8GB RAM (16GB recommended)
- DirectX 11 compatible graphics card
- Multi-core processor (4+ cores recommended)
6.2 Software
- Maya 2023 (tested with specific build)
- Visual Studio 2017 (matching Maya 2023's compiler)
- FFmpeg 4.0 or later (tested with 4.4)
- CMake 3.14+
- Sample MP4 test videos (various codecs, resolutions, frame rates)
- Corrupted MP4 files for error testing
- Edge case videos (very high/low resolution, extreme frame rates)
6.3 Test Tools
- Maya's Script Editor for error logging
- Performance monitoring tools (Task Manager, Process Explorer)
- Memory profiling tools (if available)
- Video analysis tools (MediaInfo, VLC)
- Screen capture tools for visual verification
7. Test Deliverables
- Test Plan Document (this document)
- Test Case Specifications - Detailed test cases for each coverage area
- Test Data - Sample video files, corrupted files, edge case videos
- Test Scripts - Automated test scripts where applicable
- Test Execution Reports - Results from test execution
- Defect Reports - Documented issues found during testing
- Test Summary Report - Overall assessment of plugin quality
- Traceability Matrix - Mapping requirements to test cases
8. Test Schedule
8.1 Phase 1: Unit Testing (Weeks 1-2)
- FFmpeg decoder component tests
- Frame cache component tests
- Post-effects processor tests
- Time management component tests
8.2 Phase 2: Integration Testing (Weeks 3-4)
- Node ↔ decoder integration
- Node ↔ viewport integration
- Decoder ↔ cache integration
- Attribute affects validation
8.3 Phase 3: System Testing (Weeks 5-6)
- Complete plugin functionality in Maya
- End-to-end workflow testing
- Performance and stress testing
- Module packaging validation
8.4 Phase 4: Regression Testing (Ongoing)
- Retesting after bug fixes
- Validation of new features
- Continuous integration testing
9. Entry and Exit Criteria
9.1 Entry Criteria
- Code complete for the component/feature being tested
- Unit tests passing for new code
- Build successful without errors
- Test environment prepared and verified
- Test data available
9.2 Exit Criteria
- All planned test cases executed
- Critical and high severity defects resolved
- No critical functionality blocked by defects
- Performance meets requirements
- Test summary report completed and approved
10. Risks and Mitigations
10.1 Technical Risks
-
Risk: FFmpeg compatibility issues with Maya's compiler Mitigation: Use vcpkg or pre-built FFmpeg binaries matching VS 2017
-
Risk: OpenGL context issues in Viewport 2.0 Mitigation: Follow MHWRender::MPxDrawOverride guidelines strictly
-
Risk: Threading issues between decoding and main thread Mitigation: Use proven thread-safe patterns (mutexes, condition variables)
-
Risk: Memory leaks in frame caching Mitigation: Proper reference counting with AVFrame objects
-
Risk: Performance not meeting real-time requirements Mitigation: Optimize caching, use efficient scaling algorithms, profile regularly
10.2 Schedule Risks
-
Risk: Dependencies taking longer than expected Mitigation: Parallel development where possible, regular integration
-
Risk: Complex bug resolution taking time Mitigation: Early and frequent testing, root cause analysis focus
11. Approvals
| Role | Name | Signature | Date |
|---|---|---|---|
| QA Lead | [To be filled] | ||
| Development Lead | [To be filled] | ||
| Project Manager | [To be filled] |
This test plan is a living document and will be updated as the project progresses and new information becomes available.