Как перестать бояться и начать автоматизировать
TRANSCRIPT
Saint-PetersburgMay2016
Как перестать бояться и начать автоматизировать? Или не начать
Алексей Лянгузов
План• Введение• Что такое автоматизация• Кто и для кого автоматизирует• Три ДО• Цели и заблуждения в автоматизации• Откуда берутся факапы в автоматизации• Выбор инструмента• Метрики• Автоматизация ручных сценариев• Откуда появляется идея автоматизировать• Заключение
* Спасибо интернету за картинки. Все права принадлежат авторам изображений
Кому будет интересно
• Руководителям тестирования, которые не знакомы на практике с автоматизацией, но хотели бы применить у себя в проекте.
• Командам у которых автоматизация «как бы» работает, но не приносит зримых результатов.
• Инженерам, которые начинают автоматизировать, но не знают как вывести практику с личного на командный уровень.
Что такое Автоматизация
АвтоматическоеТестирование (АТ)
АвтоматизацияПроцесса (АП)
Что такое Автоматизация
АвтоматическоеТестирование (АТ)
АвтоматизацияПроцесса (АП)
Функциональное и нефункциональное тестирование разрабатываемого ПО
при помощи специализированных программ. Автоматизация проверок
Что такое Автоматизация
АвтоматическоеТестирование (АТ)
АвтоматизацияПроцесса (АП)
Функциональное
Unit UI
Through API
Что такое Автоматизация
АвтоматическоеТестирование (АТ)
АвтоматизацияПроцесса (АП)
Функциональное Нефункциональное
Unit UI
Static Checks
PerformanceSecurity
Through API
Что такое Автоматизация
АвтоматическоеТестирование (АТ)
АвтоматизацияПроцесса (АП)
Использование специализированных программ для исполнения повторяющихся действий.
Автоматизация ручных рутинных операций
Что такое Автоматизация
АвтоматическоеТестирование (АТ)
АвтоматизацияПроцесса (АП)
Разработки
Test Environments
Test runs
Tools
Что такое Автоматизация
АвтоматическоеТестирование (АТ)
АвтоматизацияПроцесса (АП)
Тестирования Разработки
Test Data Test Environments
Test runs
Tools
Reports
Роли в автоматизации
Руководитель проекта
Миссия: помочь внедрить на уровне процесса разработки и следить за тем, чтобы работало
Роли в автоматизации
Руководитель тестирования
Миссия: организовать весь процесс, направлять в нужную сторону авто-тесто-писателей
Роли в автоматизации
Ведущий автоматизатор
Миссия: сделать так чтобы работало, определять стратегию и правила написания и выполнения тестов
Роли в автоматизации
Авто-тесто-писатель
Миссия: писать тесты, запускать тесты, анализировать результаты, создавать тестовые данные
Роли в автоматизации
Окруженосец
Миссия: создавать, настраивать и поддерживать среду в которой тесты запускаются
Роли в автоматизации
Кузнец
Миссия: писать фреймворки, инструменты, генераторы данных и отчетов и прочие интересные штуки
Роли в автоматизации
Build Cop
Миссия: анализ неисправности автоматизированных тестов и их исправление
Потребители автоматизации
Программисты!!!
Руководители (тестирования, проекта)
Заказчик / business owner
Тестировщики идругие участники разработки
Автоматизация
Это - ДОБРО
Автоматизация
Это - ДОБРОКакие проблемы я хочу решить, внедряя автоматизацию?
Мои ожидания от автоматизации — не заблуждения?
Есть ли в команде «ведущий автоматизатор»?
Есть ли в команде «кузнец» и «окруженосец»?
Есть ли поддержка и понимание руководства и команды?
Знаю ли я как встроить автоматизацию в процесс?
Автоматизация
Это - ДОРОГО
Автоматизация
Это - ДОРОГОЯ готов платить за автоматизацию?
Сколько я готов платить за автоматизацию?
Я готов нанять новых людей?
Я готов заплатить за инструменты и обучение?
Я готов платить за инфраструктуру?
Я готов платить постоянно?
Автоматизация
Это - ДОЛГО
Автоматизация
Это - ДОЛГОЯ понимаю, что польза от автоматизации не мгновенна?
Я знаю, что все участники разработки будут вовлечены?
Я понимаю, что нужно поменять подход к разработке?
Я понимаю, что начав не смогу остановиться?
Проект достаточно долог, чтобы насладиться плодами?
Я готов тратить время на research в автоматизации?
Цели и ожидания от автоматизации
Сократить время тестирования
Цели и ожидания от автоматизации
Увеличить число проверок / покрытие
Сократить время тестирования
Цели и ожидания от автоматизации
Обеспечить более частые проверки
Увеличить число проверок / покрытие
Сократить время тестирования
Цели и ожидания от автоматизации
Уменьшить влияние «человеческого фактора»
Увеличить число проверок / покрытие
Сократить время тестирования
Обеспечить более частые проверки
Цели и ожидания от автоматизации
Удешевить тестирование
Увеличить число проверок / покрытие
Сократить время тестирования
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Цели и ожидания от автоматизации
Внедрить новые виды тестирования
Увеличить число проверок / покрытие
Сократить время тестирования
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Цели и ожидания от автоматизации
Сократить время выпуска нового релиза
Увеличить число проверок / покрытие
Сократить время тестирования
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Цели и ожидания от автоматизации
Заменить ручного тестировщика автотестами
Увеличить число проверок / покрытие
Сократить время тестирования
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Цели и ожидания от автоматизации
Фиксация текущего состояния для сравнения
Увеличить число проверок / покрытие
Сократить время тестирования
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Цели и ожидания от автоматизации
Быстрое получение текущего состояния
Увеличить число проверок / покрытие
Сократить время тестирования
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Фиксация текущего состояния для сравнения
Цели и ожидания от автоматизации
Автоматизировать % ручных сценариев
Увеличить число проверок / покрытие
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Фиксация текущего состояния для сравнения
Быстрое получение текущего состояния
Цели и ожидания от автоматизации
Автоматизировать регрессионное тестирование
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Фиксация текущего состояния для сравнения
Быстрое получение текущего состояния
Автоматизировать % ручных сценариев
Цели и ожидания от автоматизации
С нашим фреймворком/тулом все будут писать автотесты
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Фиксация текущего состояния для сравнения
Быстрое получение текущего состояния
Автоматизировать % ручных сценариев
Автоматизировать регрессионное тестирование
Цели и ожидания от автоматизации
Сертификация сборки / среды тестирования
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Фиксация текущего состояния для сравнения
Быстрое получение текущего состояния
Автоматизировать % ручных сценариев
Автоматизировать регрессионное тестирование
С нашим фреймворком/тулом все будут писать автотесты
Цели и ожидания от автоматизации
Автоматизация упростит тестирование
Внедрить новые виды тестирования
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Фиксация текущего состояния для сравнения
Быстрое получение текущего состояния
Автоматизировать % ручных сценариев
Автоматизировать регрессионное тестирование
С нашим фреймворком/тулом все будут писать автотесты
Сертификация сборки / среды тестирования
Итого про цели
Сократить время выпуска нового релиза
Заменить ручного тестировщика автотестами
Фиксация текущего состояния для сравнения
Быстрое получение текущего состояния
Автоматизировать % ручных сценариев
Автоматизировать регрессионное тестирование
С нашим фреймворком/тулом все будут писать автотесты
Сертификация сборки / среды тестирования
Автоматизация упростит тестирование
Увеличить число проверок / покрытие
Обеспечить более частые проверки
Уменьшить влияние «человеческого фактора»
Удешевить тестирование
Внедрить новые виды тестирования
Сократить время тестирования
Причины провала
Совмещение обязанностей «ведущим автоматизатором»
Не дождались / нетерпение / заняло больше времени
Автоматизация ради автоматизации / не в процессе
Несоответствие ожиданиям / ложные ожидания
Плохая архитектура проекта / отсутствие testability
Регрессионные дефекты быстро не чинятся
Редкие запуски
Недостаток квалификации
Причины провала
Автоматизация сложной функциональности
Неправильный выбор инструмента / языкаОтсутствие документации автотестов
Отсутствие архитектуры автотестов
Начали с не с того (например UI)
Автоматизировали не то
Сложно запускать
Нестабильность и ненадежность
Как исправить
Сперва устранить косяки самих автотестов.Потом необходимо внедрить АТ в общий процесс разработки.Даже небольшое количество надежных тестов могутсделать чудо.
Выбор инструментаУсловно лучше Условно хуже
Кол-во Много Один
Цена Бесплатный Платный
Код Открытый Закрытый
Предназначение Специализированный Многозадачный
Популярность Распространённый Узкоспециальный
Поддержка Активно развивается Редкие релизы
Интерфейс Для инженеров Для людей
Сложность Для людей Для инженеров
Платформа запуска Кроссплатформенный Ограниченный
Запуск / Деплоймент Простой Сложный
Контроль Конфигурируемый Преднастроенный
Интеграция С другими тулами Самодостаточный
Расширяемость Плагины Внешние надстройки*взгляд гика, поддерживающего unix way философию
Метрики
Тестовое покрытие
Метрики
Процент нестабильныхтестовТестовое покрытие
Метрики
Процент падающихтестов
Процент нестабильныхтестовТестовое покрытие
Метрики
Время выполнения
Процент падающихтестов
Процент нестабильныхтестовТестовое покрытие
Метрики
Время выполнения
Процент падающихтестов
Процент нестабильныхтестовТестовое покрытие
Частота запусков
Метрики
Время выполнения
Время на поддержку
Процент падающихтестов
Процент нестабильныхтестовТестовое покрытие
Частота запусков
Метрики
Время выполнения
Время на поддержку
Процент падающихтестов
Процент нестабильныхтестовТестовое покрытие
Частота запусков
Количество тестов
Метрики
Время выполнения
Время на поддержку
Процент падающихтестов
Процент нестабильныхтестовТестовое покрытие
Частота запусков
Количество тестовРегрессионные
дефекты
Метрики
Время выполнения
Время на поддержку
Процент падающихтестов
Процент нестабильныхтестовТестовое покрытие
Частота запусков
Количество тестовРегрессионные
дефекты
Лучшая метрика
Вам не нужны метрики!
А-я ручных сценариев
Автоматизатору не нужен мозг
Чем это хорошо?
А-я ручных сценариев
Чем это плохо?
Разное предназначение тестовРазная детализация тестовРазное время на обновления тестовРазное время на создание тестовНе все ручные тесты автоматизируемыНе для всех возможных проверок есть ручные сценарииРазное разбиение проверок по сценариям
Иногда целесообразно использовать разные интерфейсыЭмуляция юзера может мешать проверкам (при багах)
Это UI тесты. Самая дорогая и ненадежная автоматизация
Даже полная замена не означает отмену ручной проверкиЧто автоматизировать — то что меняется или статично?
Откуда появляетсяСнизу
Как доказать руководству, что это нужно?
Пилотная автоматизация
Не надо начинать с тестирования через UI
Сначала сделать, потом выбивать официальное время
Максимально облегчить работу коллег, убрать рутину
Предложить план дальнейших действий
Откуда появляетсяСверху
Как доказать руководству, что это НЕ нужно?
Узнать какие проблемы хочется решить
Определиться со сроками и критериями успеха
Договориться об уровне вовлечения команды
Предоставить четкий план затрат и сроков
Определить ответственного за техническую реализацию
Откуда появляетсяИзнутри
С чего начать?
Договориться о вовлечённости каждого из участников
Договориться о приоритете исправлений
Договориться об используемых технологиях
Договориться о разделении зон ответственности
Возможно тестировщик-автоматизатор будет лишним
Откуда появляетсяСнаружи
А не послать ли нам его?
Узнать что он продаёт
Понять нужно ли нам это
Воспользоваться услугами другого консультанта
Пусть распишет внедрение автоматизации по фазам
Заключение
Почему ничего не сказано про ROI
Заключение
Почему ничего не сказано про ROI
Почему иногда лучше не автоматизировать
Заключение
Почему ничего не сказано про ROI
Так зачем же мы все-таки автоматизируем?
Почему иногда лучше не автоматизировать
Заключение
ДА НЕТНе значит ДА Значит НЕТ
Но если не попробовать, то точно не получится
Спасибо!
Alexey LyanguzovSoftware Quality [email protected]