Testing
"Tests are stories we tell the next generation of programmers on a project." ― Roy Osherove
The importance of testing
A task that shouldn't be underestimatedWhen designing and implementing a new system, it's necessary to test that everything is operating correctly and to highlight any malfunctions or bugs early on.
The testing process is divided into various actions, some of which occur during the drafting of the code (unit testing) and others close to the releases (e2e testing, QA).
Backend testing tools
jUnitWe use jUnit and Mockito for our server tests. These are open source tools that are the de facto standard of Java testing. Third-party systems are often present, especially on the server side or in the development of management systems, making it difficult to write correct unit tests. Mockito comes to our rescue by allowing the simulation of objects or responses and greatly simplifying the development of tests for classes with external dependencies.
Frontend unit testing tools
Jasmine, Karma, JestThe framework At its core, Angular already provides the tools necessary to carry out automatic tests on the written code. In particular, it uses the Jasmine testing framework for writing tests and Karma for running tests and collecting results. It's also possible to use other test frameworks.
Vue also provides integration with a test framework, in this case we use Jest.
By configuring the server that manages the repository to carry out continuous integration, it's also possible to run the tests automatically for each commit or a pull request of the code.
End-to-end testing tools
CypressCypress is a powerful open source tool for the end-to-end testing of web applications; it enables you to write a series of test cases and then execute them automatically within the browser. This system is independent of the technology with which the user interface was written and, therefore, adapts to the different web projects we develop, regardless of the technical choices made.
Testing and quality assurance team
Manual testingAutomatic testing enables us to guarantee the quality of the code and the products we produce. It's particularly helpful in preventing regressions following maintenance operations or identifying potential bugs in large platforms. However, human input is also necessary to test the systems we design. It's especially essential in use cases where various external or particularly complex processes come into play and are, therefore, more difficult to reproduce automatically. This is why we dedicate a team, sized according to the needs of the project, to ensure the quality of the products and services we provide.
In some scenarios, a small group of users (beta testers) is also selected to use the system before the actual launch to point out possible flaws or malfunctions, evaluate the user experience, and collect feedback to improve the interface and operation.