Главная | Все статьи | Код

Какие бывают этапы и виды тестирования: подробный разбор

Тестирование Время чтения статьи ~17 минут 11
Какие бывают этапы и виды тестирования: подробный разбор главное изображение

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

В написании статьи принял участие Ирек Насибуллин, Ростелеком ИТ Automation QA

Что такое тестирование

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

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

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

Почему важно тестировать программы

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

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

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

Автотестирование на JavaScript c нуля

Попробуйте себя с 5 бесплатных уроков

Какие бывают этапы тестирования

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

Проработка требований к продукту

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

Анализ требований

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

Разработка стратегии и плана тестирования

Когда все требования к продукту понятны, остается разработать план тестирования. В него входит:

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

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

Создание тестовой документации

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

Тестирование

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

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

Эксплуатация и поддержка

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

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

Читайте также: Какие навыки нужны тестировщику и как им стать

QA-инженер с нуля до автоматизатора

Рекомендуем начать с бесплатных уроков

Какие бывают виды тестирования

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

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

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

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

По характеру сценариев

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

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

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

По критериям запуска программы или кода

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

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

По степени автоматизации тестирования

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

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

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

Читайте также: Чем занимается ручной тестировщик

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

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

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

По объектам тестирования

Эта группа объединяет в себе виды, которые предполагают определение того, какие части программы или системы подвергаются тестированию.

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

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

Функциональное тестирование делится на подвиды:

  • Unit-тестирование (также модульное тестирование) — проводится во время создания исходного кода. На этом этапе тестируются отдельные компоненты приложения. Тестировщики пишут тесты, чтобы убедиться, что каждый компонент будущей программы работоспособен и дает правильные результаты при различных входных данных.
  • Интеграционное тестирование. На следующем этапе тестируется то, как компоненты будущего приложения взаимодействуют между собой.
  • Системное тестирование (End-to-end тестирование). На этом этапе специалисты тестируют все компоненты программы как единое приложение. Тестировщики проверяют, что продукт корректно обрабатывает различные сценарии и ситуации.
  • Приемочное тестирование. На последнем этапе продукт тестирует уже клиент или заказчик. Они проверяют, соответствует ли проект их ожиданиям и требованиям. А еще убеждаются, что программа дает правильные результаты и работает без ошибок.

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

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

Читайте также: Я знал, что быть тестировщиком — мое призвание: история Кирилла Куртова

Нефункциональное тестирование делится на подвиды:

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

По степени знания системы

Эта группа объединяет в себе виды, которые используются в зависимости от этого, насколько тестировщик знаком с тестируемым продуктом.

Тестирование «черного ящика» — это способ проверки программного обеспечения, когда тестировщик не знает внутренней структуры или деталей работы самой программы. Он смотрит на нее как на «черный ящик», и проверяет, как система взаимодействует с внешним миром и выполняет свои функции.

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

Тестирование «белого ящика», наоборот, предполагает, что тестировщик имеет доступ к внутренней структуре и коду программы. Он изучает, как работает программа «изнутри», чтобы убедиться, что все компоненты и функции написаны правильно и соответствуют требованиям.

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

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

Этот подход позволяет объединить преимущества обоих типов тестирования и обеспечить более полное и всестороннее тестирование программного обеспечения.

Под группу «по степени знания системы» также подходит еще несколько видов тестирования:

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

По времени проведения тестирования

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

  1. Альфа-тестирование — это этап тестирования программного обеспечения, который происходит перед его официальным выпуском и предполагает проверку продукта внутри компании-разработчика или ограниченной группой тестировщиков. Альфа-тестирование помогает выявить возможные проблемы и ошибки перед предоставлением продукта пользователю.
  2. Дымовое тестирование — это быстрая проверка программного обеспечения, которую выполняют после внесения значительных изменений или обновлений в код. Этот вид тестирования напоминает «пробный пуск» программы, чтобы убедиться, что основные функции работают без критических ошибок.
  3. Если после дымового тестирования в продукт добавляют какую-то фичу или просто хотят убедиться, что все предыдущие функции работают правильно, то проводят регрессионное тестирование. Тестировщики убеждаются, что новая функция работает правильно и выполняет свои задачи так, как ожидается, а все остальное не вызывает новых ошибок.
  4. Приемочное тестирование выполняют представители заказчика, чтобы удостовериться, что продукт вышел качественным, и что за него можно заплатить деньги. Чтобы успешно пройти приемочное тестирование, обычно нужно просто выполнить тесты, которые доказывают соответствие программы требованиям.
  5. И последний этап — бета-тестирование. Тестировщики предоставляют готовую программу ограниченной группе реальных пользователей, которые могут сами с ней повзаимодействовать. Юзеры выявляют дополнительные проблемы, получить обратную связь от пользователей и улучшить программу перед ее окончательным выпуском для широкой аудитории.

Итог

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

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

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

  1. По характеру сценариев: тестирование позитивных сценариев, тестирование негативных сценариев.
  2. По критериям запуска программы или кода: статическое тестирование, динамическое тестирование.
  3. По степени автоматизации тестирования: ручное тестирование, автоматизированное тестирование.
  4. По объектам тестирования: функциональное тестирование (куда входит unit-тестирование, интеграционное тестирование, системное тестирование, приемочное тестирование и тестирование интерфейса пользователя) и нефункциональное тестирование (куда входит нагрузочное тестирование, тестирование на проникновение, тестирование совместимости, стресс-тестирование, тестирование на отказоустойчивость, тестирование на восстановление).
  5. По степени знания системы: тестирование «черного ящика», тестирование «белого ящика», тестирование «серого ящика», тестирование по документации (или формальное тестирование) и интуитивное тестирование.
  6. По времени проведения тестирования: альфа-тестирование, дымовое тестирование, регрессионное тестирование, приемочное тестирование, бета-тестирование.

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

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

Начать с 5 бесплатных уроков

Похожие статьи
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 26 декабря
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 26 декабря
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 26 декабря
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 26 декабря
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 26 декабря
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 26 декабря
профессия
от 28 908 ₸ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 26 декабря
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 26 декабря
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 26 декабря