20 марта

Автоматизированное тестирование на C#

— Расскажи о себе, как ты пришел к профессии?

— Все началось с того, что я понял — хочу быть программистом. Но не знал, чем именно буду заниматься. Я знал, что есть программисты, но не понимал, какие есть направления, что есть разные стеки технологий. В моем понимании было примерно так: Есть люди, которые что-то пишут.

И наверное как многие мальчишки я мечтал стать хакером — это же вау, самое крутое! Поэтому выбор пал именно на компьютерную безопасность. Однако уже потом, обучаясь в ВУЗе, я понял, что мы будем изучать программно-аппаратные средства — то есть это интегральные схемы, какая-то физическая защита. Мы больше собирали платы и применяли их, нежели придумывали алгоритмы математические, шифрование или еще чего-нибудь.

Со временем я начал понимать, что разработка мне не очень интересна, как наиболее популярное — фулл-стек. Я бы больше хотел что-то с железом, написание бэкенда, серверы, сервисы. Пришло все к тому, что пока я искал работу, нашел для себя такое направление как автоматизация. И получилось так, что в этой сфере очень много разных областей, в которых ты должен разбираться. Это и тестирование, и написание кода, CI/CD. И ты как человек оркестр должен все знать, понимать и решать комплексные задачи. Ты не просто написал тест-кейс и прошел его руками, а у тебя есть стратегия — как что тестировать, какая часть будет мануальной, какая покрывается автоматизацией. Потом необходимо продумать, а как написать тестовый фреймворк, где он будет запускаться, какие пайплайны за это будут отвечать, запрограммировать сам сценарий, продумать, как отправить результаты автотестов в тест менеджмент систему и многое другое.

Сперва была мысль, что это начальная точка и позже я смогу переключиться в любое направление. Просто оттолкнуться как старт карьеры. А потом как-то затянуло. Понял, что это очень интересно.

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


— А как давно ты менторишь?

— Я начал менторить практически сразу, еще в университете. На 1-м курсе у нас были занятия от более старших ребят по программированию, они были на добровольной основе, ребята хотели чем-то поделиться. И мы приходили. А после мы решили такую же тенденцию продолжать.

Обычно это долго не длилось, 2-3 занятия. Потом либо люди заканчивались, либо темы были им понятные, поэтому пропадали.

Когда я пошел на свое первое место работы и проработал там полгода — я уже видел тот вклад, который сделал на проекте. И я понимал, что если я могу это сделать, а у меня есть друг, который не может этого сделать, — значит я могу его обучить. И уже тогда говорил своим менеджерам, что давайте, я хочу обучать ребят, хочу растить джуниоров и дальше их как-то подтягивать, чтобы им было проще на проекте и в то же время мне было интересно делиться своим опытом. Но меня съела машина бюрократии, были определенные условия, когда можно стать ментором, и проще было отказать.

После я сменил место работы и там уже сказали, делай что хочешь! Лишь бы на здоровье.


— Есть запоминающиеся ученики, которые тебя удивили?

— У меня есть друг еще со школы, и у нас так сложилась судьба, что после 9-го класса я ушел в другое место учиться. Мы не виделись на протяжении лет пяти где-то. Не общались и не созванивались. И потом я узнаю, что он отучился на повара и как-то дальше не знает, как себя реализовать. Но пытается стать фронтенд-разработчиком. И я ему говорю, слушай, так давай я тебя обучу сам. Мне это интересно, тебе приятно, почему бы и нет. И мы с ним занимались на протяжении месяцев восьми, а потом я пригласил его к нам на стажировку. Впоследствии я был у него ментором еще месяца три в рамках рабочей стажировки. Меня очень поразило, что по большому счету человек не был никак связан с IT-сферой, ему раньше не было интересно это направление, он был поваром, —- и он смог очень быстро переключиться на новую работу.

Да, конечно есть вещи, которые очень тяжело понимать без каких-то университетских знаний, базовых алгоритмов, понимания устройства компьютера, — всего того, на что большинство курсов закрывает глаза, так как сроки не резиновые. Для меня это success story, когда человек взял, захотел и добился. В то же время ты видишь других ребят, у которых все есть, но у них нет желания. И вот они что-то делают, думают, ой, мне тут все расскажут и я пойду зарабатывать много денег, сразу на работу. Домашку могу не делать, я же курсы уже купил. Но нет, это так не работает. Надо брать, делать — и чем больше, тем лучше.
— Ты наверняка слышал, что тестирование — это простой способ войти в IT. Что думаешь на этот счет? Как часто приходят ученики на курс, считая, что будет очень легко?

