Frameworks Игорь Хрол
План Проблемы автоматизации Что такое фреймворк? Как он решает проблемы? Некоторые практики с фреймворка на Selenium RC
Проблемы автоматизации В конце цикла разработки – много зависимостей Изменения UI Изменение бизнес-логики и тест-кейсов BA DEV QA Auto QA
Что такое Framework? Каркас, структура, сфера деятельности В информационных системах структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. Спасибо, Википедия
Зачем нужен Framework? Ре-использование кода – Решение проблем одним изменением – Уменьшение количества изобретателей «велосипедов»
Layering Подход к построению архитектуры системы
UI Layer Цель: контролировать изменения UI Примеры: – Хранилище локаторов – Object Repository в QTP – Name Mapping в TestComplete – UI-Element в Selenium IDE
Business components layer Цель: контролировать изменения бизнес- логики Примеры: – Reusable Actions в QTP – Functions в TestComplete или любом другом инструменте
Utilities Цель: вспомогательная Примеры: – Логгирование – Работа с базой данных – Чтение настроек и тестовых данных
Типичная схема AUT / SUT Utilities layer UI layer Business layer Test scripts
KISS Используйте готовые решения Усложняйте архитектуру тогда, когда это нужно Старайтесь делать всё проще и очевидно
Best Practices
Запуск тестов из командной строки Ant ( – Запуск selenium server – Компиляция исходных кодов – Запуск тестов – Остановка selenium server
Как хранить общий доступ к selenium? Передавать каждой функции Инициализировать изначально и использовать статическое поле для обращения к нему
Базовый класс для всех тест кейсов
Структура тест-кейса Preconditions Test case Cleanup FlowPreconditionsMainCleanup SuccessfulPassed Failed cleanupPassed Failed Failed test casePassedFailedPassed/Failed Failed preconditionsFailedNot runPassed/Failed
Где хранить настройки? Найдите грань между настройками и тестовыми данными: – Selenium host – Selenium port – Timeout – Base URL properties-файлы – стандарт для Java ( api/java/util/Properties.html) api/java/util/Properties.html config.xml – для C#
Где хранить тестовые данные? Excel CSV-файлы База данных XML
Excel-хранилища данных Табличные данные на каждом sheet Key-value пары в столбец Именованные диапазоны Чем читать excel? – JDBC ( jdbc-connect-ms-excel.html) jdbc-connect-ms-excel.html – POI (
Где хранить локаторы? Поля классов
Где хранить локаторы? Поля интерфейсов
Где хранить локаторы? properties-файлы onsiderations.html#ui-mapping onsiderations.html#ui-mapping
Структура UI Layer Разбивка на страницы Сбор «особенных» UI элементов в отдельные классы: – Различные кастомизированные кнопки-поля (нужно вызывать специальные события) – Upload-download файлов Иерархия объектов (GWT, например)
Структура Business Layer Набор статических методов, объединённых по классам Чем проще, тем лучше
Tracebility с ручным тестированием Соотнесение тест-кейсов Соотнесение тестовых шагов Интеграция с существующей отчётностью – HP Quality Center – TestLink – JIRA
Отчёты HTML Группировка по test suite и test case Screenshots Максимально user friendly При возможности – интеграция с существующей системой отчётности
Screenshots void captureScreenshot (String filename); Обычно делается во время ошибки – Try-catch в BaseTest – Listener в JUnit 06/24/capturing-screen-shots-of- browsers-with-selenium-and-cloud- testing-part-1/ 06/24/capturing-screen-shots-of- browsers-with-selenium-and-cloud- testing-part-1/
Вопросы?