# Автоматизированные тесты. Пирамида тестирования

Автоматизированные тесты - это дополнительный код, позволяющий в автоматическом режиме убедиться в правильном функционировании определенных компонентов программного обеспечения.

Условно, автоматизированные тесты можно разделить на 3 группы:

![](https://1472948722-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M9nDctULH0TDcG_q95e%2F-MBXyEnlv7vLrP8_JPUK%2F-MBXz-f_8iwWvu32KMm4%2F1_2VFFoYQHL_k8HOmAp5CvTg.png?alt=media\&token=29924de7-918b-4fd2-bdaa-33f1837333fd)

**e2e тесты (обозначены зеленым)** - полное тестирование интерфейса пользователя (как он работает вместе с реальным бэк-эндом, переходы между страницами и т. д.). Такие тесты довольно долго запускаются и зависят от многих условий, поэтому их использования следует свести к минимуму. Однако эти тесты могут проверить правильное функционирование системы в целом, поэтому их работу не удастся заменить юнит или интеграционным тестированием.

**Интеграционные тесты (обозначены синим)** - тестирование взаимодействия (интеграции) нескольких систем. **Системные тесты (обозначены синим)** - тестирование отдельно взятой системы в целом (например, бэк-энд тестируется отдельно от фронт-энда). Тесты в синем секторе - более узконаправленные, быстрее за e2e и менее зависят от внешних условий. Однако, так как эти тесты не являются изолированными, то их следует писать меньше, чем юнит-тестов.

**Модульные тесты (юнит-тесты)** - тестирование отдельно взятого компонента, функции или метода. Эти тесты являются быстрыми, полностью изолированными, позволяют легче идентифицировать место неисправности. Однако не проверяют взаимодействие различных компонентов. По-факту, \~ 80% тестов на проекте - это юнит-тесты.
