Тестировщики играют важную роль в разработке программного обеспечения.

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

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

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

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

Начальный уровень: ручное тестирование

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

  • Вы должны знать приложение как пользователь. Вам нужно будет знать, как понять предметную область приложения и как использовать интерфейс. Например, если вы работаете над программным обеспечением для логистики, вам потребуется знание некоторых основных понятий и терминологии этой отрасли.
  • Аналитические навыки: как вы сообщаете об ошибке, чтобы иметь большое значение. «Что-то не так» сложнее понять, чем «как пользователь X, я делаю A, затем B, затем отменяю C на полпути, и на экране 1 мы получаем значение M, когда я ожидал T».
  • Письмо: О каждой обнаруженной вами ошибке вам нужно будет сообщить команде разработчиков. Ваше общение будет осуществляться, скорее всего, с помощью текстовых сообщений, электронных писем или билетов. Если вы хотите узнать несколько вещей, которые помогут вам лучше общаться в письменной форме, посмотрите на эту статью.

Хорошо, что все эти навыки необходимы для любой роли в ИТ.

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

Приемочное тестирование — это одна из тех вещей, которые люди обычно делают вручную. Это не обязательно отдельная роль — я видел или слышал о:

  • агентства используют своего клиента в качестве тестировщика - так что если заказчик принимает заявку, значит она правильная
  • продуктовые компании, внедряющие изменения очень быстро и отслеживающие внезапные изменения моделей поведения пользователей

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

Регрессионное тестирование

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

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

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

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

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

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

Автоматизация тестирования позволяет использовать сильные стороны компьютеров:

  • они обеспечивают более быстрое время выполнения
  • им никогда не бывает скучно
  • они очень точные

Взамен ваша работа переходит от просмотра приложения к поддержке набора автоматических тестов.

В своей карьере я в основном работал над интерфейсом JavaScript, но также много занимался автоматизацией тестирования. Иногда это сложно, например:

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

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

Чему вы можете научиться как тестировщик

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

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

Процесс

Создание программного обеспечения — это больше искусство, чем наука, но успешные команды имеют много общего в своем рабочем процессе. Лучший способ узнать об этом — самому поучаствовать в этом процессе. Многие компании используют ту или иную форму Agile-методологий. Например, в моем случае последние 10 лет я провел в командах, использующих методологию Scrum.

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

Инструменты

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

  • Slack-приложение для обмена сообщениями
  • ПО для отслеживания ошибок Jira
  • Хостинг-провайдер GitLab-git
  • Google Meet — онлайн-встречи

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

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

Возможность наставничества

Хорошая компания должна быть заинтересована в поддержке вашего профессионального роста. Если вам повезет, у вас будет возможность установить отношения наставничества внутри компании, например:

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

Варианты прогресса

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

Программирование

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

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

Роли в разработке продукта

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

  • Управление продуктом
  • продукт, разработанный
  • UX-дизайн

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

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

Скрам-мастер

Еще одна неочевидная работа — стать внутренним экспертом по методологии Scrum и помогать своим коллегам работать максимально продуктивно. Эта роль является частью методологии Scrum. Не каждая компания использует его, но Scrum достаточно популярен, чтобы стать допустимым вариантом карьеры. Скорее всего это не штатная должность. В команде с несколькими людьми у вас не будет достаточно проблем или блокировщиков, чтобы занять вас, но это все равно может быть интересным дополнением к вашему набору навыков и повседневным обязанностям.

Проблема с поставками

Не многие люди готовы заниматься тестированием как работой. Проблема в:

  • технические специалисты смотрят на это свысока и предпочитают создавать приложения, а не тестировать их.
  • люди, не являющиеся техническими специалистами, не знают о них или просто не рассматривают возможность подачи заявки туда.

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

Хотите узнать больше?

Если эта статья оказалась вам полезной, вы можете продолжить читать об автоматизированном тестировании здесь.

Первоначально опубликовано на https://how-to.dev.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.