Как я стал Python-разработчиком с нуля — мой опыт становления тестировщиком

6fad066e383e5dad7449af240a1f8099.png

Это мой первый пост, прошу сильно не пинать. Для начала немного расскажу, кто такой тестировщик. Это специалист, который отлавливает ошибки на всех этапах разработки проекта. Работа рутинная, но ответственная. Получают тестировщики на 20–30% меньше, чем программисты: от 30 000 руб. и выше, всё зависит от опыта.

Становление тестировщиком — самый простой путь старта в IT, есть куда расти (тест-менеджмент, веб-дизайн, чистая разработка).

Эту информацию я почерпнул из открытых источников и подумал, что вот, я не умею программировать, а получать астрономическую зарплату работать в IT — хочется. Думал, что начну с ручного тестирования, устроюсь на работу –, а дальше, как пойдёт.

Но на практике оказалось не всё так просто. Кругом полно таких же людей, который думают точно также же, и такие специалисты маловостребованны. Для чего вообще берут на работу стажёров? Работодатель ожидает, что в ближайшем будущем навыки стажёра охрененно вырастут и он будет приносить огромную пользу фирме с дальнейшим повышением зарплаты (но не всегда таким, какую ожидает стажёр). Поэтому чаще всего стажёры, получив опыт, либо настаивают на значительном повышении з/п или уходят к конкурентам.

Несмотря на грустные мысли, я поставил цель — изучить навыки тестирования на Python хотя бы на уровне продвинутого стажёра.

Открыв гугл, я стал искать полезные статьи по языку с нормальными ссылками на учебные материалы. Как ни странно, толковых статей очень мало. Могу отметить только несколько, которые мне понравились больше всего:

Итак, я внимательно изучил предложенные ссылки и начал учиться. Начал изучение языка Python со следующих бесплатных материалов:

  • stepik.org/course/58852 — «Поколение Python»: курс для начинающих с кучей тренировочных задач, удобный как для самостоятельного изучения.

  • youtube.com/c/ТимофейХирьянов — отличные видеолекции от Т. Хирьянова.

Через пару месяцев, когда я, обучаясь практически всё свободное время, освоил базу по языку, я прошёл ещё несколько, для получения более глубоких навыков программирования. Мне очень понравилось выполнять задачки по Python, над некоторыми пришлось поломать голову, но зато получаешь реальный кайф, когда всё получается. Думаю, программисты знают, о чём я говорю :).

Вот курсы для опытных Пайтон-разработчиков, которые я смог осилить:

  • stepik.org/course/68343 — «Поколение Python»: курс для продвинутых.

  • stepik.org/course/512 — курс посвящен базовым принципам языка Python, подойдёт тем, кто уже может писать простейшие программы на Python .

  • stepik.org/course/1547 — алгоритмы: теория и практика. Структуры данных.

  • andreyolegovich.ru/qa/pytest/ — учебник по Pytest — классный фреймворк для тестирования на Python.

  • pywinauto.readthedocs.io — офиц. документация по Pywinauto — библиотеке Python для автотестирования десктопных приложений на Винде.

  • docs.qameta.io — документация Allure, крутой библиотеке Python для красивеньких отчетов о результатах тестов.

Есть ещё сотни других библиотек, но я выбрал именно эти.

Затем я проанализировал с пару десяток вакансий на должность тестировщика без опыта работы и выписал повторяющиеся требования. Да, я псих :). Оставалось дело за малым — получить основные навыки работы с этими инструментами. Вот что я стал изучать дальше.

Основы разных видов тестирования: unit, функциональное, интеграционное и другие. В этом мне помогли следующие учебные материалы:

Далее нужно научиться работать с ключевыми инструментами тестировщика, я выбрал только те, владение которыми реально нужны работодателям:

Selenium — автотестирование web-страниц:

  • Учебник Selenium на coderlessons.com.

  • dzen.ru — шпаргалка по Selenium WebDriver 4 + Python.

  • rukovodstvo.net — статья по основам работы с Selenium и Python.

Jenkins — это опен сорс (фреймворк, проект с открытым исходным кодом), поможет автоматизировать деплой и исправить ошибки для CI/CD:

Postman — он позволяет посылать запросы к сервисам и работать с их ответами, им можно протестировать бэкенд:

Jmeter — Java-апплет, который умеет всё (поиск неуловимого бага, тестирование бэкенда и много чего ещё):

Разумеется, ещё нужно изучить дополнительные технологии и инструменты, без них никак:

GIT — удобная система для командной работы и работе с версиями кода:

  • git-scm.com — большое руководство на русском языке.

  • stepik.org/course/4138 — курс на Степике.

  • Аккуратный, необходимый, слегка «продвинутый» видеокурс по Git, который делает жизнь разработчика проще.

Linux:

