56
Как вырастить в себе автоматизатора и разработчика Максим Богуславский

Mail.ru: Как вырастить в себе автоматизатора и разработчика

Embed Size (px)

Citation preview

Page 1: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Как вырастить в себе автоматизатора и разработчикаМаксим Богуславский

Page 2: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

О себе

Опыт тестирования и обеспечения качества 8+ лет.

Работал в Акронисе, Люксофте, Иннове, Суперскейпе (Glu).

Руководитель отдела обеспечения качества в banki.ru.

Занимаюсь руководством, автоматизацией и нагрузочным тестированием.

Page 3: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

О компании

Лидер на рынке информационных услуг о банках, курсах валют банков и обменников, рейтингах банков.

Публикуем Народный Рейтинг банков, основанный на отзывах наших пользователей.

Нам принадлежат: banki.ru, bankir.ru, finparty.ru, vklad.ru.

Page 4: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Об отделе

● 6 человек● Автоматизируем:

○ Приемочное тестирование

○ Функциональное

● Тестируем админку и интерфейсы

● Смоук-тесты

Page 5: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

О технологиях

● Php 5.6 >> PHP 7.0● Composer + vendor-

libs● Selenium WebDriver

Page 6: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

О проблеме

● Личный опыт:○ Преподавал○ Учился○ Гумманитарное

образование● Учил и учился с

нуля● Мотивация и

границы роста

Page 7: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

О докладе

● Мотивация● Опыт нашего

отдела не репрезентативен - слишком мало данных, поэтому сделали опрос

● Три группы

Page 8: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Основная часть

Page 9: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Обязанности инженера по автоматизации

● Общие навыки работы с кодом● DevOps практики● Автоматизация тестирования:

○ Интерфейса○ Запросами○ Базы

Page 10: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Обязанности инженера по автоматизации:Общие навыки работы с кодом

● Работа с системой контроля версий (например, Git)● Знание тестовых фреймворков (для php - Codeception)● Работа с IDE (например, Idea, PHPStorm, PyCharm)● Работа с данными:

○ Подготовка тестовых данных○ Создание и обработка отчетов○ Работа с логами

● Организация кода● Описание архитектуры

Page 11: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Обязанности инженера по автоматизации:DevOps праткики

● Подключение и обновление компонентов● Непрерывная интеграция

○ Работа с xUnit○ Сборка тестовой среды○ Настройка CI:

■ создание и настройка планов■ Автоматизированная сборка артефактов

Page 12: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Обязанности инженера по автоматизации:Автоматизация фронтового тестирования

● Автоматизация бизнес логики;● Формирование локаторов.

Page 13: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Обязанности инженера по автоматизации:Автоматизация бэкенд тестирования

● Тестирование базы:○ Валидация данных○ Тестирование производительности запросов

● Тестирование запросами:○ Валидация ответа через схему○ Проверка времени исполнения

Page 14: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Базовые требования для инженера

● Личные качества:○ Аналитический склад ума○ Способность видеть систему в целом○ Усидчивость.

Page 15: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Базовые требования для инженера

● Образование:○ Среди успешных автоматизаторов ¼ людей - это люди без

технического образования○ ⅓ людей с техническим образованием не смогли стать

автоматизаторами.

Page 16: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Базовые требования для инженера

● Что помешало людям с техническим образованием:○ Прозанимавшись недостаточно долго они не получили

ожидаемый результат и бросили обучение;○ В процессе обучения они потеряли интерес к обучению

автоматизации;○ Возможно они низко оценили свои результаты и посчитали, что

недостигли нужной им цели.

Page 17: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки начинающего автоматизатора

● Теоретические знания● Практические знания● Навыки работы с кодом● Программирование

Page 18: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки начинающего автоматизатора

● Теоретические знания○ Понимание основ тестирования○ Понимание предметной области○ Булевая алгебра○ Комбинаторика○ Теория вероятности○ Статистика○ Теория графов

Page 19: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки начинающего автоматизатора

● Практические знания○ Умение декомпозировать задачу○ Английский (на уровне чтения документации)○ Знание структуры веб-приложения и умение работать с

запросами

Page 20: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки начинающего автоматизатора

● Навыки работы с кодом○ Понимание языка локаторов (для тестов интерфейса)○ Умение работать с IDE и понимание его достоинств и

ограничений○ Работа с системой контроля версий (commit, add, push, pull).○ Умение запускать тесты локально

Page 21: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки начинающего автоматизатора

● Программирование○ Базовое владение одним из наиболее популярных языков(JS,

Java, Python, PHP и bash/powershell): синтаксис, типы данных, основные операторы, исключения, логирование, input/output

○ Владение процедурным программированием:■ Линейная автоматизация тестового сценария с обработкой

исключений и валидацией результатов○ Понимание алгоритмов на начальном уровне

Page 22: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки продвинутого автоматизатора

● Практические знания● Работа с CI● Программирование● Работа с окружением● Практики разработки

Page 23: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки продвинутого автоматизатора

● Практические знания○ Английский (на уровне письменного изложения своих мыслей)○ Знание основных тестовых фреймворков○ Продвинутая работа с системой контроля версий. Знание таких

