Ideal Testing Plan
1. Unit Testing
Objective: Verify the correctness of individual components and ensure each module behaves as expected.
Approach: Manual testing for screen pages and automated testing for backend functionalities.
Scope
-
Frontend Components:
- Input forms (e.g., preference submission forms, student profile creation).
- UI validation for form fields.
- Navigation flows (e.g., switching between views for professors and students).
-
Backend Services:
- Data validation methods (e.g., input sanitization for preferences and profiles).
- Matching algorithm functions (e.g., constraint evaluation and preference weighting).
- Authentication and role-based access modules.
Tools
- Manual UI verification.
- Automated tests using Flutter Test Suite.
2. Functional Testing
Objective: Ensure that the application meets the functional requirements as described.
Approach: Combine manual and automated tests to validate key functionalities.
Scope
-
Manual Testing:
- Test each screen and user flow across user types (professors, students, admins).
- Verify the functionality of forms, navigation, and review/decision interfaces.
-
Automated Testing:
- Matching algorithm scenarios with diverse profiles.
- Data management tasks, including account creation and reporting.
- Authentication workflows for secure logins and role-based access control.
Tools
- Flutter Test Suite for automated functional tests.
- Browser developer tools for manual UI checks.
3. Integration Testing
Objective: Validate the interaction and data flow between system modules.
Approach: Both manual and automated testing methods based on real-world scenarios.
Scope
-
Matching Algorithm:
- Match students to positions based on previous year’s data.
- Test multiple combinations of constraints, preferences, and qualifications.
Tools
- Manual testing with Postman for Firebase functions.
- Manual validation of reports and matched results.
This structured approach ensures comprehensive testing of all system components to deliver a reliable RA Matching solution.
Realistic Testing Plan
1. Unit Testing
Objective: Verify the correctness of individual components and ensure each module behaves as expected.
Approach: Conduct thorough manual testing to validate individual modules and their functionalities.
Scope
-
Frontend Components:
- Validate input forms for correct behavior and handling of edge cases (e.g., invalid input, empty fields).
- Ensure UI validation provides appropriate feedback for errors and successful operations.
- Verify navigation flows for seamless transitions between user views (e.g., professors, students, admins).
- Confirm responsiveness across various screen sizes and devices.
-
Backend Services:
- Manually test data validation methods, ensuring all input data is sanitized and stored correctly.
- Validate matching algorithm calculations by creating test cases with predefined outcomes and verifying the results.
- Confirm authentication workflows (e.g., secure login, role-based access) by simulating various user scenarios.
2. Functional Testing
Objective: Ensure the application meets the functional requirements as described in the specifications.
Approach: Use manual testing techniques to validate core functionalities and simulate user interactions.
Scope
-
User Flows:
- Test each screen and user flow across all user types (professors, students, admins).
- Verify submission forms, navigation, and feedback mechanisms for correctness and usability.
- Check user interface consistency and ensure all elements are intuitive and accessible.
-
Matching Algorithm:
- Create real-world test cases to simulate diverse student and faculty preferences.
- Manually validate matched results against expected outputs to confirm adherence to constraints.
3. Integration Testing
Objective: Validate the interaction and data flow between different system modules to ensure smooth functionality.
Approach: Perform manual testing based on real-world scenarios and interactions between modules.
Scope
-
Module Interactions:
- Simulate end-to-end workflows, such as preference submission to final assignment, to validate data flow.
- Test error handling and data integrity during module interactions (e.g., form submissions, matching outcomes).
-
Reports and Outputs:
- Manually verify the accuracy of generated reports and matched results by cross-referencing with input data.
- Validate the clarity and comprehensibility of system-generated reports and notifications.
Tools
- Browser developer tools for debugging and validating UI components.
- Manual validation using spreadsheet tools for cross-checking matching results.
This realistic, manual-only approach ensures thorough validation of all components and workflows, delivering a reliable RA Matching solution tailored to the project's needs.