— Тут надо разделить на два направления. Автоматизация и мануальное тестирование. И если говорить про автоматизацию, то люди там видят слово тестирование — а остальное их не волнует. И когда ты начинаешь рассказывать про паттерны программирования, про технологии программирования, про все те инструменты, которые нужны, чтобы писать код и автотесты, — они впадают в ступор. Мы же думали, что будет просто. А тут слишком сложно, программирование. И да, они понимают, что автоматизация — это программирование в тестировании. Тебе мало того, что нужно знать программирование, помимо этого нужно понимать, что происходит в тестировании и как добиться качества.

Нет смысла учиться плавать, если ты хочешь покорять горы. Надо сразу идти в горы. Так и тут, нет смысла хотеть стать разработчиком и пытаться быть тестировщиком. Это конечно поможет в будущем, но это совсем другой вектор развития.

А вот что касается мануального тестирования, тут такая двоякая ситуация. С одной стороны никаких особо технических знаний тебе не нужно. Главное понимать, как устроен Интернет, как кнопочки нажимаются, как сервисы общаются — на уровне понимания. А дальше необходимо уметь четко выражать свои мысли. Тебе нужно обладать логическим мышлением. Потому что ты не можешь прийти и сказать, у нас там все плохо. У тебя спросят, что плохо? Ну все плохо.

То есть нужно четко и доходчиво объяснять, чтобы тебя мог понять любой член команды. И большая проблема здесь, что обучение длится не так долго. Предположим, от месяца до трех для мануального тестировщика вполне себе хорошая стажировка, после которой можно пробовать пытаться попасть на первое место работы.

Но за счет этого очень большое количество людей, кто претендует на позицию джуниор-специалиста. И много ребят, которые прочитали книжку Куликова или Савина, думают, все, я теперь познал дзен, знаю все тайны тестирования и мироздания, я сейчас приду и буду тестировщиком. И их там таких сто человек, а позиции всего две. Поэтому большая конкуренция, очень много ребят, которые не понимают, чего на самом деле хотят. Понятно, большинство движется к цели, что вот там много платят, мы будем туда двигаться. Но есть куча подводных камней, которые будут тебя тормозить, не давать достичь твоей цели. Плюс в это надо инвестировать время не только в начале карьеры, но и дальше, постоянно развиваться и учиться. Однако не все к этому готовы.

И большая проблема, что некоторые относятся к программированию как, я вот сегодня выучил и всю жизнь буду работать. Но тоже так не получается. Тебе приходится постоянно учиться, постоянно что-то изучать, куда-то смотреть вперед. И на данный момент уже от мануальных тестировщиков требуется уверенное понимание и технических вещей, чтобы они могли не только в Ecxel накидать кейс или в jira тикет создать, а чтобы понимали, что такое постман, могли сделать автоматизацию через ньюман, например. Чтобы они могли в уже существующем фреймворке что-то подправить, сами по примеру автотест накидать, четко понимать, почему бага, которую они нашли, появляется, — это бэк или фронт проблема? А это требует понимания архитектуры приложения.

Чем дальше мы будем идти, тем, мне кажется, сложнее и более комплексными будут становиться требования к этой позиции. Поэтому если сравнивать с другими направлениями, да. Тут меньше технических знаний, которые необходимы. Но в целом, я скажу, что это тоже нелегкое направление, в котором нужно развиваться, учиться. И этот процесс никогда не останавливается. Тестировщиков, как и программистов, много, а вот толковых в разы меньше.


— А нужны ли какие-то знания, прежде чем идти на курс? Что бы ты посоветовал ребятам посмотреть/почитать, может? Для того чтобы понять, будет ли им интересно это.

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

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

Что бы я посоветовал ребятам, которые хотят быть именно мануальными тестировщиками, — это конечно же знание английского языка. Потому что будет необходимо много общаться. И тут B1+, B2 — это мастхэв, самой первой строчкой будет идти в резюме. Если мы говорим про какие-то более технические навыки, то это инструментарий, но ты его и так берешь и учишь.

И второе, это логическое мышление. Скрупулезность. Потому что разработчик что-то написал, отправил. А ты говоришь, смотри, тут запятая пропущена, тут шрифт уехал, тут кнопка полетела. И он такой, блин, точно. И если ты за собой замечаешь, что ты где-то что-то подмечаешь, что у тебя душа к этому лежит — хочешь сидеть, разбираться и выяснять, а почему так, а как должно быть, — то это будет явно твое направление.

