Константин Прищенко Selenium RC и Python: История одного проекта
Содержание <ul><li>Введение </li></ul><ul><li>Selenium IDE </li></ul><ul><li>Использование mapping-файла </li></ul><ul><li...
Введение
Введение Server: OS Ubuntu Linux Workstation: OS Windows XP/7 Workstation: Mac OS X
Selenium IDE
Selenium IDE
Selenium IDE
Selenium IDE <ul><li>Преимущества : </li></ul><ul><li>Простота  написания тестов с использованием такого метода </li></ul>...
Внешний файл для хранения локаторов
Использование mapping-файла Для обеспечения лучшего контроля вынесем объявление всех локаторов в отдельное хранилище. Это ...
Использование mapping-файла Это может быть cfg/ini-файл: Был выбран для использования cfg-файл из-за простоты реализации и...
Использование mapping-файла Пример кода для работы с cfg-файлом: В итоге мы получаем возможность получать локатор:
Использование mapping-файла
Использование mapping-файла <ul><li>Преимущества данного подхода: </li></ul><ul><li>Если локатор меняется – его необходимо...
Использование Page Object модели
PageObject модель Модель сайта: MainPage Sign in Open ent.page EntertainmentPage Open music view MusicPage Sort by Music s...
PageObject модель Для данной модели необходимо использовать mapping-файл с отдельной секцией для каждой страницы.
PageObject модель Пример класса для базовой страницы: Создание объекта:
PageObject модель Пример класса для базовой страницы: Нажатие на кнопку/ссылку:
PageObject модель Пример класса для страницы:
PageObject модель
PageObject модель <ul><li>Данный подход позволяет: </li></ul><ul><li>Улучшить структуру тестов; </li></ul><ul><li>Уменьшит...
Использование модифицированной Page Object модели
Modified PageObject модель Модель сайта: Page model Is text on page Reload Close Link model Click Double click TextField m...
Modified PageObject модель <ul><li>Выделим следующий элемент в логической структуре PageObject модели — объект элемента ст...
Modified PageObject модель Данный подход позволит поместить необходимые проверки во внутрь методов элементов:
Modified PageObject модель Данный подход не изменяет внешнего вида теста.
Modified PageObject модель С помощью данного подхода упрощается работа с о специфическими элементами различных библиотек. ...
Modified PageObject модель
Введение в py.test
Введение в py.test Система разработана Holger Krekel-ом. Инсталляция:  easy_install py test pip install py test Запуск чер...
Введение в py.test <ul><li>Стандартные операции ввода/вывода показываются только в случае ошибки </li></ul><ul><li>Автомат...
Введение в py.test Для верификации значений в тесте используется assert:
Введение в py.test Можно пропустить тест: Можно пропустить тест при условии: Можно пометить тест как негативный: Можно пом...
Введение в py.test
Заключение
Заключение
Заключение <ul><li>По-моему мнению, связка Selenium RC + py.test с использованием PageObject модели для автоматического те...
Контакты Спасибо за внимание! Copyright © 2011 SoftServe, Inc. Прищенко Константин [email_address]
Upcoming SlideShare
Loading in …5
×

Selenium RC + python: история одного проекта

11,561 views
11,400 views

Published on

Краткая история автоматизации тестирования с использованием Selenium RC и Python. Выбор способа организации тестов (Selenium IDE, Page Object модель и ее модификация). Преимущества и недостатки от использования каждого из способов. Способы хранения локаторов и их сравнение. Описание фреймворка py.test, базовый пример интеграции тестов и их использования.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
11,561
On SlideShare
0
From Embeds
0
Number of Embeds
6,146
Actions
Shares
0
Downloads
45
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Selenium RC + python: история одного проекта

  1. 1. Константин Прищенко Selenium RC и Python: История одного проекта
  2. 2. Содержание <ul><li>Введение </li></ul><ul><li>Selenium IDE </li></ul><ul><li>Использование mapping-файла </li></ul><ul><li>PageObject model </li></ul><ul><li>Modified PageObject model </li></ul><ul><li>Введение в py.test </li></ul><ul><li>Заключение </li></ul>
  3. 3. Введение
  4. 4. Введение Server: OS Ubuntu Linux Workstation: OS Windows XP/7 Workstation: Mac OS X
  5. 5. Selenium IDE
  6. 6. Selenium IDE
  7. 7. Selenium IDE
  8. 8. Selenium IDE <ul><li>Преимущества : </li></ul><ul><li>Простота написания тестов с использованием такого метода </li></ul><ul><li>Недостатки : </li></ul><ul><li>Очень много повторяющегося кода. </li></ul><ul><li>Локаторы объектов хранятся в тесте. </li></ul>
  9. 9. Внешний файл для хранения локаторов
  10. 10. Использование mapping-файла Для обеспечения лучшего контроля вынесем объявление всех локаторов в отдельное хранилище. Это может быть xml-файл:
  11. 11. Использование mapping-файла Это может быть cfg/ini-файл: Был выбран для использования cfg-файл из-за простоты реализации и поддержки.
  12. 12. Использование mapping-файла Пример кода для работы с cfg-файлом: В итоге мы получаем возможность получать локатор:
  13. 13. Использование mapping-файла
  14. 14. Использование mapping-файла <ul><li>Преимущества данного подхода: </li></ul><ul><li>Если локатор меняется – его необходимо обновить только в одном месте; </li></ul><ul><li>Повышается читабельность кода – имена локаторов позволяют понять логику теста; </li></ul>
  15. 15. Использование Page Object модели
  16. 16. PageObject модель Модель сайта: MainPage Sign in Open ent.page EntertainmentPage Open music view MusicPage Sort by Music style Show only
  17. 17. PageObject модель Для данной модели необходимо использовать mapping-файл с отдельной секцией для каждой страницы.
  18. 18. PageObject модель Пример класса для базовой страницы: Создание объекта:
  19. 19. PageObject модель Пример класса для базовой страницы: Нажатие на кнопку/ссылку:
  20. 20. PageObject модель Пример класса для страницы:
  21. 21. PageObject модель
  22. 22. PageObject модель <ul><li>Данный подход позволяет: </li></ul><ul><li>Улучшить структуру тестов; </li></ul><ul><li>Уменьшить повторяемость кода; </li></ul><ul><li>Увеличить читабельность кода; </li></ul><ul><li>Упрощается поддержка тестов в случае изменения тестируемого приложения. </li></ul>
  23. 23. Использование модифицированной Page Object модели
  24. 24. 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. 25. Modified PageObject модель <ul><li>Выделим следующий элемент в логической структуре PageObject модели — объект элемента страницы, что обеспечит: </li></ul><ul><li>Улучшенную структуру объектов страниц; </li></ul><ul><li>Уменьшит повторяемость кода; </li></ul><ul><li>Уменьшит время на ознакомление с общей моделью. </li></ul>
  26. 26. Modified PageObject модель Данный подход позволит поместить необходимые проверки во внутрь методов элементов:
  27. 27. Modified PageObject модель Данный подход не изменяет внешнего вида теста.
  28. 28. Modified PageObject модель С помощью данного подхода упрощается работа с о специфическими элементами различных библиотек. Например JSON ComboBox-элемент: поле для ввода, кнопка и div-секции со всеми возможными элементами.
  29. 29. Modified PageObject модель
  30. 30. Введение в py.test
  31. 31. Введение в py.test Система разработана Holger Krekel-ом. Инсталляция: easy_install py test pip install py test Запуск через командную строку: py.test
  32. 32. Введение в py.test <ul><li>Стандартные операции ввода/вывода показываются только в случае ошибки </li></ul><ul><li>Автоматическое распознование тестов: </li></ul><ul><li>ищутся все файлы test_*.py </li></ul><ul><li>внутри файлов ищутся все функции test_* и все Test классы. </li></ul>
  33. 33. Введение в py.test Для верификации значений в тесте используется assert:
  34. 34. Введение в py.test Можно пропустить тест: Можно пропустить тест при условии: Можно пометить тест как негативный: Можно пометить тест своей собственной меткой:
  35. 35. Введение в py.test
  36. 36. Заключение
  37. 37. Заключение
  38. 38. Заключение <ul><li>По-моему мнению, связка Selenium RC + py.test с использованием PageObject модели для автоматического тестирования является наиболее оптимальной. </li></ul><ul><li>Построенный фреймворк позволил использовать тесты для: </li></ul><ul><li>проверки новой версии приложения (BVT); </li></ul><ul><li>полной проверки приложения ( full regression); </li></ul><ul><li>выборочной проверки выбранных модулей; </li></ul><ul><li>организации помощи ручному тестированию. </li></ul>
  39. 39. Контакты Спасибо за внимание! Copyright © 2011 SoftServe, Inc. Прищенко Константин [email_address]

×