Автоматизация тестирования
тренер: Баранцев Алексей
Можно ли представить себе хорошего линуксового системного администратора, который не знает общую теорию операционных систем и сетей, не подозревает о существовании Windows и MacOS, не умеет пользоваться для настройки системы консолью так же хорошо, как графической оболочкой? Можно ли считать хорошим инженером-строителем человека, который не владеет сопроматом, не знает про современные строительные материалы и особенности их применения, даже если на текущем объекте строительства они не используются? Можно ли признать хорошим актёром того, кто день за днём играет одну и ту же роль, не знает о современных тенденциях в театральном искусстве и не пытается попробовать себя в других амплуа?
Хороший специалист должен обладать достаточно широкими знаниями. Да, он глубоко изучает какую-то одну тему, специализируется в каком-то направлении, но при этом он должен представлять себе общую картину своей профессиональной области. Если он не будет это делать -- мир уйдёт вперёд, его узкая тема окажется устаревшей и невостребованной, а он ничего другого не знает и не умеет.
Умение создавать автоматизированные тесты предполагает владение специализированными инструментами, которые так и называются "инструменты для автоматизации тестирования". Но знания хорошего специалиста должны охватывать всю область автоматизации. Какие вообще инструменты бывают? Для чего они предназначены? В какой ситуации следует (или наоборот не следует) использовать тот или иной инструмент? Как выбрать наиболее подходящий для решения задачи инструмент среди множества похожих?
И конечно же надо уметь делать хорошие автотесты. Да, сначала надо научиться понимать, чем "хорошие" автотесты отличаются от "плохих". А потом -- научиться делать "хорошие". Эти правила являются общими, независимыми от конкретного используемого инструмента.
Для тех, кто хочет расширить свой кругозор и получить общие фундаментальные знания в области автоматизации тестирования мы подготовили этот учебный курс.
Целевая аудитория:
- инженеры; для менеджеров у нас есть учебный курс Организация автоматизированного тестирования,
- начинающие специалисты; тем, кто не умеет программировать, может быть не всё будет понятно во второй половине курса, но первая даст достаточно хорошее общее представление об области автоматизации, и вы сможете более осознанно выбрать, в каком направлении продолжить углублённое изучение,
- практикующие автоматизаторы: расширение кругозора, раскладывание имеющихся практических знаний по полочкам, повышение квалификации
Цели и задачи курса:
- показать, с чего начать внедрение автоматизации в тестировании
- показать возможность автоматизации через разные интерфейсы
- рассказать про разные подходы к построению тестов
- рассказать про различные инструменты и их назначение
- научить подбирать инструменты для решения различных задач
- рассказать про типовую архитектуру тестов
- научить готовить тесты к автоматизации
- научить отличать хорошие автотесты от плохих
Требования к участникам:
- умение достаточно хорошо обращаться с операционной системой (как минимум умение пользоваться консолью, устанавливать значения системных переменных окружения, устанавливать и удалять программы),
- понимание общих принципов тестирования,
- для некоторых тем курса требуется знание какого-либо языка программирования (те, кто не знает, могут эти темы пропустить)
1. Теория
Что такое "автоматизированный тест"?
Как автотест взаимодействует с тестируемой системой?
Фреймворки тестирования и драйверы
Жизненный цикл автотестов
Морально-физическая подготовка
Поддержка руководства и коллег
Реалистичные ожидания
2. Взаимодействие автотестов с тестируемой системой
Интерфейсы (API, CLI, GUI и другие)
Особенности работы с мобильными приложениями
"Удалённое" тестирование
Уровни взаимодействия (модульный, интеграционный, cистемный)
Комбинирование способов взаимодействия
Мульти-технологичные приложения
Язык написания тестов
3. Инструменты: классификация и обзор
Драйверы и надстройки
- Синаксический сахар
- Повышение уровня абстрактности
- Унификаторы
- Валидаторы
- Фреймворки
xUnit: есть ли альтернативы?
- Model-based testing
- Мутационное тестирование
- Pex
Супер-фреймворки
- Keyword-driven testing
- Behavior-driven testing
- Model-based testing
Комбайны
Инфраструктура
- Тестовая лаборатория
- Эмуляторы смежных систем
- Сервер непрерывной интеграции
- Отчёты и оповещения
4. Правила разработки автотестов
Подготовка
- Выбор инструментов
- Пилотный проект
- Выбор сценариев для автоматизации
- Чем отличается тест-кейс от тестового сценария?
- Рекордеры: добро или зло?
Разработка
- Критерии качества автотестов
- Фикстуры и сценарии
- Тестовые данные
- Формирование архитектуры тестов
- Шаблоны проектирования тестов
- "Самодельный фреймворк"
Эксплуатация
- Анализ сбоев
- Протоколирование
- Видеозапись
- Отладка тестов
- Игнорирование тестов
- Повышение стабильности
- Рефакторинг
Организация тестов
- Группировка тестов
- Упорядочение и зависимости
- Документирование автотестов
5. Нюансы
Автоматизация регрессионных тестов
Одноразовая автоматизация
Правило одной проверки
Простые и сложные сценарии
Ошибки первого и второго рода
Масштабируемость
Тестопригодность