Есть забавная история из моей жизни, когда я приехал во время отпуска в отель. Там была небольшая комната, но очень много подсветки, и некоторые выключатели были проходные. Я не знаю, это природный навык или уже приобретенный с работы, — я пришел, понатыкал каждый выключатель, посмотрел, что он включает, в какой комбинации они работают. И потом, когда я это уже все сделал, сижу — и мне в голову стрельнуло, что походу это неспроста. Жена пришла, свет включила и пошла. А мне было интересно понять, а почему именно этот, а что, а какой выключатель за что отвечает.


— А с нуля можно прийти ребятам на курс?

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

То, что дается в материалах, презентациях и в том, что я расскажу, — это минимальные знания, дальше начинается самостоятельная работа, выполнение домашних заданий, чтение дополнительных материалов. Только совмещая практику и теорию и постоянно тренируясь вы сможете достигнуть результата. Мы стараемся дать все необходимое за короткий промежуток времени, чтобы это обучение не растягивалось на пять лет. Как мы считаем, этого времени достаточно, при упорном труде. И мы даем ту базу, когда человек уже может работать и продолжать развиваться на основе полученных знаний. То есть постоянно улучшать свои знания, углубляться в них. Но это все будет только в том случае, если человек сам готов работать и в это вкладываться, а мы с этим ему поможем и направим в нужную сторону.


— Почему ты выбрал C#? В чем его преимущества и насколько он легок для изучения?

— Сейчас я наверное скажу, что вообще особо нет разницы, какой язык использовать. Это всего лишь инструмент — где-то чуть сложнее, где-то чуть проще. Если сравнивать с Java, JS, Python — они все по сложности будут примерно на одном уровне. Где-то больше библиотек, где-то их меньше. Но смысл будет один и тот же.

В моем случае история развивалась так, что я начинал на C, потом на C++, потом на C# — и проходил уже стажировку по C#, и влюбился в этот энтерпрайз на C#. Когда у тебя есть команда разработчиков на .NET, логично делать автоматизацию на .NET. Особенно когда у тебя живой язык, с большим количеством синтаксического сахара, который позволяет удобно и просто писать код.

Один язык на проекте — это всегда удобно. Либо разработчики могут тебя подсаппортить, когда ты в отпуск пошел, а нужно тесты смотреть. Фронтендеры не будут смотреть, они не поймут, что там написано. А ребята с бэка тебя спокойно подхватят, подменят. Потому что они понимают код, и вы пишите на общем языке.

Я бы сказал, что автоматизация идет не как главный сервис, который ты продаешь заказчику, а дополнительный. И ты уже как автоматизатор подстраиваешься под проект, под те ограничения, которые есть.

Если у тебя фронт на JS, а бэк на .NET, то у тебя либо .NET, либо JS. Ты не будешь брать третий язык, чтобы создавать зоопарк технологий.

И я вот как окунулся в этот мир, в моей картине мира очень много проектов на .NET, я бы сказал, что конкурируют они с Java и JS наравне. Исторически сложилось. Можно так сказать.


— Куда бы ты рекомендовал идти ребятам после окончания курсов? Понятно, что куда возьмут. Но вот если есть выбор, где лучше начинать свою карьеру?

— Конечно сейчас ситуация не самая легкая на нашем рынке, но все же позиции есть. Последнюю группу, которую я вел, это был курс на Java, — я точно знаю, что три человека нашли работу. И это был сентябрь/октябрь прошлого года. То есть позиции есть. Понятно, что их стало меньше, конкуренция будет больше, но кто ищет, тот всегда найдет.

И если говорить про компании, то мне кажется для джуниор-специалиста самое главное получить заветную строчку в резюме, что у тебя есть рабочее место и коммерческий опыт. Потому что даже со стороны рекрутеров, если ты работал полгода в какой-нибудь неизвестной компании, но она в ПВТ числится, 50 человек штата, — это уже лучше, потому что у тебя есть коммерческий опыт, ты работал в команде, ты понимаешь, как протекают процессы и что от тебя требуется.

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

Для старта конечно большие компании будут лучше, потому что там большое количество людей, такой сгусток знаний и опытных ребят, общение. Но в то же время возможно было бы и здорово попасть в маленькую компанию, когда ты там занимаешься не только тестированием. И тут надо помочь девопсам, и тут разработчиком — да, это более стрессово, ты будешь тратить много своего времени. Но это колоссальный рост, ты быстрее вырастешь как специалист.

Основная идея, куда берут, где будут предложения — не отказываться и идти. Потом у тебя будет возможность поменять место работы.


— По зарплате, на сколько может рассчитывать джуниор-специалист в начале? И как быстро она растет?