команд как: merge, rebase, работа с ветками, пулл-реквесты.

Page 24: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки продвинутого автоматизатора

● Программирование○ ООП○ Продвинутое понимание алгоритмов○ Принципы организация кода (DRY, SOLID, KISS)○ Понимание стандартов языка: PHP(PSR), Python (Pythonic, PEP8)○ Работа с базой данных для генерации тестовых данных

Page 25: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки продвинутого автоматизатора

● Работа с CI:○ Подключение тестов○ Сбор результатов○ Обновление пакетов○ Оценка покрытия○ Разница между средами (staging, test, production)

Page 26: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки продвинутого автоматизатора

● Практики разработки:○ CodeReview○ Рефакторинг○ Использование методов статического анализа

Page 27: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки экспертного автоматизатора

● Практики разработки● CI● Программирование

Page 28: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки экспертного автоматизатора

● Практики разработки○ Проектирование○ Разработка через прототип

Page 29: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки экспертного автоматизатора

● CI:○ Скрипты накатки○ Деплой

Page 30: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Навыки экспертного автоматизатора

● Программирование:○ Функциональное программирование○ Оптимизация кода○ Юнит-тесты○ Расширение покрытия за счет доработки тестируемого

приложения

Page 31: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Разработчик !== автоматизатор?

● Разница между экспертом в автоматизации и разработчиком не так уж и велика

● Литература и курсы ● Матрица компетенции разработчика (английский)

Page 32: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Разработчик !== автоматизатор?

● Если вы эксперт по тестированию, то попробуйте себя в создании:○ блога○ мобильного приложения○ разработка админки для базы данных○ Интернет-магазине○ Yet another bot for Telegram

Page 33: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Какие фреймворки стоит изучить?

● Платные:○ TestComplete○ IBM Rational Test○ HP Quick Test

● Бесплатные:○ Codeception○ Selenide○ Appium

Page 34: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Что изучать и где получить эти знания?

● Теоретический путь○ Изучать синтаксис языка○ Читать блоги○ Читать книги (список литературы будет в конце доклада)○ Читать мануалы○ Изучать другие языки программирования

Page 35: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Что изучать и где получить эти знания?

● Практический путь:○ Набиванием шишек или личным опытом○ Выполнять простые упражнения○ Участвовать в code review○ Рекомендации опытных коллег○ Сертификационные центры и сайты (список будет в конце)○ Инструменты по статическому анализу кода○ Состоязания (типа hackerrank)

Page 36: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Помехи в обучении

● Отсутствие обратной связи● Отсутствие умения планировать и приоритезировать задачи● Плохая концентрация● Сохранение зоны комфорта● Страх выглядеть глупо и отказ от смены привычек● Отсутствие веры в себя

Page 37: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Как практиковаться в обучении

● Разбивайте цель на проекты и задачи● Честно фиксируйте время. Попробуйте wakatime● Вкладывайте силы, деньги и время● Необходимая жертва

Page 38: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Сколько времени нужно на обучение?

● Сократить список обучения до необходимого● Учитывайте человеческий фактор● Занятия меньше 3 часов в неделю - не эффективны● Успех от 5 и более часов в неделю

Page 39: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Про помощь со стороны

● Наставник не гарантирует успех● Умение тренировать и обучать - отдельный навык● Сделанная за тебя задача - плохая услуга● Обратная связь для мотивации

Page 40: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Заключение

Page 41: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Рекомендации

● Преждевременное успокоение● Личностные качества и образование● Выделить время

Page 42: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Напутствие

● Эффект Даннинга-Крюгера● Задействуйте разработчиков● Вдохновение vs Упорство● Сделайте первый шаг сегодня

Page 43: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Литература

Page 44: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

57 Exercises For

ProgrammersBrian P. Hogan

Page 45: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

The Art Of Unit TestingRoy Osherove

Page 46: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Continuous Delivery

Jez HumbleDavid Farley

Page 47: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Clean CodeRobert C. Martin

Page 48: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Code Complete 2nd Edition

Steve McConnell

Page 49: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Design Patterns

Page 50: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

RefactoringMartin Fowler

Page 51: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Курсы

Page 52: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Курсы

Edx: Курс введение в программирование на Java

Edx: Введение в программирование на PythonCodecademy: https://www.codecademy.com/learn

Codecombat: http://codecombat.com/

Udacity: https://www.udacity.com/

Page 53: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Ссылки на курсы:

Team Tree House: https://teamtreehouse.com/

Udemy: https://www.udemy.com/

Интуит: http://www.intuit.ru/

CheckIo: https://checkio.org/

Page 54: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Сертификация

HackerRank: https://www.hackerrank.com/

LeetCode: https://leetcode.com/

Corp.mail.ru: https://certification.mail.ru/tests/

Page 56: Mail.ru:  Как вырастить в себе автоматизатора и разработчика

Ссылки на опрос:

● Пройти опрос: http://goo.gl/forms/eVEJIOHXdf7HPlzN2

● Промежуточный результат: https://goo.gl/dNgWbK