-
Notifications
You must be signed in to change notification settings - Fork 0
Testing Plan and Continuous Integration
After writing a feature or user story, the developer who wrote it will be in charge of writing the tests regarding that issue. If it was a full stack issue, they will be in charge of writing both the frontend and backend tests, along with some end to end tests if applicable.
When it comes to testing the frontend, we will be using a unit testing framework known as Jest. Jest comes pre-packaged with our frontend, as it integrates seamlessly with TypeScript and React. Jest will allow us to be able to efficiently and easily test the frontend to ensure a high quality UI. Jest also allows for mocking, which can prove to be very useful when an application contains a lot of objects and API calls. Our backend is will be a REST based API, therefor the mock functionality will tie in perfectly with the frontend testing.
End-to-End testing will be done using Cypress. Cypress is an end to end testing tool that simulates a users interaction within the application, allowing developers to make sure the user flow is consistent throughout the application. Combining Cypress with Istanbul will also allow us to generate code coverage for the end to end tests as well, so we can keep track of what code is being reached in the user flow.
The unit testing for the Spring backend will be done using JUnit. Our entire team has used JUnit before, as it is the golden standard of Java unit testing. JUnit combined with Spring Boot's integrated testing system will allow us to also perform integration testing to ensure all of our REST API's are providing the correct output in an efficient manor.
For our CI/CD pipeline, we opted to use GitHub Actions. This tool is built directly into the version control system we are using (GitHub) and thus integrates seamlessly with our development lifecycle. The pipeline will be able to run unit tests on every pull request to ensure that new code being added is not capable of breaking the application. It will also be able to run static code analysis using SonarQube to ensure that not only does the code work, but it is well formulated, maintainable and high quality. Along with SonarQube, we will also be able to run a linter to ensure that the code being committed is adhering to our coding conventions.