В презентации я постарался рассказать о том:
1. Какие основные критерии нужно учесть при поиске автоматизатора.
2. Какие основные навыки требуются для инженера по автоматизации.
3. Какие требования к инженеру по обеспечению качества.
4. Так же в презентации есть статьи и ссылки на ресурсы где можно получить необходимые знания и навыки для развития.
5. Так же я рассказываю о том сколько времени требуется для развития, какие есть подводные камни и как их преодалеть.
Mail.ru: Как вырастить в себе автоматизатора и разработчика
1. Как вырастить в себе
автоматизатора и
разработчика
Максим Богуславский
2. О себе
Опыт тестирования и обеспечения качества 8+ лет.
Работал в Акронисе, Люксофте, Иннове, Суперскейпе (Glu).
Руководитель отдела обеспечения качества в banki.ru.
Занимаюсь руководством, автоматизацией и нагрузочным
тестированием.
3. О компании
Лидер на рынке информационных услуг о банках, курсах валют банков и
обменников, рейтингах банков.
Публикуем Народный Рейтинг банков, основанный на отзывах наших
пользователей.
Нам принадлежат: banki.ru, bankir.ru, finparty.ru, vklad.ru.
4. Об отделе
● 6 человек
● Автоматизируем:
○ Приемочное
тестирование
○ Функционально
е
● Тестируем админку
и интерфейсы
● Смоук-тесты
10. Обязанности инженера по
автоматизации:
Общие навыки работы с кодом
● Работа с системой контроля версий (например, Git)
● Знание тестовых фреймворков (для php - Codeception)
● Работа с IDE (например, Idea, PHPStorm, PyCharm)
● Работа с данными:
○ Подготовка тестовых данных
○ Создание и обработка отчетов
○ Работа с логами
● Организация кода
● Описание архитектуры
11. Обязанности инженера по
автоматизации:
DevOps праткики
● Подключение и обновление компонентов
● Непрерывная интеграция
○ Работа с xUnit
○ Сборка тестовой среды
○ Настройка CI:
■ создание и настройка планов
■ Автоматизированная сборка артефактов
13. Обязанности инженера по
автоматизации:
Автоматизация бэкенд тестирования
● Тестирование базы:
○ Валидация данных
○ Тестирование производительности запросов
● Тестирование запросами:
○ Валидация ответа через схему
○ Проверка времени исполнения
14. Базовые требования для инженера
● Личные качества:
○ Аналитический склад ума
○ Способность видеть систему в целом
○ Усидчивость.
15. Базовые требования для инженера
● Образование:
○ Среди успешных автоматизаторов ¼ людей - это люди без
технического образования
○ ⅓ людей с техническим образованием не смогли стать
автоматизаторами.
16. Базовые требования для инженера
● Что помешало людям с техническим образованием:
○ Прозанимавшись недостаточно долго они не получили
ожидаемый результат и бросили обучение;
○ В процессе обучения они потеряли интерес к обучению
автоматизации;
○ Возможно они низко оценили свои результаты и посчитали, что
недостигли нужной им цели.
18. Навыки начинающего автоматизатора
● Теоретические знания
○ Понимание основ тестирования
○ Понимание предметной области
○ Булевая алгебра
○ Комбинаторика
○ Теория вероятности
○ Статистика
○ Теория графов
19. Навыки начинающего автоматизатора
● Практические знания
○ Умение декомпозировать задачу
○ Английский (на уровне чтения документации)
○ Знание структуры веб-приложения и умение работать с
запросами
20. Навыки начинающего автоматизатора
● Навыки работы с кодом
○ Понимание языка локаторов (для тестов интерфейса)
○ Умение работать с IDE и понимание его достоинств и
ограничений
○ Работа с системой контроля версий (commit, add, push, pull).
○ Умение запускать тесты локально
21. Навыки начинающего автоматизатора
● Программирование
○ Базовое владение одним из наиболее популярных языков(JS,
Java, Python, PHP и bash/powershell): синтаксис, типы данных,
основные операторы, исключения, логирование, input/output
○ Владение процедурным программированием:
■ Линейная автоматизация тестового сценария с обработкой
исключений и валидацией результатов
○ Понимание алгоритмов на начальном уровне
23. Навыки продвинутого автоматизатора
● Практические знания
○ Английский (на уровне письменного изложения своих мыслей)
○ Знание основных тестовых фреймворков
○ Продвинутая работа с системой контроля версий. Знание таких
команд как: merge, rebase, работа с ветками, пулл-реквесты.
24. Навыки продвинутого автоматизатора
● Программирование
○ ООП
○ Продвинутое понимание алгоритмов
○ Принципы организация кода (DRY, SOLID, KISS)
○ Понимание стандартов языка: PHP(PSR), Python (Pythonic, PEP8)
○ Работа с базой данных для генерации тестовых данных
25. Навыки продвинутого автоматизатора
● Работа с CI:
○ Подключение тестов
○ Сбор результатов
○ Обновление пакетов
○ Оценка покрытия
○ Разница между средами (staging, test, production)
30. Навыки экспертного автоматизатора
● Программирование:
○ Функциональное программирование
○ Оптимизация кода
○ Юнит-тесты
○ Расширение покрытия за счет доработки тестируемого
приложения
31. Разработчик !== автоматизатор?
● Разница между экспертом в автоматизации и
разработчиком не так уж и велика
● Литература и курсы
● Матрица компетенции разработчика (английский)
32. Разработчик !== автоматизатор?
● Если вы эксперт по тестированию, то попробуйте
себя в создании:
○ блога
○ мобильного приложения
○ разработка админки для базы данных
○ Интернет-магазине
○ Yet another bot for Telegram
33. Какие фреймворки стоит изучить?
● Платные:
○ TestComplete
○ IBM Rational Test
○ HP Quick Test
● Бесплатные:
○ Codeception
○ Selenide
○ Appium
34. Что изучать и где получить эти знания?
● Теоретический путь
○ Изучать синтаксис языка
○ Читать блоги
○ Читать книги (список литературы будет в конце доклада)
○ Читать мануалы
○ Изучать другие языки программирования
35. Что изучать и где получить эти знания?
● Практический путь:
○ Набиванием шишек или личным опытом
○ Выполнять простые упражнения
○ Участвовать в code review
○ Рекомендации опытных коллег
○ Сертификационные центры и сайты (список будет в конце)
○ Инструменты по статическому анализу кода
○ Состоязания (типа hackerrank)
36. Помехи в обучении
● Отсутствие обратной связи
● Отсутствие умения планировать и приоритезировать задачи
● Плохая концентрация
● Сохранение зоны комфорта
● Страх выглядеть глупо и отказ от смены привычек
● Отсутствие веры в себя
37. Как практиковаться в обучении
● Разбивайте цель на проекты и задачи
● Честно фиксируйте время. Попробуйте wakatime
● Вкладывайте силы, деньги и время
● Необходимая жертва
38. Сколько времени нужно на обучение?
● Сократить список обучения до необходимого
● Учитывайте человеческий фактор
● Занятия меньше 3 часов в неделю - не эффективны
● Успех от 5 и более часов в неделю
39. Про помощь со стороны
● Наставник не гарантирует успех
● Умение тренировать и обучать - отдельный навык
● Сделанная за тебя задача - плохая услуга
● Обратная связь для мотивации
52. Курсы
Edx: Курс введение в программирование на Java
Edx: Введение в программирование на Python
Codecademy: https://www.codecademy.com/learn
Codecombat: http://codecombat.com/
Udacity: https://www.udacity.com/
53. Ссылки на курсы:
Team Tree House: https://teamtreehouse.com/
Udemy: https://www.udemy.com/
Интуит: http://www.intuit.ru/
CheckIo: https://checkio.org/