Максим Богуславский, banki.ru, «Как вырастить в себе...
TRANSCRIPT
О себе
Опыт тестирования и обеспечения качества 8+ лет.
Работал в Акронисе, Люксофте, Иннове, Суперскейпе (Glu).
Руководитель отдела обеспечения качества в banki.ru.
Занимаюсь руководством, автоматизацией и нагрузочным тестированием.
О компании
Лидер на рынке информационных услуг о банках, курсах валют банков и обменников, рейтингах банков.
Публикуем Народный Рейтинг банков, основанный на отзывах наших пользователей.
Нам принадлежат: banki.ru, bankir.ru, finparty.ru, vklad.ru.
Об отделе
● 6 человек● Автоматизируем:
○ Приемочное тестирование
○ Функциональное
● Тестируем админку и интерфейсы
● Смоук-тесты
О проблеме
● Личный опыт:○ Преподавал○ Учился○ Гумманитарное
образование● Учил и учился с
нуля● Мотивация и
границы роста
О докладе
● Мотивация● Опыт нашего
отдела не репрезентативен - слишком мало данных, поэтому сделали опрос
● Три группы
Обязанности инженера по автоматизации
● Общие навыки работы с кодом● 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○ Рефакторинг○ Использование методов статического анализа
Навыки экспертного автоматизатора
● Программирование:○ Функциональное программирование○ Оптимизация кода○ Юнит-тесты○ Расширение покрытия за счет доработки тестируемого
приложения
Разработчик !== автоматизатор?
● Разница между экспертом в автоматизации и разработчиком не так уж и велика
● Литература и курсы ● Матрица компетенции разработчика (английский)
Разработчик !== автоматизатор?
● Если вы эксперт по тестированию, то попробуйте себя в создании:○ блога○ мобильного приложения○ разработка админки для базы данных○ Интернет-магазине○ Yet another bot for Telegram
Какие фреймворки стоит изучить?
● Платные:○ TestComplete○ IBM Rational Test○ HP Quick Test
● Бесплатные:○ Codeception○ Selenide○ Appium
Что изучать и где получить эти знания?
● Теоретический путь○ Изучать синтаксис языка○ Читать блоги○ Читать книги (список литературы будет в конце доклада)○ Читать мануалы○ Изучать другие языки программирования
Что изучать и где получить эти знания?
● Практический путь:○ Набиванием шишек или личным опытом○ Выполнять простые упражнения○ Участвовать в code review○ Рекомендации опытных коллег○ Сертификационные центры и сайты (список будет в конце)○ Инструменты по статическому анализу кода○ Состоязания (типа hackerrank)
Помехи в обучении
● Отсутствие обратной связи● Отсутствие умения планировать и приоритезировать задачи● Плохая концентрация● Сохранение зоны комфорта● Страх выглядеть глупо и отказ от смены привычек● Отсутствие веры в себя
Как практиковаться в обучении
● Разбивайте цель на проекты и задачи● Честно фиксируйте время. Попробуйте wakatime● Вкладывайте силы, деньги и время● Необходимая жертва
Сколько времени нужно на обучение?
● Сократить список обучения до необходимого● Учитывайте человеческий фактор● Занятия меньше 3 часов в неделю - не эффективны● Успех от 5 и более часов в неделю
Про помощь со стороны
● Наставник не гарантирует успех● Умение тренировать и обучать - отдельный навык● Сделанная за тебя задача - плохая услуга● Обратная связь для мотивации
Напутствие
● Эффект Даннинга-Крюгера● Задействуйте разработчиков● Вдохновение vs Упорство● Сделайте первый шаг сегодня
Курсы
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/
Спасибо!Blog:
https://maxbogus.blogspot.ru/
Slideshare: http://www.slideshare.net/maxbogus
Linkedin: https://www.linkedin.com/in/maxbogus
Facebook page: https://www.facebook.com/maxbogusblog/
Ссылки на опрос:
● Пройти опрос: http://goo.gl/forms/eVEJIOHXdf7HPlzN2
● Промежуточный результат: https://goo.gl/dNgWbK