Automation from the trenches

Preview:

Citation preview

AUTOMATION FROM THE TRENCHESBY GLEB RYBALKO

СоОрганизатор конференцийStratoplan World. Kharkov Edition

QA Conf 1.0: Management& Process

QA Conf 1.1: Automation&Tools

СоВедущий подкаста «Тестирование: Backstage»

www.QAConsulting.ru

О ЧЕМ ПОГОВОРИМ:

1.Цели, Инструменты, Процесс

2.Архитектура

3.Паттерны проектирования

4.Continuous Integration

5.Логирование результатов

6.Здравый смысл

ЗАЧЕМ ВАМ НУЖНА АВТОМАТИЗАЦИЯ

ЗАЧЕМ ВАМ НУЖНА АВТОМАТИЗАЦИЯ

1. Это модно\есть в Google\Facebook\Microsoft…?

2. Босс сказал, что нужна ?

3. Прочитал о автоматизации в интернете\услышал доклад и решил попробовать ?

ЗАЧЕМ ВАМ НУЖНА АВТОМАТИЗАЦИЯ

ЗАЧЕМ ВАМ НУЖНА АВТОМАТИЗАЦИЯ

1. Тестов стало очень много. Не успеваем делать регрессию

2. Нет уверенности в том, что сборки ПО приходят пригодные для тестирования

3. Клиент продолжает добавлять тестовые конфигурации, не успеваем проходить тесты на всех.

4. Нужно протестировать нагрузку на приложение

5. Нужно провести тестирование надежности

ДОМАШНЕЕ ЗАДАНИЕ

Напишите 3-5 причин почему автоматизация будет полезна или

бесполезна на вашем проекте

КАКИХ ЦЕЛЕЙ ОНА ПОМОЖЕТ ДОСТИГНУТЬ

КАКИХ ЦЕЛЕЙ ОНА ПОМОЖЕТ ДОСТИГНУТЬ

1. Ускоренное прохождение тестов

2. Увеличение надежности и стабильности сборок ПО для тестирования

3. Быстрая обратная связь о качестве ПО для программистов и клиента

4. Уменьшение рутинной работы

5. Возможность проведения тестирования, которое нельзя провести в ручную

ДОМАШНЕЕ ЗАДАНИЕ

Напишите 3-5 целей, которых поможет вам достичь

автоматизация

ЧТО ВЫ БУДЕТЕ АВТОМАТИЗИРОВАТЬ

ЧТО ВЫ БУДЕТЕ АВТОМАТИЗИРОВАТЬ

1. Smoke тесты

2. Happy path

3. Стандартные use cases

4. Регрессионное тестирование

5. Тесты производительности

КТО БУДЕТ АВТОМАТИЗИРОВАТЬ

Software Developer

Software Developer in

Testing

Manual testerAutomation

tester

КАКИЕ ИНСТРУМЕНТЫ ВЫ СОБИРАЕТЕСЬ ИСПОЛЬЗОВАТЬ

КАКИЕ ИНСТРУМЕНТЫ ВЫ СОБИРАЕТЕСЬ ИСПОЛЬЗОВАТЬ

• Когда мы задумываемся об инструментах мы думаем о:

• Собственном фреймворке• Коммерческом фреймворке

• Бесплатный инструмент автоматизации (WebDriver, xUnit, JMeter etc.)

• Коммерческий инструмент автоматизации(Test Complete, QTP, Load Runner etc)

ДОМАШНЕЕ ЗАДАНИЕ

1. Определите области вашего приложения, с которых вы

начнете автоматизацию

2. Выпишите несколько инструментов автоматизации,

которыми вы будете пользоваться

АРХИТЕКТУРА

Продумайте архитектуру тестов перед автоматизацией• Визуализируйте связи между частями

в приложении

• Разделите архитектуру тестов на уровни

• Best practices

• Посоветуйтесь с разработчиками

АРХИТЕКТУРА

Уровень представления

данных

(Presentation layer)

Бизнес логика

(Business layer)

Уровень доступа к данным

(Data Access layer)

• Используйте различные уровни абстракции

ДОМАШНЕЕ ЗАДАНИЕ

1. Визуализируйте компоненты вашего приложения и связи

между ними

2. Подумайте над тем какие уровни абстракции нужны вам, для

написания автотестов

