Skip to content
obmihail edited this page May 31, 2015 · 10 revisions

Описание

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

  • быстрое сравнение внешнего вида веб-интерфейсов (снятых скриншотов с одобренной версией) в различных браузерах. Для снятия скриншота используется соединение с реальным браузером через JSONWireProtocol (модуль selenium). Сравнение выполняется параллельно и автоматически, поэтому занимает гораздо меньше времени, нежели проверка при помощи человека. Это очень удобно в ситуациях когда нужно провести срочную поверхностную проверку работоспособности приложения. Педант позволяет сделать это для нового проекта за считанные минуты.
  • просмотр отчетов о сравнении и управление скриншотами. Независимо от того как был осуществлен запуск (из консоли, из веб интерфейса) в системе отображаются отчеты о запуске. Можно просмотреть расхождения между скриншотами или просто увидеть как выглядит ваша страница в разных браузерах.
  • BDD сборка с отчетами, скриншотами и управление их состоянием (для BDD используется behave). В отличие от оригинального использования behave - pedant позволяет запускать параллельно фичи, либо сценарии. Это значительно ускоряет работу. Кроме того имеется возможность снимать скриншоты после каждого шага и выполнять их сравнение в эталонной версией.

Типовые задачи для инструмента:

  • Регрессионное тестирование приложения (проверка "что ничего не поломалось" в результате действий над приложением)
  • Регрессионное тестирование веб-интерфейса
  • Просмотр веб-интерфейсов в различных браузерах
  • Экспресс-проверка сайта или автоматизация за считанные минуты (нужно установить педант -1.5 минуты, завести проект - 1 минута и запустить phantomJS - 2 минуты). Дальше можно уже выполнять первые проверки

Где брать браузеры для проверки:

Установка на локальном компьютере

PHANTOMJS.

Скачать свежую версию можно здесь http://phantomjs.org/download.html Запустить в режиме webdriver (параметр --webdriver 4445, где 4445 - порт, на котором работает браузер)

SELENIUM

Установить java, скачать selenium-server http://www.seleniumhq.org/download/ Дополнительные драйверы: adndroid https://github.com/SeleniumHQ/selenium/wiki/Android-Driver chrome https://sites.google.com/a/chromium.org/chromedriver/

Установка на сервере

Все браузеры можно установить на удаленных машинах и в качестве адреса браузера использовать адрес этого сервера. Установка ничем не отличается от локальной версии.

Сторонние сервисы

Можно использовать готовые сервисы, которые поддерживают JsonWireProtocol. Например http://browserstack.com

Установка:

Системные требования

