D3. Test Plan

Ideal Plan – What we would do if we had time

Unit Testing

  • Create unit tests for backend API endpoints and service methods
    • TS test file with Prisma, ideally all changes should reflect in the database as expected and the output should be deterministic.
    • Jest for the backend Express API
  • Create unit tests for Angular service methods

Integration and System Testing

  • Check UI features against functional and non-functional requirements

Testing Tools Used

  • Frontend – can use ng test – Jasmine testing framework, a widely used and open-source testing framework for any JavaScript application
  • Backend – find framework for express/prisma

Types of End Users

  1. Standard Users: medical students/staff
    1. Should be able to create an account and sign in/out
    2. Should be able to see assigned cases and their raw data, and be able to fill out a form using the case information and submit
    3. Should be able to see and validate cases they are assigned to validate
    4. Should also be able to see completed cases
  2. Administrative Users: members of CollectiveGood
    1. Should be able to create an account and sign in/out
    2. Should be able to use same functionalities as standard users (i.e. fill out their own cases)
    3. Should be able to see cases to assign
    4. Should be able to see and validate cases to validate, assign users to validate cases
    5. Should be able to see completed cases
    6. Should be able to assign users as admin

Performance, Reliability, etc. testing

  • Running concurrent mock frontend users to see how many users a server instance can handle
  • Measure average response times of different endpoints using network requests tool in web browser
  • Add hundreds of cases to see if database indexes were created reasonably
  • Over the course of a longer period of time (e.g. a week), measure the availability of endpoints
  • Determine the reliability of endpoints through statistical analysis

Acceptance Testing

  • Ask client for feedback on the product
    • Make alterations depending on specific needs – make sure the client is happy with the final product
  • Ensure everything integrates cleanly with the client’s desired technologies. 
  • Ensure the client is happy with all of the workflows

Realistic Plan – What we are actually going to test

Unit Testing – Prioritize backend API

  • Create unit tests for backend API endpoints and service methods using Jest
  • Should verify cases can be added to the database
  • Tests should verify information entered into forms gets stored into databases
  • Should verify creating or updating an account should store new user info in the database
  • Should verify logging out exits the user
  • Should verify users can be assigned cases
  • Should verify a user can be assigned admin role
  • Should verify a case review can be submitted
  • Should verify a case reviewer can be assigned to a case

Integration and System Testing

  • Check UI features against functional and non-functional requirements

Testing Tools Used

  • Jest – a widely used open-source JavaScript framework that integrates well with any JavaScript codebase and also has TypeScript support

Types of End Users

  1. Standard Users: medical students/staff
    1. Should be able to create an account and sign in/out
    2. Should be able to see assigned cases and their raw data, and be able to fill out a form using the case information and submit
    3. Should be able to see and validate cases they are assigned to validate
    4. Should also be able to see completed cases
  2. Administrative Users: members of CollectiveGood
    1. Should be able to create an account and sign in/out
    2. Should be able to use same functionalities as standard users (i.e. fill out their own cases)
    3. Should be able to see cases to assign
    4. Should be able to see and validate cases to validate, assign users to validate cases
    5. Should be able to see completed cases
    6. Should be able to assign users as admin

Performance and Reliability Testing

  • See how many calls of a representative endpoint can be done per second to get an estimated number of concurrent users.
  • Run for an extended period of time and determine uptime.
  • Test scenarios end to end to ensure all functionality
  • Test response time from end-to-end starting from UI to database using network request inspection in browser developer tools (both in development and production environment)

Acceptance Testing

  • Determine if the product conforms to the acceptance criteria of the client and make changes as needed.
  • This includes meeting with client and demoing all functionality as well as providing them with a hands-on experience of the application and its features.

Testing Workflows

  1. A user should be able to view assigned cases, open them, input data to the form, and submit assigned cases
  2. A user should be able to open cases available for review, create reviews, and submit them
  3. A user should be able to open the archive of completed cases, browse through completed cases, and view selected case reviews
  4. An admin should be able to see a list of users, assign them to cases, assign reviewers to the cases, and view completed cases