Автоматическое тестирование веб-страниц (и создание из вариантов использования DSL) - PullRequest
3 голосов
/ 06 июля 2010

Моя цель:

  • Наши клиенты могут создавать новые веб-тесты.
  • Наш сервер непрерывной интеграции осуществляет развертывание в тестовой среде; он должен выполнить тесты против него
  • Тест также можно запустить в другой среде.

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

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

Теперь я нашел совершенно новый подход. Может быть, запись не правильный путь. Как насчет того, чтобы наши клиенты могли использовать варианты на понятном для человека языке, который машина могла бы понимать и компилировать для веб-записи (с помощью языка, специфичного для домена, DSL). Это не научно, это уже сделано, так что читайте дальше. : -)

Я пытался использовать эти рамки автоматического веб-тестирования:

  • Веб-тест Visual Studio (клиенты не могут выполнить)
  • Selenium (работает только с Firefox, у наших клиентов IE)
  • WatiN (.NET-версия Watir, записывающее устройство немного глючит)
  • HP Quick Test Pro (не достаточно просто сделать новые тесты)

На самом деле ни один из них не дал того, что мне нужно ... но Селен - самый близкий.

Наши клиенты говорят на финском языке, поэтому в начале проекта программного обеспечения, на этапе спецификации, пользователь пишет пример использования, например:

  • Avaa "OmaLomake"
  • Syötä "Tuomas" kohtaan "nimi"
  • Paina "Seuraava"

Перевод:

  • Открыть "MyForm"
  • Вставить "Туомас" в поле "имя"
  • Нажмите «Далее»

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

Какой инструмент DSL подойдет для этого?

Microsoft создает новый инструмент для создания DSL в своем Осло-проекте под названием MGrammar. Это означает, что вы можете создать собственный язык, чтобы облегчить работу с машинами нетехническим людям. (Та же самая базовая идея, которая была (и не удалась) в Cobol и Visual Basic.)

Я обнаружил, что кто-то уже сделал этот вид DSL с MGrammar, но это для Ватина, а не для Selenium: http://www.codinginstinct.com/2008/11/creating-watin-dsl-using-mgrammar.html

Таким образом, процесс сервера непрерывной интеграции будет:

  1. Получить новую версию из системы контроля версий (как обычно).
  2. Сборка, запуск модульных тестов и анализ кода (как обычно).
  3. Сделать установочный пакет и версию тега в управлении версиями (как обычно).
  4. Компилировать сценарии использования в веб-тесты
  5. Запуск веб-тестов
  6. Принять / отклонить программное обеспечение: -)

Выполнение веб-теста на сервере непрерывной интеграции обычно означает большую работу по настройке. Итак, прежде чем я попробую это, мне любопытно, что вы думаете? Вы использовали такую ​​же настройку, и каков ваш опыт? (Какая точная среда?)

Как насчет DSL, будет ли у него достаточно мощности для сценариев использования или это будет еще одна бесконечная задача разработки? Будут ли клиенты когда-либо создавать тесты?

Ответы [ 3 ]

1 голос
/ 06 июля 2010

Прежде всего, Selenium работает с IE и другими браузерами, а также с Firefox; Кросс-браузерная поддержка является одной из его сильных сторон. Вот список поддерживаемых браузеров .

Однако, если вы хотите использовать DSL на человеческом языке для написания тестов, взгляните на Cucumber - синтаксис почти такой же, как в приведенном выше примере. У Cucumber уже есть поддержка финского языка - см. Примеры на этой ссылке.

0 голосов
/ 21 октября 2010

Программное обеспечение TestPlan использует специализированный язык для написания тестов.Он сильно зависит от предметной области и очень хорошо работает в веб-средах.Он поддерживает серверную часть Selenium, поэтому вы получаете такую ​​совместимость, плюс он может работать без браузера для еще более быстрых тестов.Я использовал его в некоторых довольно крупных веб-проектах того типа, который вы ищете.

Ваш пример сценария может выглядеть так:

GotoURL /SomePage
Click MyForm
SubmitForm with
   %Params:name% Tuomos
   %Submit% value:Next
end

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

0 голосов
/ 09 июля 2010

Инструменты интеграции Fitnesse и Selenium, такие как Selenesse (http://github.com/marisaseal/selenesse) или Fitnium (http://www.magneticreason.com/tools/fitnium/fitnium.html)) также могут служить вашим целям. Однако вам нужно найти ответ на вопрос, кто будет помещать локаторы элементов в тест случаи, написанные клиентами. Если клиенты устанавливают локаторы с помощью записывающих устройств, поддерживать их может быть невозможно. Если клиенты пишут шаги, а тестировщик / разработчик автоматизации может размещать эти локаторы с помощью регулярного выражения, пользовательской стратегии определения местоположения, этот подход может работать.

...