Тестировщик (инженер по тестированию, специалист по тестированию, ручной тестировщик, manual Test Engineer) — специалист, который занимается тестированием программного обеспечения с целью его проверки на соответствие требованиям. Кроме этого, целями тестирования являются оценка качества продукта и информирование команды о качестве. В задачи тестировщика входят:
- Анализ требований (собирается из документации — ТЗ, спецификации и из уст членов команды — например, менеджера и аналитика)
- Разработка тестовой документации (чек-листы, тест-кейсы, сьют-кейсы)
- Создание среды тестирования
- Выполнение тестов
- Документирование результатов тестирования (в том числе заведение баг-репортов)
Качество ПО оценивается тестировщиком по нескольким критериям:
- Функциональность — продукт решает заявленную бизнес-задачу.
- Надежность — продолжает работать в условиях нехватки ресурсов (например, мобильное приложение при низком заряде устройства).
- Удобство использования (usability) — пользователь может достичь своей цели во время использования продукта максимально быстро и комфортно.
- Эффективность — приложение расходует ресурсы оптимально (например, расход приложением оперативной памяти).
- Сопровождаемость — можно без особых трудностей разобраться, как работает ПО, чтобы его поддерживать.
- Переносимость — возможно ли перенести на другую платформу, использовать в новом окружении.
Круг обязанностей тестировщика
Чтобы сформировать более полное представление о том, чем конкретно занимаются специалисты по тестированию, давайте подробнее рассмотрим их задачи.
Мы уже упомянули главные стадии тестирования, за прохождение которых ответственен тестировщик:
Теперь посмотрим на список чаще всего встречающихся конкретных обязанностей и задач, которые предлагаются специалисту уровня Junior.
- Анализ документации (например, в Confluence);
- Анализ и тестирование требований по проекту;
- Разработка и поддержка тестовой документации: написание чек-листов, тест-кейсов и сьют-кейсов, тест-планов;
- Построение стратегии тестирования фич;
- Управление подготовкой тестовых сред;
- Поднятие сервисов для локального тестирования;
- Функциональное и регрессионное тестирование приложений и интеграции с другими приложениями;
- Тестирование исправления багов (регрессионное тестирование);
- Тестирование новых фич;
- Нагрузочные испытания обмена между оборудованием и ПО;
- Анализ результатов тестирования;
- Анализ причин возникновения ошибок для выявления места возникновения ошибки: фронтенд, бэкенд, смежные системы;
- Анализ, заведение и валидация дефектов, оформление дефектов в багтрекинговой системе (например, в Jira);
- Подготовка отчетной информации о статусе тестирования, участие во встречах по статусу разработки проекта.
А также:
- Взаимодействие с командой (менеджер, архитектор, аналитик, разработчик, DevOps, поддержка пользователей);
- Составление пользовательской документации для системы;
- Поддержка тестовой документации в актуальном состоянии;
- Работа с базами данных и другими инструментами для тестирования.
Soft Skills тестировщика
- Аналитическое мышление: обработка и структурирование большого объема информации, формирование причинно-следственных связей, поиск взаимосвязей между объектами, формулирование выводов.
- Коммуникативные навыки, грамотное и ясное формулирование мыслей: аргументирование точки зрения, ясная постановка вопросов.
- Организационные навыки: планирование задач и времени, непрерывный анализ процессов и их улучшение, оценка рисков.
- Любопытство. Интерес, как все устроено.
- Внимательность к деталям.
- Желание сделать продукт лучше.
Хороший тестировщик ищет наиболее эффективные процессы для достижения цели, с акцентом на постоянное совершенствование. Отслеживает результаты работы и стремится оставаться эффективным, извлекая уроки как из успехов, так и из неудач. С готовностью принимает вызовы или трудные задачи. Самостоятельно разбирается с объемной и сложной информацией, чтобы эффективно решать поставленные задачи. Налаживает партнерские отношения с другими членами команды, обменивается информацией, демонстрирует уважение к идеям и вкладу других, не поддерживает мышление «мы против них».
Этапы и виды тестирования
Чтобы получить представление о рабочих циклах тестировщика, рассмотрим разные этапы и виды тестирования. Оговоримся, что классификации видов тестирования бывают различными, здесь не представлен исчерпывающий и единственно возможный список видов.
Модульное или юнит-тестирование (Unit Testing)
Это тестирование не всей системы целиком, а отдельных ее компонентов. Выполняется для того, чтобы убедиться, что каждая часть кода дает ожидаемый результат. В соответствии с различными классификациями считается первым уровнем тестирования и часто выполняется самими разработчиками. На данном уровне баги относительно несложно локализовать и исправить.
Интеграционное тестирование
В ходе интеграционного тестирования выполняют проверки того, насколько корректно взаимодействуют друг с другом отдельные компоненты. Такая необходимость возникает в том числе потому, что зачастую разные модули разрабатываются разными разработчиками параллельно. Интеграционное тестирование проводится с целью убедиться, что модули действуют как части целой системы, а не как отдельные компоненты.
Системное тестирование
На уровне системного тестирования, как понятно из названия, проводятся тесты, проверяющие всю систему целиком. Смысл этого вида тестирования состоит в том, чтобы протестировать программное обеспечение на различных входных данных, чтобы найти как можно больше багов.
Приемочное тестирование (User Acceptance Testing, UAT)
На этом последнем этапе продукт тестируется непосредственно конечными пользователями — заинтересованными сторонами с целью проверки, удовлетворяет ли продукт заявленным требованиям.
И еще пару слов об одних из самых распространенных видах тестирования.
Регрессионное тестирование
Всякий раз, когда разработчики как-либо модифицируют функциональность, существует вероятность того, что эти обновления могут привести к неожиданному поведению системы. Его цель — убедиться, что внесенные изменения в программу не повлекли за собой появление новых багов или возвращение старых.
Дымовое тестирование (Smoke Testing)
Этими тестами покрывают наиболее важные функциональности системы. Цель состоит в том, чтобы убедиться, что критически важные части системы работают, как ожидается. В этом случае не проводится исчерпывающее тестирование всех компонентов. Это первое тестирование, которое совершается с новой сборкой. После того, как с помощью дымового тестирования убеждаются в то, что система в целом стабильна, приступают к следующему уровню тестирования.
Тестирование мобильных, веб-приложений и API
Тестировщики могут заниматься тестированием веб-приложений, мобильных приложений, тестированием API. Для каждого случая будут свои вспомогательные инструменты. Для проведения тестирования веб-приложений используются инструменты веб-разработчика в браузере (Devtools), Charles/Fiddles для работы с HTTP(S)-трафиком, пригодятся знания об HTTP и основы верстки.
Для мобильного тестирования в компаниях обычно содержится целый «парк» устройств разных производителей, моделей, размеров и разрешений экранов, с разными установленными на них ОС. В ситуациях, когда тестирование на реальном устройстве в силу каких-то причин провести не представляется возможным, пользуются приложением-эмулятором, например Android Studio, который позволяет создать устройства с различными характеристиками и имитировать необходимые действия и состояния.
Тестирование API относится к интеграционному виду тестирования (о котором рассказывали выше) и позволяет обнаружить баги в процессе взаимодействия разных систем. Также тестирование API может применяться, когда например серверная часть приложения уже готова, а клиент (фронт) еще в разработке. С помощью такого инструмента как Postman можно имитировать совершение запросов к серверу, как если бы это делал пользователь через пользовательский интерфейс, а также проверить, корректно ли взаимодействует сервер с базой данных. Также для тестирования API пригодятся знания о протоколе обмена данными SOAP, архитектурном стиле REST, форматах данных JSON и XML.
Однако ручное тестирование — это начало, основа. Следующим шагом после налаживания четких процессов ручного тестирования во многих компаниях становится автоматизация тестов. OTUS предлагает несколько курсов, которые помогут погрузиться в нюансы автоматизации тестирования:
- Автоматизация тестирования на JavaScript
- Автоматизация тестирования на Java
- Автоматизация тестирования на Python
Также предлагаем ознакомиться с интересными статьями на тему тестирования ПО в блоге OTUS на Хабр:
- A/B Тестирование: Основы
- Тестирование скриншотами
- Процесс автоматизированного тестирования за 10 шагов
Ознакомиться с вакансиями для тестировщиков можно на Jooble.