— Если мы говорим про самый-самый старт, то я бы сказал, начиная 400-450$. Тут уже понятно, есть компании, которые и 600$ предлагают. И у нас были ситуации, когда ребята и на 900$ уходили как джуниор-специалисты. Но это уже скорее исключения.

И если компания готова поддерживать конкуренцию на рынке, что, наверное, в текущей ситуации, не совсем актуально, то за год ребята стабильно вырастали в 1000$.

Если меньше, то чаще всего это Х2 от твоего старта. Было 400$ — через год ты будешь получать примерно 800$. А дальше зависит от вилок компании, от твоих личных качеств, какие ты берешь задачи, какая твоя ответственность в рамках проекта. Дальше уже очень много зависит от самого человека.


— А что из себя представляет дипломный проект на курсе?

— В дипломном проекте мы стараемся дать именно тот продукт, над которым ты будешь работать на работе. Имеется в виду структура фреймворка, его уровни, типы и виды тестирования, подходы к автоматизации тестирования. То, как это есть на настоящих проектах.

Когда нам нужно сделать что-то для себя, ты берешь и пишешь скрипт, не задумываешься, что написано, как написано, просто накидал все подряд, оно работает и здорово. Если мы говорим про промышленное программирование, коммерческую разработку — во-первых, ты будешь чаще читать код, чем писать свой, и во-вторых, тебе нужно понимать, что там вообще происходит. Там большое количество файлов, там своя структура, которая есть на этом проекте. И когда ты уже знаешь, как это должно выглядеть, ты легко в этом ориентируешься в любом другом проекте.

Наш дипломный проект как раз таки представляет собой фреймворк, в котором есть все перечисленное, выполняются различные тесты. И уже базируясь на этом понимании структуры, что у тебя было в дипломном проекте, тебе будет достаточно легко на рабочем месте влиться в рабочие процессы и понимать, что и куда складывать, откуда запускать и т.д.


— Если говорить о рабочих процессах, какая часть работы твоя любимая? Ради которой ты и овертаймить готов.

— Мне очень нравится в конце месяца заполнять отчеты по часам в месяц, потому что ты понимаешь, что тебе за них заплатят :)

А если серьезно, то я вижу волшебство автоматизации именно в том, что ты в любой момент времени можешь поменять себе задачу. Я что имею в виду — у тебя там появилась новая функциональность, ты должен ее мануально протестировать. Надоело? Автоматизировал. Надоело автоматизировать — нужно пайплайны немножко поправить. Пошел, посмотрел, надоело — уже мануальная работа была бы снова интересна. И ты можешь переключаться между этими задачами, и двигаться вперед-назад.

Но, как человеку, мне нравится ретро в конце спринта, когда вы видите результат. Заказчик при этом доволен, вы добились результатов. Заказчик благодарит команду. Те буковки, которые превращаются в код, по своей сути это ничего. А уже есть готовый продукт, которым пользуются реальные люди, и заказчик видит ценность через какие-то финансовые показатели, люди закрывают свои потребности посредствам этого приложения — доставку заказать либо оплатить подарок на день рождения через эквайринг. Ты понимаешь, что, наверное, это все-таки все не зря. И люди этим пользуются. Ты видишь результаты своего труда.


— Какие у тебя в целом дальнейшие планы? Есть ли какая-то сфера, в которой хотелось бы поработать? Вернуться к хакерству, например?

— На сколько бы это грустно ни было, ты понимаешь, что коммерческая разработка — это какой-то конкретный бизнес и ему нужна реализация. То есть тут нет большого такого полета фантазии, нет чего-то сверх необычного, как может быть в науке или искусстве. Поэтому ты либо технически развиваешься и становишься супер подкованным специалистом, который дальше растет куда-то в архитектора, либо ты больше переключаешься на менеджмент, понимаешь, как нужно строить процессы и работы в команде, направляешь людей дальше и показываешь им как добиться успеха.

Я стараюсь держать баланс, чтобы и код пописать, и в то же время подумать, как сделать продукт лучше, как сделать нашу команду и работу с другими командами лучше, как вырастить из джуниор-специалистов сеньоров через проектные задачи. Ловлю баланс между менеджерскими задачами и технической реализацией.
    #Входи в айти вместе с TeachMeSkills. По промокоду "ТЕСТИРОВАНИЕ2023" мы дарим тебе скидку в размере
    100 BYN на курс "Автоматизированное тестирование на C#".


    *бонус будет действовать только при первичном обращении и последующем заключении договора
    Интервью провела Карина Старкова
    Понравился материал? Поделись им с друзьями!

    Стань востребованным IT специалистом

    Наша цель — дать тебе знания и опыт, достаточные для трудоустройства в крупнейшие IT компании.