> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/teoriya-avtomatizirovannogo-testirovaniya/obshie-voprosy/kak-ispolzuyut-virtualnye-mashiny-i-konteinery-v-avtomatizacii.md).

# Как используют виртуальные машины и контейнеры в автоматизации?

### **1️⃣ Виртуальные машины (VM)**

* VM — это **полноценные виртуальные компьютеры** с собственной ОС.
* В автоматизации используются для **разделения тестовых окружений**.

#### ✅ Применение:

1. **Тестирование на разных ОС и браузерах**:
   * Windows, Linux, macOS
   * Chrome, Firefox, Edge
2. **CI/CD пайплайны**:
   * Каждое тестовое задание запускается на отдельной VM, чтобы изоляция была полной.
3. **Стабильность окружения**:
   * Можно откатить VM к "чистой" версии перед каждым тестом.

#### Пример:

* **Vagrant + VirtualBox**: поднять VM с Linux для запуска автотестов.
* **Cloud VM**: AWS EC2 для параллельного запуска тестов на нескольких машинах.

***

### **2️⃣ Контейнеры (Docker, Podman)**

* Контейнер — это **легковесная изолированная среда** для приложений.
* В отличие от VM, контейнеры **делят ядро ОС**, поэтому быстрее и менее ресурсоёмки.

#### ✅ Применение:

1. **Тестирование микросервисов**:
   * Каждый сервис в отдельном контейнере, можно быстро поднять стек для интеграционных тестов.
2. **CI/CD и параллельные тесты**:
   * Можно запустить несколько контейнеров с тестами на одной машине.
3. **Локальное окружение разработчика = окружение на CI**:
   * “Works on my machine” исключается.

#### Пример:

* `docker-compose.yml` поднимает приложение + базу данных + сервис авторизации для интеграционных тестов.
* Использование **Selenium Grid в Docker**: каждый контейнер — отдельный браузер для параллельных UI тестов.

***

#### 🔹 Сравнение VM vs Контейнеры

| Характеристика | VM                           | Контейнер                  |
| -------------- | ---------------------------- | -------------------------- |
| Ресурсы        | Тяжёлые                      | Лёгкие                     |
| Время запуска  | Минуты                       | Секунды                    |
| Изоляция       | Полная (свой ядро и ОС)      | Общая ОС, только процессы  |
| Использование  | Разные ОС, браузеры          | Тесты, микросервисы, CI/CD |
| Примеры        | Vagrant, VirtualBox, AWS EC2 | Docker, Kubernetes         |

***

💡 **Практическое применение в автоматизации тестирования**:

* Для **UI тестов на разных ОС** лучше VM.
* Для **интеграционных и API тестов** удобнее Docker: быстро поднимать/сбрасывать окружение, масштабировать, запускать параллельно.
