вторник, 27 августа 2013 г.

Автоматизация тестирования Веб Приложений.

Большинство программных продуктов, выпускаемых сегодня, являются веб-ориентированными приложениями, расчитанными на работу в Интернет браузере. Эффективность тестирования подобных приложений отличается в различных компаниях и организациях. В эпоху высокой интерактивности и взаимодействия в процессе разработки программ, когда многие организации используют методологию Agile в той или иной форме, просто необходимо правильно тестировать изменения в продукте. (ВНИМАНИЕ ВОЛЬНЫЙ ПЕРЕВОД В ПРЕДЫДУЩЕМ ПРЕДЛОЖЕНИИ) Автоматизация тестирования зачастую является решением проблемы. Автоматизировать тестирование - значит использовать программные инструменты для того, чтобы прогонять однотипные, повторяющиеся тесты для тестируемого приложения, что позволяет значительно ускорить проведение регрессионного тестирования.


Автоматизированное тестирование обладает множеством достоинств, такими как скорость выполнения тестов и возможность воспроизводить однотипные тесты снова и снова. Существует большое количество как коммерческих, так и бесплатных инструментов, помогающих в разработке автоматических тестов. Selenium, возможно, самое широко распространенное решение с открытым кодом (open source). Данное руководство поможет как новичкам, так и опытным пользователям Selenium, освоить эффективные методы для автоматизации тестирования веб-приложений.
В этом руководстве содержится введение в Selenium, описываются его особенности, представлены общепринятые методики (best practices) сообщества Selenium и приведены примеры использования. Здесь так же описываются технические аспекты внутренней структуры Selenium.
Автоматизированное тестирование обладает специфическими преимуществами, которые могут улучшить эффективность работы отдела тестирования в долгосрочной перспективе. Автоматизированное тестирование позволяет:
  • Участить регрессионное тестирование
  • Быстро предоставлять разработчикам отчет о состоянии продукта*
  • Получить практически бесконечное число прогонов тестов
  • Использовать Agile и экстремальные методы разработки
  • Сохранять строгую документацию тест-кейсов
  • Индивидуально настроить отчеты об ошибках
  • Обнаружить ошибки, которые были пропущены на стадии ручного тестирования

Автоматизация - быть или не быть?

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

Представляем Selenium

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

Краткая история проекта Selenium

Selenium впервые появился на свет в 2004 году, когда Джейсон Хаггис тестировал программное обеспечение для компании ThoughtWorks. Будучи человеком неглупым он понимал, что своему времени можно найти лучшее применение, чем вручную снова и снова повторять одни и те же тесты. Он разработал Javascript библиотеку, которая могла осуществлять взаимодействия с элементами веб-страницы и позволяла ему автоматически запускать тесты сразу в нескольких браузерах. Эта библиотека в итоге стала Selenium Core (ядром Selenium), которое лежит в основе всей функциональности Selenium Remote Control (RC) и Selenium IDE. Selenium RC был инновационным (новаторским) потому что ни один другой инструмент не позволял выбирать язык программирования для управления браузером.
И хотя Selenium и был замечательным инструментом, он все же был не лишен недостатков. Так как движок был основан на Javascript, многие вещи было невозможно осуществить из- за ограничений безопасности браузеров. Ситуацию усугубляло и то, что веб-приложения становились все мощнее и нуждались в использовании специфических особенностей новейших браузеров, что делало работу все более и более затруднительной.
В 2006 году отважный инженер из Google по имени Саймон Стюард начал работу над проектом, который он назвал WebDriver. К тому времени Google широко использовал Selenium, но тестировщикам приходилось искать пути для обхода ограничений этого продукта. Саймон хотел получить инструмент для тестирования, который бы общался с браузером используя нативные методы операционной системы и браузера, что позволило бы избежать ограничений изолированной среды Javascript. Проект WebDriver был призван устранить слабые места (болевые точки) Selenium.
Вернемся в 2008 год. Олимпийские игры в Пекине позволили Китаю заявить о себе, как о глобальном лидере, ипотечный дефолт в США спровоцировал самый большой финансовый кризис со времен Великой Депрессии. Преждевременная кончина Хита Леджера привела к тому, что фильм «Темный Рыцарь» дважды посмотрел каждый человек на планете. Но самым важным событием того года стало слияние Selenuim и WebDriver. У Selenuim имелась коммерческая поддержка и огромное сообщество, но было очевидно, что WebDriver - это инструмент будущего. Объединение двух инструментов снабдило всех пользователей общим набором средств разработки (фичей) и собрало самые яркие умы в автоматизации тестирования под одной крышей. Возможно лучшее объяснение слияния WebDriver и Selenium дал сам Саймон Стюард, создатель WebDriver, в своем объединенном письме к сообществам WebDriver и Selenium от 6 августа 2009 года:
«Почему происходит слияние? Отчасти от того, что WebDriver устраняет некоторые несовершенства в Selenium (например способность обойти ограничения изолированной среды Javascript (sandbox вообще термин в разработке, не уверен можно ли использовать «песочница»), а еще у нас роскошный API), отчасти потому, что Selenium учитывает некоторые недостатки в WebDriver (такие как поддержка различных браузеров) и отчасти от того, что основные разработчики (contributors) и я считаем, что это лучший способ предложить пользователям самый лучший фреймворк»

Набор инструментов Selenium`а

Selenium состоит из нескольких программных модулей, каждый из которых имеет свое назначение.

Selenium 2 (или Selenium Webdriver)

Selenium 2 - последнее дополнение в пакете инструментов и является будущим направлением развития проекта Selenium. Это абсолютно новый инструмент для автоматизации, который обладает превосходными возможностями, включая более целостный и объектно-ориентированный API, а так же отстутствие ограничений, свойственных более ранним версиям.
Как уже было сказано в Краткой истории проекта Selenium, разработчики WebDriver и Selenium пришли к выводу, что каждый продукт обладает своими достоинствами, и слияние двух проектов позволит получить гораздо более надежный инструмент для автоматизации.
Результатом этого слияния стал Selenium 2.0. Даный продукт основан на технологиях WebDriver API, и поддерживается технологиями Selenium 1 для максимально гибкого и удобного переноса тестов. В дополнение ко всему, в Selenium 2 встроен интерфейс Selenium RC для обеспечения обратной совместимости.

Selenium 1 (или Selenium Remote Control)

Как вы уже знаете из Краткой истории проекта Selenium, на протяжении длительного времени Selenium RC оставался основным направлением развития, до того как в результате слияния WebDriver/Selenium не появился Selenium 2, более новый и мощный инструмент.
Selenium 1 все еще активно поддерживается (в основном в режиме сопровождения), и предлагает функции (фичи), которые все еще недоступны в Selenium 2, включая поддержку нескольких языков программирования (Java, Javascript, PRuby, HP, Python, Perl и C#) и поддержку всевозможных браузеров.

Selenium IDE

Selenium IDE (Встроенная Среда Разработки) инструмент для разработки и создания прототипов тестовых скриптов. Это плагин для браузера Firefox, с простым и удобным интерфейсом для создания автоматических тестов. В Selenium IDE встроена функция записи, которая позволяет записывать действия, совершаемые пользователем, и затем сохранять их в виде кода одного из языков программирования для последующего использования.

Selenium-Grid

Selenium-Grid позволяет масштабировать большие тестовые наборы для Selenium RC, а также запускать тесты которые необходимо проверять в нескольких рабочих средах. Selenium Grid позволяет вам запускать несколько тестов параллельно, т.е. разные тесты могут быть запущены в одно и то же время на разных удаленных машинах. Это сулит два преимущества. Первое, если у вас очень много тестов, или время выполнения ваших тестов слишком велико, вы можете значительно увеличить производительность с помощью Selenium Grid, разделив тесты на несколько потоков для того, чтобы запускать их одновременно на удаленных серверах. К тому же, если тесты необходимо запускать в разных средах (например в разных браузерах или в различных операционных системах - Прим. переводчика), вы можете настроить удаленные серверы соответствующим образом. В обоих случаях использование параллельных процессов в Selenium Grid позволяет значительно ускорить тестирование.

Какой же инструмент Selenium выбрать

Большинство людей начинает с Selenium IDE. Если у вас недостаточно опыта программирования и использования скриптовых языков, вы можете использовать Selenium IDE для ознакомления с командами Selenium. С помощью IDE вы можете очень быстро, порою даже за несколько секунд, создавать простые тесты.
Однако мы не рекомендуем строить всю автоматизацию тестирования на Selenium IDE. Для наиболее эффективного использования Selenium, вам необходимо создавать и запускать тесты при помощи Selenium 2 или Selenium 1 в сочетании с одним из поддерживаемых языков программирования, каким именно зависит от вас.
Во время написания данного руководства разработчики планируют в дальнейшем развивать Selenium-WebDriver API. Selenium 1 обеспечивает лишь обратную совместимость. Однако обе версии имеют свои недостатки и преимущества, которые описаны в соответствующих разделах данного документа.
Для тех их вас, кто только начинает свое знакомство с Selenium, мы рекомендуем прочитать документ целиком. Однако если вы только начинаете принимать Selenium на вооружение, и будете создавать свои тесты с чистого листа, возможно вам следует использовать Selenium 2, так как именно эта ветвь будет разрабатываться и поддерживаться сообществом в будущем.

Поддерживаемые Браузеры и Платформы

Список поддерживаемых браузеров в Selenium 2.0б вариируется, в зависимости от того используете ли вы Selenium-WebDriver или Selenium-RC.

Selenium-WebDriver

Selenium-WebDriver поддерживает следующие браузеры и операционные системы:
  • Google Chrome 12.0.712.0+
  • Internet Explorer 6, 7, 8, 9 - 32 и 64-bit
  • Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7
  • Opera 11.5+
  • HtmlUnit 2.9
  • Android -- 2.3+ для телефонов и планшетов (устройств и эмуляторов)
  • iOS 3+ для телефонов (устройств и эмуляторов) и 3.2+ для планшетов (устройств и эмуляторов)
Примечание: Во время написания данного руководства, из-за бага в эмуляторе Android 2.3 Selenium не работал правильно на эмуляторах телефонов. Однако, на эмуляторе планшетов и реальных устройствах все работает нормально .

Selenium 1.0 и Selenium-RC.0

Это старый список поддерживаемых платформ для Selenium 1.0, но он все еще актуален для Selenium-RC в релизе Selenium 2.0
* Тесты созданные в Firefox с помошью Selenium IDE можно запустить в любом другом поддерживаемом браузере с помощью простой команды в Selenium RC.
** При помощи сервера Selenium RC можно запустить любой исполняемый файл, но настройки безопасности браузера могут накладывать технические ограничения, что приведет к тому, что некоторые функции не будут работать

Возможности гибкой настройки и расширения функциональности

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

Что содержится в данном Руководстве?

Это руководство расчитанно как на новичков, так и на тех, кто уже работал с Selenium`ом и хочет расширить свои познания. Мы знакомим новых пользователей с продуктом и не предполагаем наличие большого опыта использования Selenium`а. Однако мы расчитываем, что пользователь обладает базовыми знаниями в области автоматического тестирования. Для более опытных пользователей это руководство может служить справочником, и мы советуем вам ознакомится с приведенным оглавлением и кратким описанием разделов. Вы можете найти здесь информацию об архитектуре Selenium`а, о способах применения, а также главу о техниках тест дизайна.
Содержание остальных глав:
:ref:`Selenium IDE <chapter02-reference>`
Рассказывает о Selenium IDE и описывает, как использовать интегрированную среду
разработки для создания тестов. Если у вас недостаточно опыта в программировании, но вы все равно надеетесь научиться автоматизированному тестированию, это то, с чего вам следует начать. Вы узнаете, что при помощи Selenium IDE можно создать достаточно большое количество тестов. Если же вы опытный программист, это глава все еще может быть интересна для вас, т.к. вы можете использовать Selenium IDE для быстрого создания прототипов (черновиков) тестов. В этом разделе так же описывается, как записанный тест можно "экспортировать" в язык программирования для добавления в него более расширенной функциональности, не поддерживаемой Selenium IDE.
:ref:`Selenium 2 <chapter03-reference>`
Рассказывает о разработке автоматических тестов для тестируемого приложения, с использованием Selenium 2.
:ref:`Selenium 1 <chapter05-reference>`
Объясняет как автоматизировать тест при помощи Selenium RC API. Содержит множество примеров
с использованием языка программирования и скриптов. Архитектурная диаграмма, показанная в данном разделе, призвана помочь описать процесс инсталляции и настройки Selenium RC, представить различные поддерживаемые режимы и конфигурации, а так же их плюсы-минусы и ограничения. В этой главе приведены примеры решения наиболее частых проблем, с которыми сталкиваются новые пользователи Selenium`а, например обработка Сертификатов Безопастности, https-запросы, всплывающие подсказки и открытие нового окна.
:ref:`Test Design Considerations <chapter06-reference>`
Это глава рассказывает о техниках программирования используемые вместе с Selenium-WebDriver и Selenium RC. Мы так же показываем техники, которые вызывают наибольшее количество вопросов
на форумах, такие как создание setup and teardown functions (!!!я не знаю как это по-русски!!!), как внедрить data-driven тесты (тесты, между итерациями, которых данные могут изменяться) и др.
:ref:`Selenium-Grid <chapter07-reference>`
Эта глава находится в разработке
:ref:`User extensions <chapter08-reference>`
Описывает, как можно модифицировать, кастомизировать или расширить функциональность Selenium.

Команда документирования - Авторы, прошлые и настоящие

В алфавитном порядке представлены авторы, внесшие значительный вклад в разработку данного руководства пользователя, его публикацию или и в то и другое. Мы очень благодарны им всем.
  • Дэйв Хант
  • Люк Инман-Семерау
  • Мэри Энн Мэй-Пемфрэй
  • Ноа Сассман
  • Пол Грандьан
  • Питер Ньюхук
  • Сантьяго Суарез-Ордонез
  • Симон Стюарт
  • `Тарун Кумар`_

Благодарность

Особая благодарность выражается Патрику Лайтбоди,как администратору сайта SeleniumHQ, внесшему основной вклад в Selenium RC. Его поддержка была неоценима во время написания первого выпуска руководства пользователя.Патрик помог нам понять нашу аудиторию. Он также снабдил нас всем необходимым на сайте seleniumhq.org для публикации документов. Также благодарность выражается Андрасу Хатвани за то, что посоветовал нам издательские решения, и Амиту Кумару за участие в наших дискуссиях и оказание помощи в редактировании документа.
И конечно, мы должны упомянуть разработчиков Selenium. Они создали по-настоящему удивительный инструмент. Без идей незаурядных дизайнеров и неустанных усилий текущих разработчиков мы не получили бы такого превосходного инструмента и не смогли бы передать его вам.

Комментариев нет:

Отправить комментарий