Types of Test

  • Unit tests: check units in isolation, what is considered to be a unit can change from the context

  • Component tests: test of Components of modern JavaScript frameworks

  • Integration tests: check that multiple units behave as expected when used together

  • UI Integration tests: check the whole application works without a real back-end

  • E2E tests: check the whole app, back-end and database included, works as expected

  • Visual Regression tests: check that the app look doesn't change when not intended

You can read more in the Component vs (UI) Integration vs E2E tests]UI tests classification article.

E2E UI Integration Visual Integration Component/Unit
check the entire app
give a good confidence 1 ⚠️
have code coverage ✅ 2 ✅ 2
have a good cost/speed ratio
are deterministic
are simple ⚠️ ⚠️
are short

1: confidence that your application works because the tests pass. It's limited for unit tests and high for E2E tests.
2: read the Code Coverage guide of Cypress.

Testing Pyramid

The "Test Pyramid" is a famous metaphor in the programming world about the cost-effort of diffent types of testing and how much of each should be present in a codebase (where the top very expensive and the bottom less expensive)

Testing pyramid

While the Testing Pyramid idea has been based on solid arguments, it considered UI and (most) integration tests non cost-effective due to high cost of development and maintainance but this idea predates most of recent discoveries and tools in testing that are now available.

Kent C. Dodds created a new version of the pyramid, the "the Testing Trophy". Kent created the trophy based not only on the cost of the tests but on the return of investment. He highlighted the "Integration test" area as the most important one (Write tests. Not too many. Mostly integration. by Kent C. Dodds)

Testing trophy

Author: Stefano Magni

results matching ""

    No results matching ""