Константин Прищенко Selenium RC и Python: История одного проекта. - презентация

Содержание

Слайд 2

Содержание Введение Selenium IDE Использование mapping-файла PageObject model Modified PageObject model Введение в py.test Заключение

Содержание

Введение
Selenium IDE
Использование mapping-файла
PageObject model
Modified PageObject model
Введение в py.test
Заключение

Слайд 3

Введение

Введение

Слайд 4

Введение Server: OS Ubuntu Linux Workstation: OS Windows XP/7 Workstation: Mac OS X

Введение

Server:
OS Ubuntu Linux

Workstation:
OS Windows XP/7

Workstation:
Mac OS X

Слайд 5

Selenium IDE

Selenium IDE

Слайд 6

Selenium IDE

Selenium IDE

Слайд 7

Selenium IDE

Selenium IDE

Слайд 8

Selenium IDE Преимущества: Простота написания тестов с использованием такого метода Недостатки:

Selenium IDE
Преимущества:
Простота написания тестов с использованием такого метода
Недостатки:
Очень много

повторяющегося кода.
Локаторы объектов хранятся в тесте.
Слайд 9

Внешний файл для хранения локаторов

Внешний файл для хранения локаторов

Слайд 10

Использование mapping-файла Для обеспечения лучшего контроля вынесем объявление всех локаторов в

Использование mapping-файла

Для обеспечения лучшего контроля вынесем объявление всех локаторов в отдельное

хранилище.
Это может быть xml-файл:
Слайд 11

Использование mapping-файла Это может быть cfg/ini-файл: Был выбран для использования cfg-файл из-за простоты реализации и поддержки.

Использование mapping-файла

Это может быть cfg/ini-файл:
Был выбран для использования cfg-файл из-за простоты

реализации и поддержки.
Слайд 12

Использование mapping-файла Пример кода для работы с cfg-файлом: В итоге мы получаем возможность получать локатор:

Использование mapping-файла

Пример кода для работы с cfg-файлом:
В итоге мы получаем возможность

получать локатор:
Слайд 13

Использование mapping-файла

Использование mapping-файла

Слайд 14

Использование mapping-файла Преимущества данного подхода: Если локатор меняется – его необходимо

Использование mapping-файла
Преимущества данного подхода:
Если локатор меняется – его необходимо обновить

только в одном месте;
Повышается читабельность кода – имена локаторов позволяют понять логику теста;
Слайд 15

Использование Page Object модели

Использование Page Object модели

Слайд 16

PageObject модель Модель сайта: MainPage Sign in Open ent.page EntertainmentPage Open

PageObject модель

Модель сайта:

MainPage

Sign in

Open ent.page

EntertainmentPage

Open music view

MusicPage

Sort by

Music style

Show only

Слайд 17

PageObject модель Для данной модели необходимо использовать mapping-файл с отдельной секцией для каждой страницы.

PageObject модель

Для данной модели необходимо использовать mapping-файл с отдельной секцией для

каждой страницы.
Слайд 18

PageObject модель Пример класса для базовой страницы: Создание объекта:

PageObject модель

Пример класса для базовой страницы:
Создание объекта:

Слайд 19

PageObject модель Пример класса для базовой страницы: Нажатие на кнопку/ссылку:

PageObject модель

Пример класса для базовой страницы:
Нажатие на кнопку/ссылку:

Слайд 20

PageObject модель Пример класса для страницы:

PageObject модель

Пример класса для страницы:

Слайд 21

PageObject модель

PageObject модель

Слайд 22

PageObject модель Данный подход позволяет: Улучшить структуру тестов; Уменьшить повторяемость кода;

PageObject модель
Данный подход позволяет:
Улучшить структуру тестов;
Уменьшить повторяемость кода;
Увеличить

читабельность кода;
Упрощается поддержка тестов в случае изменения тестируемого приложения.
Слайд 23

Использование модифицированной Page Object модели

Использование модифицированной Page Object модели

Слайд 24

Modified PageObject модель Модель сайта: Page model Is text on page

Modified PageObject модель

Модель сайта:

Page model

Is text on page

Reload

Close

Link model

Click

Double click

TextField model

Set

text

Get text

Verify text

Page model

Is text on page

Reload

Close

Link model

Click

Double click

TextField model

Set text

Get text

Verify text

Слайд 25

Modified PageObject модель Выделим следующий элемент в логической структуре PageObject модели

Modified PageObject модель
Выделим следующий элемент в логической структуре PageObject модели —

объект элемента страницы, что обеспечит:
Улучшенную структуру объектов страниц;
Уменьшит повторяемость кода;
Уменьшит время на ознакомление с общей моделью.
Слайд 26

Modified PageObject модель Данный подход позволит поместить необходимые проверки во внутрь методов элементов:

Modified PageObject модель

Данный подход позволит поместить необходимые проверки во внутрь методов

элементов:
Слайд 27

Modified PageObject модель Данный подход не изменяет внешнего вида теста.

Modified PageObject модель

Данный подход не изменяет внешнего вида теста.

Слайд 28

Modified PageObject модель С помощью данного подхода упрощается работа с о

Modified PageObject модель
С помощью данного подхода упрощается работа с о специфическими

элементами различных библиотек.
Например JSON ComboBox-элемент: поле для ввода, кнопка и div-секции со всеми возможными элементами.
Слайд 29

Modified PageObject модель

Modified PageObject модель

Слайд 30

Введение в py.test

Введение в py.test

Слайд 31

Введение в py.test Система разработана Holger Krekel-ом. Инсталляция: easy_install pytest pip

Введение в py.test
Система разработана Holger Krekel-ом.
Инсталляция:
easy_install pytest
pip install pytest
Запуск через

командную строку:
py.test
Слайд 32

Введение в py.test Стандартные операции ввода/вывода показываются только в случае ошибки

Введение в py.test
Стандартные операции ввода/вывода показываются только в случае ошибки
Автоматическое распознование

тестов:
ищутся все файлы test_*.py
внутри файлов ищутся все функции test_* и все Test классы.
Слайд 33

Введение в py.test Для верификации значений в тесте используется assert:

Введение в py.test

Для верификации значений в тесте используется assert:

Слайд 34

Введение в py.test Можно пропустить тест: Можно пропустить тест при условии:

Введение в py.test
Можно пропустить тест:
Можно пропустить тест при условии:
Можно пометить тест

как негативный:
Можно пометить тест своей собственной меткой:
Слайд 35

Введение в py.test

Введение в py.test

Слайд 36

Заключение

Заключение

Слайд 37

Заключение

Заключение

Слайд 38

Заключение По-моему мнению, связка Selenium RC + py.test с использованием PageObject

Заключение
По-моему мнению, связка Selenium RC + py.test с использованием PageObject модели

для автоматического тестирования является наиболее оптимальной.
Построенный фреймворк позволил использовать тесты для:
проверки новой версии приложения (BVT);
полной проверки приложения (full regression);
выборочной проверки выбранных модулей;
организации помощи ручному тестированию.