Docker:

  • stepik.org/course/1612/ — курс по Docker для тех, кто имеет навыки работы с операционной системой Linux.

  • Видеоуроки, которые помогут вам понять как устроен Docker (контейнеризация) и где его можно использовать.

  • stepik.org/course/74010/ — курс по основам (установка, написание собственных образов).

  • stepik.org/course/123300 — курс Docker для начинающих + практический опыт.

Язык SQL для работы с БД:

Это все эти учебные материалы, которые я внимательно изучил, чтобы иметь начальные навыки тестирования. Вы можете найти в сети любые другие, какие вам больше понравятся. На всё это я потратил примерно около 10 месяцев, я учился почти каждый день по 6–7 часов в день, спать ложился далеко за полночь. И при этом я ещё работал на основной работе. Большое спасибо моей девушке, она меня всё это время поддерживала.

Важный совет! Вы должны развить навыки грамотного поиска информации в интернете, а также учиться чему-нибудь новому каждый день. Даже Senior учится новым технологиям и инструментам. Как сказал однажды Генри Форд «Любой, кто перестает учиться, стареет, и не важно, сколько ему лет: двадцать или восемьдесят. Любой, кто продолжает учиться, остается молодым. Самая великая вещь в жизни — это сохранять свой разум молодым».

Ну вот, вы теперь готовы к поиску стажировки тестировщиком (будет хорошо, если она будет оплачиваемой). Но есть один нюанс. Если вы не студент ВУЗа, то в некоторых стажировках вам могут отказать, так как компаниям интересны именно студенты или выпускники высших учебных учреждений. Но не сдавайтесь! Выполняйте все тестовые задания, прокачивайте свои скиллы, чтобы каждое следующее собеседование давалось вам легче и легче. На практике вы можете пройти 10–15 собеседований, но так и не найти работу. Это нормально, потому что кроме вас на эту должность претендуют еще десятки/сотни соискателей. Поэтому рассматривайте каждый отказ как полезный опыт, который делает вас сильнее.

Как правило для джунов тестовые задания будут с подвохом, поэтому очень внимательно читай задание и не отчаивайся, если ты провалил собеседование. Запомни — рано или поздно тебя возьмут в штат.

Сколько нужно учиться, чтобы стать Python-программистом? Моё личное мнение: если у вас нет склонности к математике (вы больше гуманитарий), то придётся учиться очень долго и очень часто. А если вы математик в душе, то всё равно придётся обучаться долго и много. Такая история. Ещё — у вас будут случаться время от времени нервные срывы. Что делать, это плата за знания, сам через это прошёл.

Запомните! Если у вас не получается что-то ни с 1 или 15 раза, то в программировании — это норма. Обычное дело — постоянно гуглить, шерстить документацию и дебажить код again and again. Если на каком-нибудь курсе вам было легко, но потом вы начали самостоятельную практику = обучение через страдания. НО потом, когда ты осознаёшь, то приходит понимание, что на курсе было лишь смутное понимание программирования. Как-то так.

Поэтому нужно быть морально готовым к тому, чтобы потом не впасть в депрессию от того, что ничего не получилось. Python простой язык, но если придётся разрабатывать сложные системы на любом языке, хоть на Пайтоне, C++ или Java, вам придётся тяжело. Python имеет более читаемый код, и изучить его довольно просто — на базовом уровне (!). Если вы столкнётесь со сложными алгоритмами, то придётся задействовать мозги на все 200%.

Вывод: маловероятно, что вы освоите профессию тестировщика на Python за месяц и начнёте получать по $10k в месяц. Учиться будет тяжело, придётся люто вкалывать каждый день, если хотите добиться результатов. Если есть желание — то всё получится. Поверьте.

Накидал типовые задачи, которые могут дать на собеседовании тестировщику-стажёру:

  • Проверить функциональность логина в приложении и написать баг-репорт о найденных ошибках.

  • Протестировать платёжный сервис в интернет-магазине.

  • Составить баг-репорт для неработающего холодильника.

  • Написать чек-лист для проверки формы авторизации на сайте.

  • Не работает кнопка «Добавить в корзину». Проблема на стороне клиента или сервера?

Какие вопросы могут примерно задать:

  • Какие уровни тестирования вы знаете?

  • Можете объяснить разницу между функциональным и нефункциональным тестированием?

  • Какие категории ошибок с выполнением требований вы можете назвать?

  • Почему Selenium стал стандартом де-факто в автоматизации тестирования?

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

  • Как определить, когда пора прекращать тестирование?

  • Что делать в случае отсутствия тестовой документации?

  • Может ли статическое тестирование обнаружить утечки памяти?

  • Опишите своими словами нагрузочное тестирование.

  • Назовите этапы жизненного цикла тестирования.

Дерзайте, всем удачи!

P.S. Список полезных материалов для обучения языку Python, думаю, это вам очень пригодится:

Параллельно с прохождением курсов и просмотром видео читайте такие книги, как «Изучаем Python» Марка Лутца (4-е изд.) или «Программируем на Python» Майкла Доусона. А вообще обязательно к прочтению крутая книга «Укус Питона» (русский перевод).

© Habrahabr.ru