Общие сведения

ВступлениеПодготовка к запускуАрхитектура платформы TestoПорядок запускаПолитика запуска тестов

Обучающие материалы по Testo для Hyper-V

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Доступ в Интернет из виртуальной машиныЧасть 4. Гостевые дополненияЧасть 5. ПараметрыЧасть 6. КешированиеЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. Циклы

Обучающие материалы по Testo для QEMU

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Гостевые дополненияЧасть 4. ПараметрыЧасть 5. КешированиеЧасть 6. Доступ в Интернет из виртуальной машиныЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. ЦиклыЧасть 16. Макросы с объявлениями

Спецификация языка

Общая структура скриптовых файловБазовые конструкции языкаOбъявление виртуальной машиныОбъявление виртуального флеш-накопителяОбъявление виртуальной сетиПараметрыОбъявление тестовМакросыДействия с виртуальными машинамиДействия с мышкойПоиск изображений на экранеДействия с виртуальными флеш-накопителямиУсловияЦиклыСписок идентификаторов клавиш

Запросы на языке Javascript

Общая концепция построения JS-селекторовВстроенные глобальные функции JavascriptИсключенияКласс TextTensorКласс ImgTensorКласс Point

Часть 13. Импортирование жёстких дисков

С чем Вы познакомитесь

В этом уроке вы познакомитесь с возможностью импортировать вручную подготовленные виртуальные машины в тестовые сценарии.

Начальные условия

  1. Платформа Testo установлена.
  2. Гипервизор Hyper-V установлен.
  3. Имеется установочный образ Ubuntu Desktop 18.04 с расположением C:\iso\ubuntu_desktop.iso. Местоположение и название установочного файла может быть другим, в этом случае нужно будет соответствующим образом поправить параметр ISO_DIR, передаваемый через командную строку во время запуска тестов.
  4. (Рекомендовано) Настроена подсветка синтаксиса Testo-lang в Sublime Text 3.
  5. (Рекомендовано) Проделаны шаги из двенадцатой части

Вступление

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

  1. Для создания стенда и прогона тестов требуется только наличие ISO-образов и небольших вспомогательных файлов, которые легко можно хранить в VCS. Такой подход позволяет легко перенести тесты на новую машину: просто скачайте репозиторий и ISO-образы.
  2. Настройка стенда фактически задокументирована в самих тестовых сценариях, достаточно просто прочитать текст тестовых сценариев чтобы получить представление о том, как именно создаётся и настраивается стенд с самого начала.
  3. При желании подкорректировать настройку стенда очень просто: достаточно поменять действия в одном из подготовительных тестов, и всю остальную работу по приведению стенда в нужное состояние Testo проделает за Вас.

Тем не менее, у такого подхода есть и свои недостатки:

  1. Иногда подготовительные тесты могут быть чересчур объемными и выстраивать тестовые сценария "с нуля" будет долго и громоздко.
  2. Иногда Вам хочется сосредоточиться только на тестах с участием SUT и Вы не хотите тратить время на автоматизацию подготовительных тестов вспомогательных машин. Вам было бы удобнее подготовить вспомогательные машины вручную, а затем импортировать свои наработки в тестовые сценарии с участием SUT.

Поэтому Testo Framework предлагает возможность выбрать другой подход к развертыванию виртуальных стендов: вместо создания машины "с нуля" можно подготовить виртуальную машину вручную и импортировать результат своей работы в тестовые сценарии. И с этим процессом мы как раз познакомимся в этом уроке.

С чего начать?

В качестве примера давайте рассмотрим установку ОС Ubuntu Desktop 18.04. В прошлом уроке мы автоматизировали установку этой ОС с помощью мышки. Но давайте предположим, что Вы бы не хотели автоматизировать настройку этой машины, а вместо этого предпочтительнее установить Ubuntu Desktop вручную, а затем зафиксировать результаты своей работы и использовать их в качестве начального состояния для машины ubuntu_desktop.

Начнем с того, что зайдем в диспетчер Hyper-V и создадим новую виртуальную машину (назовём её handmade). Конфигурацию машины можно сделать произвольной (не забудьте только указать установочный образ Ubuntu Desktop 18.04), главное обратить внимание на размер создаваемого диска

Disk size

Именно этот диск нам затем в будущем нужно будет импортировать в машину ubuntu_desktop, поэтому задаём размер в 10 Гбайт (как в предыдущем уроке).

После создания виртуальной машины выполните установку ОС в ручном режиме.

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

Handmade folder

После этого нам необходимо выключить виртуальную машину handmade, так как мы готовы приступить к импортированию результатов в тестовые сценарии.

Импортируем диск настроенной виртуальной машины в Testo

Теперь, когда мы закончили настройку виртуальной машины хотим перенести состояние виртуальной машины handmade в Testo, нам необходимо вернуться к тестовым сценариям. Давайте создадим новый файл (назовем его handmade.testo) и напишем в нем объявление виртуальной машины.

machine ubuntu_desktop {
    cpus: 1
    ram: 2Gb
    disk main: {
        source: "${VM_DISK_POOL_DIR}\\handmade.vhdx"
    }
    nic internet: {
        attached_to: "internet"
    }
}

test check_handmane_ubuntu {
    ubuntu_desktop {
        start
        wait "Handmade" timeout 3m
    }
}

В объявлении виртуальной машины есть два интересных момента:

  1. Диск main теперь вместо атрибута size имеет атрибут source, в котором нам необходимо указать путь к образу диска handmade.vhdx нашей виртуальной машины handmade. При создании машины ubuntu_desktop будет скопирован исходный образ диска handmade.vhdx, и все дальнейшие действия с машиной ubuntu_desktop никак не будут сказываться на машине handmade.
  2. У виртуальной машины отсутствует атрибут iso. В самом деле, на нашей виртуальной машине уже установлена ОС Ubuntu Desktop, а значит и монтировать установочный образ при создании виртуальной машины нам ни к чему.

Также мы создали тест check_handmane_ubuntu, в котором мы будем проверять результат импорта. Виртуальная машина, как обычно, создаётся в выключенном состоянии, поэтому нам первым делом надо её включить. После включения должна начаться загрузка рабочего стола Ubuntu Desktop, а нам осталось лишь убедиться, что на рабочем столе действительно присутствует папка Handmade_folder, которую мы создали ранее в ручном режиме.

Обратите внимание, что в нашем сценарии отсутствует ожидание экрана с предложением ввести логин. Это сделано потому, что во время ручной установки Ubuntu Desktop была выбрана настройка с автоматическим входом в систему. Если Вы выбрали вариант с ручным входом в систему - то необходимо подкорректировать тест check_handmade_ubuntu соответствующим образом.

Давайте запустим полученный сценарий (обратите внимание на путь к образу vhdx в параметре VM_DISK_POOL_DIR - для Hyper-V по умолчанию путь именно такой).

C:\Users\Testo> testo run handmade.testo --stop_on_fail --param VM_DISK_POOL_DIR "C:\Users\Public\Documents\Hyper-V\Virtual hard disks"
TESTS TO RUN:
check_handmane_ubuntu
[ 0%] Preparing the environment for test check_handmane_ubuntu
[ 0%] Creating virtual machine ubuntu_desktop
[ 0%] Taking snapshot initial for virtual machine ubuntu_desktop
[ 0%] Running test check_handmane_ubuntu
[ 0%] Starting virtual machine ubuntu_desktop
[ 0%] Waiting "Handmade" for 3m with interval 1s in virtual machine ubuntu_desktop
[ 0%] Taking snapshot check_handmane_ubuntu for virtual machine ubuntu_desktop
[100%] Test check_handmane_ubuntu PASSED in 0h:0m:21s
PROCESSED TOTAL 1 TESTS IN 0h:0m:21s
UP-TO-DATE: 0
RUN SUCCESSFULLY: 1
FAILED: 0
C:\Users\Testo>

Мы видим, что тест успешно отработал, а значит на рабочем столе действительно была найдена папка Handmade_folder. Импорт готовой конфигурации успешно завершен!

Итоги

Платформа Testo предоставляет возможность не только создавать виртуальные машины "с нуля", но и импортировать вручную настроенные машины в иерархию тестов. Этот механизм может быть удобен, если Вы не хотите тратить много времени на автоматизацию подготвительных тестов.

Готовые скрипты можно найти здесь