Skip to content

Testing Plan and Continuous Integration

LiamDaigle edited this page Oct 10, 2024 · 8 revisions

Testing Plan and Continuous Integration

Testing

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.

Frontend

When it comes to testing the frontend, we will be using a test runner called Karma. This test runner is built by the Angular team and thus ties in very nicely with the frontend framework we chose to use. The test runner will try our unit tests against all different sorts of browsers, and thus will allow us to create a quality and robust application across various different browsers/devices. Combined with this, we will use a tried and true JavaScript test framework, Jasmine, as it comes pre installed with Angular and works very well with Karma. Jasmine will provide all the essential unit testing functionality (assertions, automation, etc.).

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.

Backend

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.

Continuous Integration

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.

Clone this wiki locally