Vagrant как помощник в тестировании

Кросс-браузерное тестирование часто ассоциируется с проблемой установки нескольких браузеров. Не так страшно когда нам нужно тестировать с Chrome или Firefox различных версий, но намного страшнее когда речь заходит к примеру о разных версиях Internet Explorer. Работающие с web проектами не по наслышке знакомы с этой проблемой и каждый решает ее своим способом. Кто-то использует эмуляторы, кто-то переустанавливает ОС, кто-то использует несколько компьютеров, а кто-то виртуальные машины. В этой статье я хочу поделиться опытом использования как раз виртуальных машин, а именно стабильного рабочего окружения в виртуальной машине. Возможно Vagrant и его настройка это хорошая задача для DevOps инженера, но я считаю что технология очень простая и с легкостью осядет в умах даже самых начинающих, нужно просто начать ее использовать.

Плюсы Vagrant

Правильно настроенный проект

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

Все в одном месте

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

Переиспользование

Очень весомый плюс. Настройте Vagrant один раз и поднимайте свой проект на любой ОС, где угодно, когда угодно и сколько угодно раз. С Vagrant вы сможете поднять рабочий проект одной командой. Серьезно.

Управление

Мне нравится, что не нужно открывать виртуальную машину и завершать в ней работу, перед этим закрыв все запущенные программы. Все это делается одной командой в терминале.

Минусы Vagrant

Это по прежнему виртуальная машина, со всеми вытекающими. На мой взгляд самый сильный минус это потребление ресурсов. Если у вас слабый компьютер, то виртуалка довольно сильно будет притормаживать. Здесь нужно пересмотреть ресурсы, и постараться выжать максимум из минимума.

Тестируем в Vagrant

Я не буду дублировать здесь документацию, и постараюсь донести лишь основную идею. Vagrant это обертка над виртуальной машиной с 2-мя большими отличиями.

Полный отказ от UI

То есть виртуальная машина просто запустится в бэкграунде без всяких там интерфейсов. Это очень удобно когда приходится тестировать с Linux и другими ОС этого семейства. Дополнительное окно с рабочим столом не появится, вы просто подключаетесь к машине по ssh и все, управление теперь в ваших руках.

PS. Я ни разу не юзал Vagrant на Windows и наоборот, так что незнаю, может там какой-то UI остался.

Конфигурация и общие файлы

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

Как это обычно делается?

Устанавливается Vagrant и Virtual Box, потому что первый без второго не работает. Затем, в репозитарии проекта сохраняется Vagrantfile. В этом файле перечисляются различные настройки касательно виртуальной машины. В Vagrant есть такое понятие Provision, обычно это дополнительный софт и настройки уже внутри вашей виртуалки, обычно они устанавливаются из файла bootstrap.sh путь к которому известен благодаря Vagrantfile. И все. Теперь к примеру новый сотрудник, установит софт, склонирует репозитарий и запустит всего одну команду

vagrant up

Как настраивается web проект с использованием Vagrant

В общих чертах, как это обычно бывает. В Vagrant устанавливается apache/nginx, нужные языки программирования, их библиотеки, базы данных и прочий требуемый проекту софт. На локальной машине клонируется репозитарий и расшаривается с Vagrant. Дальше остается настроить apache/nginx чтобы по нужному домену, например test.com у вас открывался проект из расшаренной папки. Этот домен сохраняется в /etc/hosts на хост-машине и все готово к работе. Теперь у вас есть доступ к коду, все данные и окружение изолировано, и в то же время вы можете наблюдать за результатами по собственному тестовому домену. Профит.

 

2 Комментарии

  1. Vagrant — дикая, чудовищная дрянь.

    > Настройте Vagrant один раз и поднимайте свой проект на любой ОС, где угодно, когда угодно и сколько угодно раз.
    Смешно.

    • Андрей Ким

      19.07.2017 в 08:09

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

Добавить комментарий