Максим Богуславский, Banki.ru, «Как вырастить в себе...

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

Transcript of Максим Богуславский, Banki.ru, «Как вырастить в себе...

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

О себе

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

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

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

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

О компании

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

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

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

Об отделе

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

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

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

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

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

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

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

libs● Selenium WebDriver

О проблеме

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

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

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

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

О докладе

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

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

● Три группы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

запросами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

приложения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

Напутствие

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

Литература

57 Exercises For

ProgrammersBrian P. Hogan

The Art Of Unit TestingRoy Osherove

Continuous Delivery

Jez HumbleDavid Farley

Clean CodeRobert C. Martin

Code Complete 2nd Edition

Steve McConnell

Design Patterns

RefactoringMartin Fowler

Курсы

Курсы

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

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

Codecombat: http://codecombat.com/

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

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

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

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

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

CheckIo: https://checkio.org/

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

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

LeetCode: https://leetcode.com/

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

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

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

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