Test Plan

Test Plan for PRP Management System

1. Unit Testing:

Objective: Verify the functionality of individual components (functions, methods, classes) in isolation.

What we would do if we had all the time: Develop comprehensive unit tests for each function and method in the codebase, covering all edge cases and error conditions.

What we are actually going to test: Utilize automated unit tests using Jest integrated with the development environment (e.g. VScode, ). Include regression testing as new features are developed.

2. Integration and System Testing:

Objective: Verify the interaction and integration of different modules/components within the system, including testing with the user interface.

What we would do if we had all the time: Conduct thorough integration and system testing in various environments, including local development environments, staging environments, and production-like environments.

What we are actually going to test: Perform integration and system testing with the user interface using automated testing frameworks such as Selenium. Focus on critical user journeys and functionalities.

3. Tools Used:

Unit Testing: Jest integrated with the development environment.

Integration Testing: Selenium for automated UI testing.

End-to-End Testing: Postman for API testing.

Error Monitoring: Sentry for real-time error tracking and monitoring.

4. Types of End Users:

Admin/Faculty Members: Responsible for managing exam schedules, creating announcements, and monitoring student progress.

PhD Intending Students: Use the system to register for exams, submit required documents, and receive exam notifications.

5. Performance and Reliability Testing:

Objective: Evaluate the system’s performance under normal and peak loads, as well as its reliability in handling user requests.

What we would do if we had all the time: Conduct load testing using tools like Apache JMeter to simulate high traffic scenarios and identify potential bottlenecks.

What we are actually going to test: Perform basic performance testing in the development environment to ensure reasonable response times and system stability.

6. Acceptance Testing:

Objective: Validate that the system meets the specified requirements and is ready for deployment.

What we would do if we had all the time: Collaborate with end users to define acceptance criteria and conduct thorough acceptance testing in a staging environment.

What we are actually going to test: Perform acceptance testing with key stakeholders, including the professor, faculty members, and at least one PhD intending student or a stand-in, in a controlled staging environment. Use real data and scenarios to validate system functionality.

7. Test Environments:

Development Environment: Local development environments with the latest versions of development tools (e.g., Node.js, MongoDB, React).

Staging Environment: Mirror of the production environment for acceptance testing before deployment.

Production Environment: Live deployment environment accessible to end users.

8. Testing Schedule:

Unit Testing: Conducted continuously during development.

Integration and System Testing: Conducted during the development cycle and prior to release.

Acceptance Testing: Scheduled before deployment in collaboration with end users.

9. Test Deliverables:

Automated unit test suites (Jest).

Test reports documenting test results, including any identified issues or bugs.

Test data used for manual and automated testing, along with expected outcomes.

Instructions for running automated test suites and reproducing manual test scenarios.

Step-by-Step Testing Plan

  1. Unit Testing
    • Set up the development environment with VS Code.
    • Run existing unit tests using Jest to verify individual functions and methods.
    • Identify any failing tests and prioritize fixing them.
  2. Admin-Side Testing
    • Explore the PRP Management System UI as an admin/faculty member.
    • Manually test critical functionalities:
      • Create exam schedules.
      • Post announcements.
      • Monitor student progress.
    • Document any issues or unexpected behaviors encountered.
  3. Student-Side Testing
    • Access the student-facing features of the web app.
    • Register for exams and submit required documents.
    • Verify notifications and deadlines are displayed correctly.
    • Submit test data through the UI and confirm expected outcomes.
  4. Feedback and Validation (Throughout)
    • Collaborate with team members to gather feedback on UI/UX, functionality, and performance.
    • Keep a log of observations, issues, and improvement suggestions.
  5. Demonstration to Professor
    • Arrange a session with the professor to showcase the admin functionalities.
    • Allow the professor to guide us through different tasks and actions to ensure it can handle all necessary functions.
    • Gather feedback on usability, clarity, and feature completeness.