Что такое функциональное тестирование?

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

Вот несколько типичных примеров функционального тестирования:

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

Функциональное и нефункциональное тестирование

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туторилов, задач по автоматизации и книг по QA.

Что такое нефункциональное тестирование?

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

  • Может ли приложение для электронной коммерции одновременно обслуживать большое количество посетителей?
  • Сколько времени требуется для загрузки страницы в приложении?

В чем разница между функциональным и нефункциональным тестированием?

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

Функциональное тестированиеНефункциональное тестирование
МетодОбычно выполняется по методу “черного ящика”, при котором тестировщики проверяют только входы и выходы, а не внутреннюю структуру системы.Обычно выполняется по методу “белого ящика”. В этом случае тестировщик получает информацию о внутреннем устройстве системы для создания соответствующих тест-кейсов.
Что исследуетсяУдовлетворяют ли выходные данные системы заданным спецификациям или требованиям.Производительность системы, стабильность, безопасность, удобство использования и т.д.
Входные данныеБизнес-требования, спецификации клиента.Скорость, пропускная способность, масштабируемость и т.д.
ПримерыМодульное тестирование

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

Регрессионное тестирование (может быть как функциональным, так и нефункциональным)
Тестирование безопасности

Тестирование производительности

Нагрузочное тестирование

Стресс-тестирование

Виды функционального тестирования

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

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Модульное тестирование

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

Пример

Ресторану нужно приложение, которое поможет клиентам за столиком делать заказ без привлечения официанта. Для проверки функции “Добавить к заказу” разработчик создает модульный тест. Другие отдельные функции, такие как “Удалить из заказа” или “Отправить заказ”, также будут проходить модульное тестирование.

Компонентное тестирование

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

Пример

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

Интеграционное тестирование

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

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

Пример

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

Системное тестирование

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

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

Пример

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

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

  • Модульный тест: проверка, как работает кнопка входа в систему
  • Компонентный тест: проверка работы всей страницы входа в систему
  • Интеграционный тест: проверка перехода между страницей входа и другими страницами
  • Системный тест (сквозной тест): проверка функционирования всего сайта.

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

Примечание редакции: также рекомендуем статью “Чем отличаются санитарное и дымовое тестирование”.

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

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

Пример

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

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

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

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

Пример

В онлайн-магазине пользователи не могут добавить определенный товар в корзину, даже если он есть в наличии. После устранения проблемы проводится санитарное тестирование, чтобы убедиться, что функция “Добавить в корзину” действительно работает.

Дымовое тестирование

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

Пример

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

Как проводить функциональное тестирование?

Функциональное тестирование стандартно выполняется в следующем порядке.

1. Определение тестируемой функции

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

2. Создание тестовых сценариев

В тестовом сценарии тестировщики описывают действие, которое выполняет пользователь, и указывают желаемый результат. Например, тестовый сценарий для сервиса потоковой передачи фильмов может быть таким: “Проверить, что пользователи могут добавлять новые фильмы в список “Мое любимое””.

3. Подготовка тестовых данных и определение правильных выходных данных

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

4. Выполнение тест-кейсов и проверка результатов на соответствие спецификациям

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

Автоматизация функционального тестирования

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

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

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

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

Перевод статьи «What is functional testing? Definition, types & examples».

3 комментария к “Что такое функциональное тестирование?”

  1. Пингбэк: Что такое тестирование ПО? Виды, методы и инструменты тестирования

  2. Пингбэк: Регрессионное тестирование, инструменты и примеры

  3. Пингбэк: Эффективная оценка времени для тестирования ПО

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *