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
- What tool? Can use Jasmine testing as specified in Angular documentation: Angular – Testing services
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
- Standard Users: medical students/staff
- Should be able to create an account and sign in/out
- 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
- Should be able to see and validate cases they are assigned to validate
- Should also be able to see completed cases
- Administrative Users: members of CollectiveGood
- Should be able to create an account and sign in/out
- Should be able to use same functionalities as standard users (i.e. fill out their own cases)
- Should be able to see cases to assign
- Should be able to see and validate cases to validate, assign users to validate cases
- Should be able to see completed cases
- 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
- Standard Users: medical students/staff
- Should be able to create an account and sign in/out
- 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
- Should be able to see and validate cases they are assigned to validate
- Should also be able to see completed cases
- Administrative Users: members of CollectiveGood
- Should be able to create an account and sign in/out
- Should be able to use same functionalities as standard users (i.e. fill out their own cases)
- Should be able to see cases to assign
- Should be able to see and validate cases to validate, assign users to validate cases
- Should be able to see completed cases
- 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
- A user should be able to view assigned cases, open them, input data to the form, and submit assigned cases
- A user should be able to open cases available for review, create reviews, and submit them
- A user should be able to open the archive of completed cases, browse through completed cases, and view selected case reviews
- An admin should be able to see a list of users, assign them to cases, assign reviewers to the cases, and view completed cases