Test Lab своими руками
В этой статье я хочу показать каким образом можно быстро и практически бесплатно построить инфраструктуру автоматизированного тестирования вашего Web-приложения. В качестве объекта тестирования возьмем некоторое Web-приложение, которое может быть установлено на различные платформы, поддерживает несколько версий PHP, должно работать с использованием основных браузеров, может устанавливаться различными способами (через инсталлятор, путем подкладывания скриптов самого приложения и т.п.) С целью максимально снизить стоимость организации и поддержки подобной инфраструктуры тестирования будут использоваться все возможные способы автоматизации: подготовка окружения, развертывание приложения, тестирование и сведение результатов в единый отчет. Хочется получить следующее: нажали одну кнопку (или вообще ничего не нажимали, а оно запустилось по расписанию) и через некоторое время получили отчеты о прохождении тестов на всех нужных окружениях и вариантах развертывания. Рассмотрим подробнее все шаги построения собственной тестовой лаборатории. Подготовка окруженийНынешнее время не то что раньше, теперь нет никакой необходимости строить ферму серверов для организации всестороннего тестирования программных продуктов. Теперь можно использовать виртуальные машины, которые настраиваются под требования окружения один раз за пару кликов и могут повторно использоваться без необходимости в дополнительной настройке. VMWare предлагает бесплатный продукт для одновременного запуска нескольких виртуальных машин на тестовом сервере. Сами виртуальные машины можно создавать при помощи инструмента VMWare Converter. Теперь на тестовом сервере один раз настраиваем все возможные варианты окружений в которых будет тестироваться наше приложение, например, используем различные ОС, обеспечиваем тестирование через IE6 и IE7 (без необходимости деинсталлировать IE браузер, установленный по умолчанию). Если при тестировании важным является использование "чистых" виртуальных машин, то есть на которых еще не было установлено тестируемое приложение или необходимые для его работы компоненты, то помещаем подготовленные окружения в отдельный каталог, из которого они будут копироваться в тестовое окружение. Развертывание приложенияАвтоматизация развертывания приложения на виртуальных машинах достигается за счет использования бесплатной утилиты pstools, которая позволяет удаленно запускать на виртуальной машине файлы, выполнить копирование файлов на виртуальную машину, завершать ее работу и многое другое. При помощи pstools мы организуем:
Все варианты сценариев развертывания содержатся в .bat файлах или исполняемых скриптах (jscript, vbscript). Тестирование приложенияДля тестирования Web-приложения будем использовать связку NUnit и Watin, которые также распространяются бесплатно и реализуют отличную инфраструктуру для автоматизированного тестирования. Запускаем исполняемый сценарий (например, .bat-файл), который забирает последнюю (или нужную) версию исходных кодов автотестов и выполняет их комплияцию в модуль, который затем может быть запущен на исполнение при помощи NUnit. Этот же сценарий подкладывает заранее подготовленный конфигурационный файл, в котором прописан адрес (или сетевое имя) виртуальной машины, на которой нужно выполнять тестирование. Запускается тестирование, прокликивающее приложение. Сведение результатовОсновным неудобством, связанным с автоматизированным тестированием и использованием NUnit на нескольких окружениях, заключается в том, что использование графического клиента становится невозможным, а для обработки XML-результатов тестирования нужно разработать свой парсер и нотификатор с результатами. Это неудобство устраняется за счет использования бесплатного плагина NUnit.TestReport.AddIn к NUnit, который самостоятельно собирает результаты выполнения тестов, добавляет сообщения об ошибках в ваш проект и отмечает результаты прохождения тестов непосредственно в вашем проекте, с указанием окружения, к которому относится данный тест. В итоге, по завершению тестирования, непосредственно в самом проекте вы можете просмотреть результаты тестирования очередной версии (или сборки) приложения на всех окружениях, где запускались тесты. С тестами будут связаны зарегистрированные в проекте ошибки, к которым прикрепляются скриншоты экрана, для более детального описания проблемы. Вам лишь остается исправить ошибки в коде приложения, либо в коде тестов, выложить исходные коды в репозиторий и запустить автоматическое тестирование заново. Управление конфигурациямиСохраняйте все файлы сценариев, конфигураций тестирования и другие дополнительные файлы в репозитории, что позволит вам организовать контроль версий инфраструктуры тестирования и при необходимости откатиться к условиям тестирования произвольной версии вашего приложения. В качестве репозитория файлов инфраструктуры можно использовать бесплатную систему контроля версий subversion Это действительно рабочий вариант организации сложной инфраструктуры тестирования, который используется в разработке DEVPROM и позволяет максимально снизить затраты на тестирование Web-приложения, а тестировщикам - максимально сконцентрироваться на логике автоматических тестов. Подключение вашей инфраструктуры тестированияЕсли вы не используете NUnit, как каркас для организации автоматического запуска тестов, то вы можете самостоятельно реализовать необходимую интеграцию DEVPROM с вашим инструментом тестирования. В разделе с документацией вы найдете описание DEVPROM API, которое можно использовать для создания отчетов по тестированию. Пример реализации такой интеграции можно посмотреть в исходном коде плагина NUnit.TestReport.AddIn, который умещается на трех экранах монитора. |
Как составить правильный план деплоймента компоненты
Постоянно наблюдая вокруг свершившиеся и просто потенциальные (но вовремя замеченные) проблемы при деплойменте, все время удивляюсь - неужели несколько простых правил деплоймента можно запомнить только на своем печальном опыте, завалив какой-нибудь важный деплой и обрушив критическую для работы заказчика систему. Надеюсь, приведенный ниже чеклист поможет не совершить глупых ошибок, которые могут повлечь за собой крайне неприятные последствия. Итак, какие основные вещи следует иметь до и сделать во время деплоймента:
Кстати, например именно этот чеклист в свое время (несколько лет назад), сильно помог бы нам не завалить один из первых удаленных деплойментов на европейской фабрике заказчика. Тогда все закончилось в целом хорошо - нас только сильно наругали и заставили написать lessons learnt. И конвеер на фабрике тогда не остановился, и бизнес не начал терять деньги. А ведь могло бы быть и по-другому.. |

