|
| ||||||||||||
| ||||||||||||
|
2008 г.
Тестирование web-приложений с помощью RubyАлександр Симаков, alexander-simakov.blogspot.com ВведениеТестирование web-приложений является неотъемлемой частью процесса их разработки. Существуют различные уровни тестирования, вот некоторые из них:
В этой статье рассказывается о высокоуровневой методике тестирования web-приложений которую можно использовать как для приемочного так и для системного тестирования. Ключевую роль при этом играет Ruby-библиотека Watir (Web Application Testing In Ruby). Библиотека Watir позволяет запрограммировать действия браузера Internet Explorer на языке Ruby. Таким образом можно автоматизировать значительную часть ручной работы тестеров по заполнению форм, переходу по ссылкам, проверке User-Stories т.д. Библиотека WatirДля управления браузером библиотека Watir использует протокол OLE. Это накладывает определенные ограничения как на выбор платформы, так и на выбор браузера. Так, на момент написания этих строк Watir работает только под Windows и только с Internet Explorer. Не отчаивайтесь раньше времени если у вас другая система или вы пользуетесь другим браузером! Существуют версии Watir для Firefox и для Safari:
УстановкаЕсли вы подключены к интернету напрямую, то для установки Watir достаточно всего одной команды: gem install watir Bulk updating Gem source index for: http://gems.rubyforge.org Install required dependency win32-process? [Yn] Y Install required dependency windows-pr? [Yn] Y Install required dependency windows-api? [Yn] Y Install required dependency win32-api? [Yn] Y Select which gem to install for your platform (i386-mswin32) 1. win32-api 1.2.0 (ruby) 2. win32-api 1.2.0 (x86-mswin32-60) 3. win32-api 1.1.0 (x86-mswin32-60) 4. win32-api 1.1.0 (ruby) 5. Skip this gem 6. Cancel installation > 2 Install required dependency win32-api? [Yn] Y Select which gem to install for your platform (i386-mswin32) 1. win32-api 1.2.0 (x86-mswin32-60) 2. win32-api 1.2.0 (ruby) 3. Skip this gem 4. Cancel installation > 1 Install required dependency activesupport? [Yn] Y Successfully installed watir-1.5.6 Successfully installed win32-process-0.5.9 Successfully installed windows-pr-0.9.4 Successfully installed windows-api-0.2.4 Successfully installed win32-api-1.2.0-x86-mswin32-60 Successfully installed win32-api-1.2.0-x86-mswin32-60 Successfully installed activesupport-2.1.1 Installing ri documentation for watir-1.5.6... Installing ri documentation for win32-process-0.5.9... Installing ri documentation for windows-pr-0.9.4... Installing ri documentation for windows-api-0.2.4... Installing ri documentation for win32-api-1.2.0-x86-mswin32-60... Installing ri documentation for win32-api-1.2.0-x86-mswin32-60... Installing ri documentation for activesupport-2.1.1... Installing RDoc documentation for watir-1.5.6... Installing RDoc documentation for win32-process-0.5.9... Installing RDoc documentation for windows-pr-0.9.4... Installing RDoc documentation for windows-api-0.2.4... Installing RDoc documentation for win32-api-1.2.0-x86-mswin32-60... Installing RDoc documentation for win32-api-1.2.0-x86-mswin32-60... Installing RDoc documentation for activesupport-2.1.1...Если вы подключены через прокси, то перед инсталляцией потребуется задать переменную окружения http_proxy в следующем виде:
http://user:password@host:portДля установки переменной окружения выберите "Мой компьютер" -> "Свойства" -> "Дополнительно" -> "Переменные среды"-> "Создать". После установки запустите интерактивную консоль Ruby irb(main):001:0> require 'watir' => true irb(main):002:0>Если при загрузке модуля watir не возникло ошибок, значит установка прошла успешно.
ПримерСледующий пример демонстрирует базовые принципы работы с библиотекой Watir. Сохраните этот код в файле и запустите его на выполнение. Со стороны будет казаться, что браузер делает все сам: загружает страницы, заполняет формы, нажимает на кнопки и т.д. Для удобства, активный элемент подсвечивается желтым цветом. # # simple_example.rb # # Александр Симаков, <xdr (тчк) box на Google Mail> # http://alexander-simakov.blogspot.com/ # # Подключаем библиотеку Watir require 'watir' # Открываем новое окно IE ie = Watir::IE.new # Переходим на страницу Google ie.goto "http://www.google.ru/" # Заполняем поисковый запрос ie.text_field(:name, "q").set "Watir home page" # Нажимаем на кнопку "Мне повезет!" ie.button(:name, "btnI").click # Проверяем, есть ли на странице указанный текст if ie.text.include? "Web App Testing in Ruby" puts "Yes!" endИтак, давайте разберемся как работает эта программа. В начале мы открываем новое окно Internet Explorer. Отмечу, что Watir также позволяет подключаться и к уже открытым окнам. Нужное окно при этом можно найти либо по ссылке, которая указана в адресной строке, либо по заголовку окна. Далее мы переходим на сайт Google. На главной странице имеется поле для ввода запроса и две кнопки. Watir позволяет искать элементы расположенные на странице по многим параметрам: по атрибутам Теперь нажмем на кнопку "Мне повезет!". В отличие от обычного поиска мы автоматически перейдем по самой релевантной ссылке. Поскольку наш запрос достаточно точен мы с очень высокой долей вероятности попадем на домашнюю страницу проекта Watir. Отмечу, что библиотека Watir позволяет не только находить объекты по различным критериям и манипулировать ими, но и анализировать результат. Так в строке 24 листинга мы проверяем содержит ли страница на которую мы перешли строку "Web App Testing in Ruby". Эту возможность можно использовать для написания модульных тестов. IE Developer ToolbarНеоценимую помощь в написании тестовых сценариев оказывает IE Developer Toolbar - специальная отладочная панель для Internet Explorer. С ее помощью можно без труда просмотреть атрибуты любого элемента на странице:
Интерактивная консоль RubyЕсли при написании тестового сценария вы зашли в тупик, например, не можете найти элемент, генерируемый автоматически при помощи JavaScript, попробуйте irb(main):001:0> require 'watir' => true irb(main):002:0> ie = Watir::IE.new => #<Watir::IE:0x340db40 @ole_object=nil, @typingspeed=0.08 ... irb(main):003:0> ie.goto "http://www.google.ru/" => 1.015 irb(main):004:0> ie.show_all_objects -----------Objects in page ------------- ... hidden name=hl id= value=ru alt= src= text name=q id= value= alt= src= submit name=btnG id= value=Поиск в Google alt= src= submit name=btnI id= value=Мне повезёт! alt= src= radio name=lr id=all value= alt= src= radio name=lr id=il value=lang_ru alt= src= hidden name=aq id= value=f alt= src= hidden name=oq id= value= alt= src= ... => nil irb(main):005:0> ie.button(:name, "btnG").flash => nil irb(main):006:0>В этом примере мы загрузили библиотеку Watir, открыли новое окно, перешли на сайт Google и попросили вывести все доступные на данной странице объекты. В этом списке имеются две кнопки: btnG и btnI. Последняя команда заставляет кнопку "Поиск в Google" мерцать желтым цветом некоторое время. Этот прием удобно использовать для поиска элементов.
Что дальшеВ этой статье мы познакомились с библиотекой Watir. Это очень мощный и гибкий инструмент с помощью которого можно автоматизировать тестирование любого web-приложения. За время существования проекта вокруг него сформировалось внушительное сообщество пользователей. На WiKi-портале сообщества можно найти статьи, обзоры, учебники, FAQ, спецификации и другую полезную информацию по Watir. Заходите и учитесь! |
|
CITForum © 1997–2025