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

Жизненный цикл разработки программы итеративен и состоит из следующих этапов:

  1. Определение необходимого функционала
  2. Составление архитектуры программы
  3. Разработка алгоритмов и тестов
  4. Процесс разработки
  5. Тестирование
  6. Устранение багов
  7. Финальное тестирование
  8. Релиз

Итеративной разработку делают пункты 4-6, потому что после разработки определенного функционала его необходимо тестировать, в процессе тестинга часто обнаруживаются ошибки в работе определенной части программы, и это все необходимо исправить.
Функционал определяется исходя из требований заказчика на начальном этапе разработки. Разработкой архитектуры программы и алгоритмов занимаются специалисты по системному анализу.
После того как будут определен функционал и разработан алгоритм программы(или первого ее модуля) в дело вступает тестировщик программного обеспечения.

Тестировщик программ занимается составлением тестов по исходному функционалу. Создание функционала и устранение багов — задача разработчиков.

В этой статье речь пойдет о работе тестировщика, занимающегося разработкой и автоматизацией тестов.

Какие бывают тестировщики?

В зависимости от сферы разработки тестировщики, как и разработчики, делятся на несколько специальностей:

  • тестировщик ПО
  • тестировщик игр
  • тестировщик мобильных приложений
  • тестировщик юзабилити

Тестировщик ПО

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

Тестировщик игр

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

Тестировщик мобильных приложений

Сегодня самыми популярными платформами для мобильных устройств являются iOS, Andoroid и Windows Phione, поэтому необходимо знание языков мобильной разработки. Знание Swift, C# или Java для тестировщиков приложений входит в обязательный стек изучаемых технологий.

Тестировщик юзабилити

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

Профессиональный тестировщик

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

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

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

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

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

SQL для тестировщиков сайтов может быть настолько же полезным, как Java для тестировщиков мобильных приложений. Вообще тестировщик сайтов также должен быть знаком с такими языками, как PHP или Ruby. Кроме того, при разработке сайтов используются скриптовые языки, такие как Javascript и Python. Любой тестировщик сайтов должен знать хотя бы один из двух последних языков, если он не знает другого языка для написания сценариев.
Скриптовые языки и языки разработки

Скрипт, или сценарий — это программа, которая работает уже с готовыми программными компонентами. Так как тестер занимается анализом и поиском ошибок в программе, его основным рабочим языком является скриптовый язык. Но знание Java для тестировщиков мобильных приложений или SQL для тестировщиков сайтов является необходимым, потому что чтобы написать тест на своем «родном» скриптовым языке, необходимо понимать как работает приложение.
В случае с Java тестироваться будут функции языка, которые могут отличать от того же Python, поэтому нужно понимать как они устроены.
SQL является языком запросов к базе данных. Почти все сайты работают, используя обращения к базе данных, и 80% тестов, которые проводит тестировщик сайтов, будут заключаться в тесте этих запросов.

Что необходимо, чтобы стать тестировщиком?

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

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

Зарплата

В заключение отметим, что специалисты в сфере информационных технологий, в частности тестировщики, ценятся на рынке труда. Джуниор получает в среднем 20-30 тыс. руб. в месяц, в то время как test manager(руководящий отделом тестирования) может получать зарплату от 100 тыс. руб. и выше.
Также можно заниматься фрилансом, многие компании сегодня отдают тестирование на аутсорсинг. Тестировщик на фрилансе при наличии постоянных клиентов может зарабатывать не меньше руководителя отдела тестировании в солидной фирме.