Тестирование ПО

Виртуальные машины

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

Почему необходимо применять средства виртуализации

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

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

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

С другой стороны, сразу несколько тестировщиков могут получить в распоряжение уже заранее подготовленную тестовую машину с установленной ОС и настроенной программной средой (включая, например, локальныйSQL-сервер для построения и обслуживания баз данных, которые используются в работе тестируемого ПО).

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

Например, можно создать такую же среду, какая настроена и на стороне конечного пользователя (клиента), для имитации его работы с приложением. Допустим, Вы разрабатываете приложение в России, а клиент будет использовать его в другой стране. Зачастую это оказывает влияние на поведение приложения, значит, просто необходимо принимать во внимание все «национальные особенности».

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

В классической модели разработки программного обеспечения программистам и инженерам по качеству ПО большую часть времени приходилось испытывать программный продукт на одной платформе на протяжении практически всего времени разработки и лишь в конце проводить его тестирование в различных ОС и пользовательских средах (так называемое тестирование конфигураций, Configurations Testing). К тому же, в распоряжении сотрудников отделов тестирования и разработчиков находилось не так много физических компьютеров, а на одной машине, в одной операционной системе нельзя, например, поставить одновременно несколько версий одного программного продукта, с которым должна взаимодействовать разрабатываемая программа. Вследствие этого, в программном обеспечении, особенно небольших команд разработчиков, часто встречались ошибки, связанные с особенностями пользовательских конфигураций, поскольку времени и ресурсов на полноценное конфигурационное тестирование не хватало. Кроме того, инженерам по качеству приходилось тратить много времени на развертывание комплекса программных продуктов на тестовых стендах и настройку их работы в сетевой инфраструктуре.

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

Надо отметить еще одну проблему, которая довольно часто встречается при разработке программного обеспечения и заставляет потратить значительное время на ее решение. Всем программистам, имеющим опыт взаимодействия с командами тестирования, известна следующая ситуация: в системе багтрекинга тестировщик фиксирует дефект, который программисту никак не удается повторить. После того, как программист ставит статус проблемы как решенный, тестировщик зовет его к своей машине и наглядно демонстрирует ошибку. В этой ситуации доходит до того, что программисту приходится установить на машину тестировщика множество отладчиков и прочей ненужной ерунды и «отлавливать» дефект, полностью останавливая работу тестировщика. Если к этому прибавить время на удаление тестировщиком программистских утилит, получаются серьезные потери времени команды.

В заключение перечисления списка проблем, возникающих в процессе разработки и тестирования, нужно привести еще одну. Зачастую складывается такая ситуация, когда требуется проверка сборки программного продукта «на дым» (так называемое дымовое тестирование, Smoke Testing), что означает быстрый прогон наиболее важных тестов. Но что если мы разрабатываем приложение, для которого требуются различные версии Internet Explorer? В этом случае будет тратиться много времени на загрузку подходящей системы, где установлена требуемая версия.

Суммируя описанные ситуации, обобщим проблемы, которые часто встречаются в процессе разработки и тестирования программных продуктов:

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

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

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

  • Тестировщики, в процессе работы с виртуальными машинами, могут создавать неограниченное количество пользовательских конфигураций на своей физической машине запуская, по необходимости, наиболее подходящую в данный момент.
  • Созданные однажды многомашинные конфигурации могут быть настроены с помощью инструментов платформ виртуализации и просто перенесены на другое оборудование, при этом их повторная настройка не требуется.
  • Резервная копия виртуальной машины может быть создана путем копирования папки или создания мгновенного снимка состояния («снапшота»).
  • После нахождения ошибки тестировщиком, виртуальная машина с повторяющимся дефектом может быть передана разработчику, при этом высвобождаются ресурсы на дальнейшее тестирование.
  • Необходимые условия для тестирования могут быть быстро созданы за счет гибкой настройки параметров аппаратной среды виртуальной машины (объем оперативной памяти, число виртуальных процессоров, ограничение ресурсов).
  • Возможность быстрого отката к сохраненному состоянию виртуальной машины с необходимой конфигурацией или переключение между несколькими одновременно работающими гостевыми системами уменьшает время на тестирование.

Все перечисленные решения нужно рассматривать в ракурсе того факта, что виртуальная машина (с установленным в ней программным обеспечением) представляет собой весьма гибкий объект, который может быть как быстро развернут на клиентских машинах из централизованного хранилища шаблонов пользовательских конфигураций, так и максимально гибко настроен в отношении параметров гостевой системы и ее окружения. Легкая переносимость на другое оборудование и независимость от аппаратной платформы – ключевое достоинство виртуальных машин.

0 0 vote
Article Rating
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments