Слайд 2План
Проблемы автоматизации
Что такое фреймворк?
Как он решает проблемы?
Некоторые практики с фреймворка на Selenium

RC
Слайд 3Проблемы автоматизации
В конце цикла разработки – много зависимостей
Изменения UI
Изменение бизнес-логики и тест-кейсов
BA
DEV
QA
Auto

QA
Слайд 4Что такое Framework?
Каркас, структура, сфера деятельности
В информационных системах структура программной системы; программное

обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.
Спасибо, Википедия
Слайд 5Зачем нужен Framework?
Ре-использование кода
Решение проблем одним изменением
Уменьшение количества изобретателей «велосипедов»

Слайд 6Layering
Подход к построению архитектуры системы

Слайд 7UI Layer
Цель: контролировать изменения UI
Примеры:
Хранилище локаторов
Object Repository в QTP
Name Mapping в TestComplete
UI-Element

в Selenium IDE
Слайд 8Business components layer
Цель: контролировать изменения бизнес-логики
Примеры:
Reusable Actions в QTP
Functions в TestComplete или

любом другом инструменте
Слайд 9Utilities
Цель: вспомогательная
Примеры:
Логгирование
Работа с базой данных
Чтение настроек и тестовых данных

Слайд 10Типичная схема
AUT / SUT
Utilities layer
UI layer
Business layer
Test scripts

Слайд 11KISS
Используйте готовые решения
Усложняйте архитектуру тогда, когда это нужно
Старайтесь делать всё проще и

очевидно
Слайд 13Запуск тестов из командной строки
Ant (http://ant.apache.org/)
Запуск selenium server
Компиляция исходных кодов
Запуск тестов
Остановка selenium

server
Слайд 14Как хранить общий доступ к selenium?
Передавать каждой функции
Инициализировать изначально и использовать статическое

поле для обращения к нему
Слайд 15Базовый класс для всех тест кейсов

Слайд 16Структура тест-кейса
Preconditions
Test case
Cleanup

Слайд 17Где хранить настройки?
Найдите грань между настройками и тестовыми данными:
Selenium host
Selenium port
Timeout
Base URL
properties-файлы

– стандарт для Java (http://download.oracle.com/javase/1.4.2/docs/api/java/util/Properties.html)
config.xml – для C#
Слайд 18Где хранить тестовые данные?
Excel
CSV-файлы
База данных
XML

Слайд 19Excel-хранилища данных
Табличные данные на каждом sheet
Key-value пары в столбец
Именованные диапазоны
Чем читать excel?
JDBC

(http://www.ehow.com/how_4810548_use-jdbc-connect-ms-excel.html)
POI (http://poi.apache.org/)
Слайд 20Где хранить локаторы?
Поля классов

Слайд 21Где хранить локаторы?
Поля интерфейсов

Слайд 22Где хранить локаторы?
properties-файлы
http://seleniumhq.org/docs/06_test_design_considerations.html#ui-mapping

Слайд 23Структура UI Layer
Разбивка на страницы
Сбор «особенных» UI элементов в отдельные классы:
Различные кастомизированные

кнопки-поля (нужно вызывать специальные события)
Upload-download файлов
Иерархия объектов (GWT, например)
Слайд 24Структура Business Layer
Набор статических методов, объединённых по классам
Чем проще, тем лучше

Слайд 25Tracebility с ручным тестированием
Соотнесение тест-кейсов
Соотнесение тестовых шагов
Интеграция с существующей отчётностью
HP Quality Center
TestLink
JIRA

Слайд 26Отчёты
HTML
Группировка по test suite и test case
Screenshots
Максимально user friendly
При возможности – интеграция

с существующей системой отчётности
Слайд 27Screenshots
void captureScreenshot (String filename);
Обычно делается во время ошибки
Try-catch в BaseTest
Listener в JUnit
http://www.cloudtesting.com/blog/2009/06/24/capturing-screen-shots-of-browsers-with-selenium-and-cloud-testing-part-1/
