АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ. С ЧЕГО НАЧАТЬ?ЧАСТЬ 1
Prepared by: Anton SirotaSkype: yader-2007
Обо мнеТимлид группы автоматизации
Активный спикер QA Talk, QA School, IT School
Создатель менторских программ, а также ментор
QA и QA Automation в компании
Опыт работы QA Automation более 4х лет
С#
• Автотесты работают быстрее, чем человек.• Автотесты выполняются с большей точностью.• Автоматизация тестирования позволяет
повысить качество продукта.• Автоматизация может использоваться
практически во всех процессах тестирования.• Автотесты могут выполняться независимо от
времени.
Зачем нужна автоматизация?
• Функциональные тесты • Нагрузочные тесты • GUI тесты• Тестирование безопасности• Тестирование производительности• Тестирование баз данных• Unit-тесты
Типы автоматизированных тестов
Какие приложения мы автоматизируем?
Web Desktop Mobile
Инструменты
Selenium Web Driver
Локаторы
• Xpath (//a[contains(@class,’submit’)])• Css (div > a.submitButton)• Name (submitForm)• Id (Submit)• Link (Submit)
Объектно-ориентированное программирование
• Абстракция • Инкапсуляция• Наследование• Полиморфизм• Класс• Объект
Наследование
Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом.
Абстракция
Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.
ИнкапсуляцияИнкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе, и скрыть детали реализации от пользователя.
Модификаторы доступа:• Private – доступен только в своем классе• Protected – доступен в своем классе и в дочерних
классах• Public – доступен по всему проекту
Полиморфизм
Полиморфизмом назвается возможность работать с несколькими типами так, как будто это один и тот же тип и в то же время поведение каждого типа будет уникальным в зависимости от его реализации.
Java Core• Типы данных (String, Integer, Boolean, BigDecimal,
int, boolean, double, etc.)• Методы для работы с данными (String.format(a,b),
Boolean.toString(), etc.)• Массивы (String[], int[])• for/switch/while• try-catch• Исключения Exceptions(виды исключений)• Collections (Map, Set, List, Queue, etc.)
PageObject паттерн
• Page Object – это структурный шаблон проектирования, используемый в автоматизированном тестировании пользовательского интерфейса для разделения высокоуровневой тестовой логики от низкоуровневой логики поиска конкретных элементов пользовательского интерфейса.
• Page Object помогает разделять логику и реализацию• В Page Object одна страница чаще всего представляет
собой отдельный класс.
PageObject паттерн
PageObject паттерн
Example 1
Example 2
Как выглядят тесты?
• Название тестового метода должно быть предложением
• Требования – это тоже поведение• Выразительное название очень помогает, когда
тест обрушился• BDD предоставляет «общий язык» для анализа
Принципы BDD
- сводит к минимуму расстояние между разработчиками, пользователями и аналитиками систем. Достигается это путем получения Executable Scenarios, иными словами, сценарии которые описывают пользователи переводятся в исполняемый тест.
- заменяет manual regression testing, smoke testing, story testing.
- читаемые отчеты;- интеграция с Jira (thucydides-jira-plugin (for Thucydides));- кто бы не запускал тесты, понятно что происходит, что
тестируется и какие проблемы возникают
Преимущества BDD
Вопросы?