ШАБЛОНЫ ПРОЕКТИРОВАНИЯ

• GRASP (General Responsibility Assignment Software Patterns)

• GoF (Gang of Four)

• Patterns of Enterprise Application Architecture

GANG OF FOUR• Erich Gamma,

• Richard Helm,

• Ralph Johnson,

• John Vlissides

• Design Patterns: Elements of Reusable Object-Oriented Software

GOF PATTERNS

Порождающие шаблоны проектированияпозволяют сделать систему независимой от способа создания, композиции и представления объектов• Abstract Factory — Абстрактная фабрика

• Builder — Строитель

• Factory Method — Фабричный метод

• Prototype — Прототип

• Singleton — Одиночка

GOF PATTERNS

Структурные шаблоны проектированияв которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры

• Adapter — Адаптер

• Bridge — Мост

• Composite — Компоновщик

• Decorator — Декоратор

• Facade — Фасад

• Flyweight — Приспособленец

• Proxy — Заместитель

GOF PATTERNS

Поведенческие шаблоны проектированияопределяющие алгоритмы и способы реализации взаимодействия различных объектов и классов

• Chain of responsibility — Цепочка обязанностей

• Command — Команда

• Interpreter — Интерпретатор

• Iterator — Итератор

• Mediator — Посредник

• Memento — Хранитель

• Observer — Наблюдатель

• …

ДЛЯ ТЕСТИРОВЩИКОВ

• Page Object

• Page Factory

• Facades

• Decorators

ПРИМЕРЫ: PAGE OBJECT

http://code.google.com/p/selenium/wiki/PageFactory

public class LoginPage {    public HomePage loginAs(String username, String password) {        // ... clever magic happens here    }        public LoginPage loginAsExpectingError(String username, String password) {        //  ... failed login here, maybe because one or both of the username and password are wrong    }        public String getErrorMessage() {        // So we can verify that the correct error is shown    }}

СОВЕТЫ

• Тестировщик должен знать что такое Design Patterns

• Используйте шаблоны при автоматизации

• Думайте о будущем вашего framework

ДОМАШНЕЕ ЗАДАНИЕ

1. Выпишите какие шаблоны проектирования используются у

вас

2. Подумайте какие шаблоны вы еще могли бы использовать

ВРЕМЯ ДЛЯ CI

ОБЯЗАННОСТИ CI

• получение исходного кода из репозитория;

• сборка проекта;

• выполнение тестов;

• развёртывание готового проекта;

• отправка отчетов

CI ИНСТРУМЕНТЫ

• Jenkins (free) http://jenkins-ci.org/

• Hudson (free) http://hudson-ci.org/

• TeamCity (free up to 3 users)http://www.jetbrains.com/teamcity/

• Cruise Control (free) http://cruisecontrol.sourceforge.net/

СОВЕТЫ

• Начните CI как можно раньше.

• Начинайте с простого, не стоит сразу автоматизировать все сборки

2 LOG OR NOT 2 LOG

2 LOG OR NOT 2 LOG

Если логгирования нет, вам стоит о нем задуматься\его создать

2 LOG OR NOT 2 LOG

Разделите логгирование на несколько уровней

• Для клиента

• Для тестировщиков

• Для разработчиков

2 LOG OR NOT 2 LOG

Настройка логгирования должна происходить через конфигурационные файлы, а не через код

ПРИМЕР

• Канонический логгер

• Log4J, Log4Net…• Собственный логгер

ДОМАШНЕЕ ЗАДАНИЕ

1. Узнайте используется ли у вас CI и если да, то стоит добавить туда

базовые автотесты

ЗДРАВЫЙ СМЫСЛ

Автоматизация тестирования не отменяет ручного тестирования

ЗДРАВЫЙ СМЫСЛ

Не гонитесь за количеством тестов, гонитесь за качеством и покрытием

ЗДРАВЫЙ СМЫСЛ

Выделяйте время на то чтобы поднять голову и осмотреться. Иногда из-за деревьев не видно леса

ССЫЛКИ• http://code.google.com/p/selenium/wiki

• http://ru.wikipedia.org/wiki/Design_Patterns

• http://selenium2.ru/

• http://www.log4j.ru/

ВОПРОСЫ?

Email: glebrybalko@gmail.com

Twitter: GRybalko