Для работы системы необходимо установить: python 2.7, pip и python-dev В Ubuntu достаточно выполнить команды: sudo apt-get install python python-pip python-dev В Windows необходимо скачать и установить последнюю версию python 2.7 (http://docs.python-guide.org/en/latest/starting/install/win/). На текуший момент установщик включает в себя python и pip, поэтому скачать необходимо только его. Во время установки не забудьте установить опцию “Add python.exe to system path”

Установка pedant в linux

Склонировать репозиторий <ссылка> и запустить скрипт linux-install.sh

Установка pedant в mac os

Склонировать репозиторий <ссылка> и запустить скрипт linux-install.sh

Установка pedant в windows

Склонировать репозиторий <ссылка> и запустить скрипт win-install.bat

Запуск:

веб-сервер

Linux\MacOS: сделать файл исполняемым и запустить: ./bin/pedant-server
Windows: запустить через python: python bin/pedant-server
Аргументы для запуска:
    --host Имя хоста, не обязательный, по умолчанию localhost
    --port Номер порта, не обязательный, по умолчанию 8081

консольная утилита для запуска сравнения скриншотов

Linux\MacOS: сделать файл исполняемым и запустить: ./bin/pedant-screens
Windows: запустить через python: python.exe bin/pedant-screens
Аргументы для запуска:
    --mode Использование заранее определенного набора браузеров и состояний страниц (задается в конфиге)
    --no-logging Отключить логирование, не рекомендуется
    --verbose Включение детального вывода
    --threads Максимально допустимое количество потоков
    --browsers Список идентификаторов браузеров, в которых необходимо провести проверку
    --states Список идентификаторов состояний, к которым нужно приводить страницы
    --no-diffs Отключение генерации отличий между скриншотами
    --info Вывод информации о текущем проекте

консольная утилита для запуска bdd сценариев

Linux\MacOS: сделать файл исполняемым и запустить: ./bin/pedant-bdd
Windows: запустить через python: python.exe bin/pedant-bdd
Аргументы для запуска:
    --threads Максимально допустимое количество потоков
    --browsers Список идентификаторов браузеров, в которых необходимо запускать сценарии
    --features Список фич, которые необходимо проверить
    --scenarios Список сценариев, которые необходимо проверить
    --steps Список шагов, которые необходимо выполнить
    --no-logging Отключение логирования, не рекомендуется
    --verbose Включение детального вывода
    --path Путь до директории с фичами или до конкретного файла с фичей

Использование:

заведение проекта

заведение проекта через веб-интерфейс

todo

присоединение существующего проекта на диске

В нужной директории создайте файл pedant.json следующего содержания:

{"name":"project name"}

project name - имя вашего проекта (Латинские буквы, цифры и нижнее подчеркивание). Так система сможет опознать данную директорию для создания проекта. Затем запустите сервер, перейдите на главную страницу (http://localhost:8081/) и введите в поле Path путь до данной папки или до родительской. Нажмите кнопку Attach projects и система сама найдет все проекты и они отобразится в списке.

удаление проекта

Рекомендуется удалять проект через веб-интерфейс

редактирование конфигурации проекта

Рекомендуется редактировать конфиг проекта через веб-интерфейс

сравнение скриншотов веб-страниц

запуск из веб-интерфейса

После того как вы создали проект - вы можете сразу перейти к проверке, для этого кликните по кнопке actions соответствующего проекта на главной странице и выберите пункт “Run screenshots compare”. Вы можете запускать сравнение как по заранее сохраненным режимам в конфиге (modes), так и определять параметры непосредственно перед запуском. Чтобы начать проверку - нажмите кнопку RUN. После запуска должна отобразиться статистика текущего запуска и лог запуска в соответствующем поле. Во время проверке можно просматривать отчет на лету, открыв страницу последнего отчета в новой вкладке (кнопка Last Report)

запуск из консоли

Запустите скрипт bin/pedant-screens, находясь в директории проекта. Справка по параметрам - ключ -h Примеры: pedant-screens -h - вывод справки pedant-screens --verbose --browsers “PHATNOMJS_800x600” - запуск проверки в браузере с идентификатором PHANTOMJS_800x600 и вывод подробной информации о запуске. Важно! Чтобы не было коллизий при запуске разными способами - проект на время запуска будет заблокирован. Если запуск был прерван аварийно - удалите файл lock.file в директории проекта для разблокирования.

состояния страниц (states)

Для того чтобы проверять страницы, расположенные по одним адресам, но в разных состояниях - необходимо привести страницы к этим состояниям. Для этой задачи необходимо: Создать файл PedantStates.py в директории вашего проекта Описать в нем класс, унаследовав его от класса pedant.states.Default Внутри класса определить методы работы со страницей в данном стейте, пометив эти методы соответствующими декораторами ( @event('before_all'), @event('before_one'), @event('after_all') ) Для примера можете посмотреть файл PedantStates.py в директории web/data_storage/Test_project

запуск bdd сценариев

Для организации bdd сборок используется behave (устанавливается вместе с остальными зависимостями). О формате .feature файлов и описании шагов - см. документацию к behave По умолчанию директория для хранения .feature файлов - <PROJECT_DIRECTORY>/bdd/features. Для примера смотрите директорию web/data_storage/Test_project дополнительные управляющие теги для фич и сценариев тег фичи - @parallel - фича может быть запущена параллельно с другими фичами. Если тега нет - фича будет проверяться последовательно (в разных браузерах). Если фича проверяется в 3х браузерах, имеет 3 сценария - будет создано 3 параллельных потока и в каждом фича выполнится целиком. тег фичи - @parallelscenarios - все сценарии фичи и сама фича будут запущены параллельно друг другу и независимо друг от друга. Т.е. если фича проверяется в 3х браузерах, имеет 3 сценария - будет создано 9 параллельных потоков и в каждом будет выполнено по одному сценарию фичи. тег сценария @ui - если данный сценарий нуждается в selenium браузере - поставьте этот тег и перед сценарием будет запущен браузер и передан в context. В описании к step’у для его получения необходимо вызвать context.get_browser() тег сценария @screenshots - для каждого шага сценария будут сняты скриншоты и отображены в отчете тег сценария @compare - для каждого шага сценария будут сняты скриншоты и будет запущено сравнения их с эталонной версией. В случае если эталонная версия не найдена или имеются отличия между текущей версией и эталонной - шаг будет отмечен как проваленный.

запуск из веб-интерфейса

Для запуска выберите пункт меню Run BDD features у соответствующего проекта на главной странице. Интерфейс практически такой же как и при запуске сравнения скриншотов. В случае если в проекте нет фич - будет отображаться соответствующая ошибка.

запуск из консоли

Для запуска из консоли необходимо перейти в директорию вашего проекта и запустить скрипт ./bin/pedant-bdd.

работа с отчетами о сравнении скриншотов

фиксирование скриншота для страницы (approve)

Чтобы сделать текущую версию скриншота эталонной (с которой происходит сравнение) - нажмите кнопку approve в последней колонке. В случае успеха операции она изменится на изображение отмены операции (красный крестик). В случае ошибки - она будет отображена в верхней части страницы. работа с одобренными состояниями работа с отчетами о запуске bdd сценариев фиксирование скриншота для шага сценария (approve)

Clone this wiki locally