Чем занимаются тестировщики и почему они так нужны? Какой карьерный рост возможен для тех, кто выбрал эту специальность? Старший тестировщик Дмитрий Лебедев и выпускник тренинг-центра EPAM Александр Поздняков рассказывают о том, что такое тестирование на самом деле. Давайте разбираться!
Тестирование – это интересно?
Тестирование – многогранный и очень интересный процесс. У начинающего специалиста здесь есть большой выбор возможностей развития. Например, можно развиваться в направлении тестирования Backend'a, то есть скрытой от глаз пользователя части ПО. Или можно погрузиться в тестирование User Interface – той части системы, через которую пользователь взаимодействует с приложением. Может быть, вам больше нравится тестировать игры? А может, душа лежит к нагрузочному тестированию? Или хочется почувствовать себя «хакером» и уйти в тестирование безопасности? В тестировании возможно всё!
Почему тестировщики так нужны?
Допустим, мы разрабатываем приложение на основе E-learning для учащихся младших классов. Представьте, что будет, если мы пропустим этап тестирования и предоставим наше приложение школам «как есть». Школьники, вооружившись пытливым умом, будут испытывать приложение на прочность, кликая на все кнопки. Например, они заблокируют учителя в голосовом чате, что приведёт к срыву урока. Если бы мы более ответственно подошли к тестированию приложения с точки зрения функций, которые оно должно выполнять и заранее продумали ограничения, такого бы не случилось.
Что делает тестировщик на проекте?
Роль тестировщика на проекте заключается в том, что он проверяет результат работы всей команды (разработчиков, системных инженеров, бизнес-аналитиков). В частности, он проверяет соответствие разработанного программистами приложения предъявляемым требованиям. Иными словами, тестировщик – это условный «универсальный солдат», который должен понимать не только как работают отдельные части приложения, но и как система ведёт себя в целом; а также, как изменения в одном модуле могут повлиять на работу всего приложения. Не менее важная задача тестировщика – понимать и оценивать требования к приложению с точки зрения их реализуемости.
А можно поконкретнее?
Давайте представим гипотетическую ситуацию, что наша команда разрабатывает WEB-ориентированное приложение, нацеленное на продажи. У нашего приложения будет корзина, в которую пользователь должен иметь возможность добавить продукт. Как определить, что реализованный модуль соответствует нашим ожиданиям? Как понять, что пользователь действительно может добавить товар в корзину? Мало того, пользователь должен иметь возможность оплачивать товар, а значит, нам нужно взаимодействовать со сторонними сервисами, позволяющими проводить оплату. Как нам убедиться, что взаимодействие пройдёт успешно? Это всего лишь один сценарий взаимодействия с корзиной, а их должно быть значительно больше. Вот тут и проявляется наибольшая польза от работы тестировщика.
Пример из жизни: у всех дома есть ножницы и основная функция ножниц – разделять один объект из ткани или бумаги на два. Это ожидаемое поведение нашей системы. Смыкая лезвия ножниц, мы получаем реальное поведение системы. Если ножницы с момента выпуска с завода не режут бумагу, а только создают заломы, то они не выполняют свою функцию, а значит реальное поведение системы не соответствует ожидаемому.
Кто вы, мистер Тестировщик?
Тестировщик – это человек, который обеспечивает качество разрабатываемого продукта. Он сопоставляет требования и реализованное приложение, сравнивая их на предмет отклонений. Он может тестировать как целую систему, так и её малую часть.
Определения
Итак, мы переходим к обзору основных понятий, используемых в тестировании ПО. И начинается наш обзор, как ни странно, с вопроса «А что же такое тестирование ПО?
Тестирование ПО – это процесс исследования, испытания программного продукта, целью которого является проверка соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определённым образом (ISO/IEC TR 19759:2005).
Определений тестирования ПО существует много, рассмотрим ещё одно:
Тестирование ПО – это один из методов контроля качества, процесс анализа ПО, направленный на выявление степени соответствия ПО требованиям.
В свою очередь, контроль качества – это система мер для обеспечения соответствия требованиям и ожиданиям (ISO 9000:2005). Контроль качества включает в себя тестирование, прототипирование, инспектирование кода и некоторые другие методы.
Как вы можете заметить, во всех трёх определениях встречается такой термин, как «требования». Какие требования? Для чего они нужны? Зачем они вообще существуют? Если вкратце, то с точки зрения тестирования, требования помогают инженеру по качеству сосредоточиться на конкретных задачах. Отметим также, что тестирование – это бесконечный процесс, и протестировать всё физически невозможно.
Кому подходит тестирование?
В описании многочисленных вакансий (да-да, рыночный спрос здесь стабильно высокий) на позицию «Тестировщик ПО» всегда можно встретить «внимательность к деталям», «скрупулёзность», «ответственность» и т.д. Однозначно, это очень важные характеристики. Мы лишь дополним этот список ещё несколькими качествами, которые точно необходимы первоклассному специалисту в тестировании:
Хороший тестировщик – это тот, кто:
- умеет общаться с людьми и работать в команде;
- не боится уточнять детали, даже те, которые на первый взгляд кажутся очевидными;
- всегда готов разобраться в новой для себя предметной области.
Какие пути есть в тестировании?
Как уже было сказано выше, тестирование ПО – это многогранный процесс, и в нём всегда есть место развитию.
Например, если команда разрабатывает приложение под разные версии операционных систем, браузеров или иных платформ, то тестировщику необходимо обладать навыками тестирования совместимости (Compatibility testing). Или, например, команда разрабатывает мобильную версию приложения, тогда необходимо заняться Mobile testing. А возможно, вы умеете упрощать себе жизнь, оформляя рутинные задачи в коде? Тогда вам подойдет Automated testing.
А как же карьерный рост? Кем можно стать после уровня Junior?
Для тестировщиков (как и для разработчиков) есть много карьерных возможностей в компании. Он, как и любой другой технический специалист, может расти от Junior-специалиста до Lead-специалиста.
Например, в EPAM, можно стать и техническим лидом (Tech Lead), и Delivery Manager (DM), и ресурсным менеджером (RM). Опыт работы в тестировании будет значительным преимуществом, если развитие в одной из перечисленных ролей является для вас приоритетным. Более того, работа тестировщика не менее ответственная, чем работа разработчика, и оценивается она так же высоко.
Подводим итоги
Тестирование – это одно из стремительно развивающихся направлений с высоким спросом на рынке IT. Тестировщики востребованы в самых разных сферах бизнеса (автомобилестроение, E-learning, E-commerce, Life Sciences и т.д.), а внутри самого направления вы найдёте много разных возможностей для развития – от Mobile Testing до Data Quality. Таким образом, став специалистом по тестированию, вы сможете повышать свои компетенции в совершенно разных областях, выбирая подходящее направление для карьерного роста!