Функциональное тестирование программных продуктов, сайтов нацелено на выявление соответствия заданных в ТЗ параметров реальному результату. Если проводить простую аналогию, то суть тестирования можно сравнить с выбором велосипеда в интернет-магазине.
У вас есть ряд требований, которые вы хотите видеть в вашем велосипеде: горный, алюминиевая рама, большие колеса, переключения скоростей; и требования вы сравниваете с предложениями на страницах магазинов. Совпадение – тест пройден.
Конечно же, когда речь идет о ПО, всё происходит намного сложнее. Существуют ручные и автоматизированные тесты, разные методики их проведения, инструменты и множество других аспектов. Подробнее о том, что такое функциональное тестирование, где и как применяется, вы узнаете из нашего материала.
Понятие функционального тестирования программного обеспечения
Функциональное тестирование программ представляет собой комплекс ключевых мероприятий по проверке программного обеспечения, по результатам которых устанавливается соответствие этого ПО исходным требованиям заказчика. Иными словами, с помощью проведения данных тестов устанавливается способность информационных систем в конкретных условиях решать пользовательские задачи.
Функциональное и нефункциональное тестирование
Существует две разновидности функциональных испытаний, определяемые наличием доступа к исходному коду системы:
- «черный ящик» (black box) – тестирование проводится без доступа к исходному коду;
- «белый ящик» (white box) – доступ к коду системы обеспечивается.
Для вас подарок! В свободном доступе до 25.06 —>
Скачайте ТОП-10 нейросетей, которые помогут облегчить
вашу работу
Чтобы получить подарок, заполните информацию в открывшемся окне
Тестирование «черный ящик» берет за основу внешние проявления работы системы. Внутренние механизмы при этом остаются неизвестными. Данные тесты проверяют ответную реакцию программного обеспечения на различные вводные данные при определенном внутреннем состоянии программ. В процессе тестирования типа «белый ящик» создаются тест-кейсы на основе кода системы.
Помимо указанных концепций существует еще так называемый «серый ящик» (grey box) — это расширенный вариант исследования black box, допускающий изучение исходного кода.
В рамках функционального тестирования программного продукта проверяются следующие компоненты и критерии:
- пользовательский интерфейс;
- API;
- базы данных;
- безопасность систем;
- работа клиентских и серверных приложений;
- общая функциональность.
Перечислим основные преимущества системы функционального тестирования:
- создание точной копии тестируемого продукта;
Иными словами, проверяются конкретно те спецификации, по которым продукт будет эксплуатироваться пользователем.
- работа не основана на предположениях о структуре ПО;
- гарантия получения высокого качества продукта и достижения результата в соответствии с требованиями заказчика;
- гарантия обеспечения требуемого функционала при полном отсутствии ошибок;
- минимизация любых видов рисков благодаря тестам на основе риска.
Узнай, какие ИТ — профессии
Тестировщик с нуля / Урок 7 / Функциональное тестирование
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!
Скачивайте и используйте уже сегодня:
Александр Сагун
Исполнительный директор Geekbrains
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ ресурсов об IT-сфере
Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT
ТОП 50+ сервисов и приложений от Geekbrains
Безопасные и надежные программы для работы в наши дни
Получить подборку бесплатно
Уже скачали 21415
Разница между функциональным и нефункциональным тестированием
Функциональное исследование принципиально отличается от нефункционального. Приведем эти различия в сравнительной таблице.
- модульное тестирование;
- тесты «дымности»;
- тесты «в здравом уме»;
- интеграционное тестирование;
- white-box-исследования;
- black-box-исследования;
- пользовательское тестирование
- регрессионные тесты.
- проверка производительности;
- проверка нагрузки;
- объемное тестирование;
- проверка безопасности;
- тестирование установки;
- проверка проницаемости;
- проверка совместимости;
- миграционное тестирование.
Виды функционального тестирования
Существует множество категорий исследования, выбор которых зависит от того, для чего проводится функциональное тестирование. Наиболее распространенные разновидности будут рассмотрены далее.
Производятся, как правило, разработчиком блоков кода, связанных либо не связанных друг с другом в зависимости от требуемого функционала ПО. Написанный код должен содержать тестовые примеры для модульного тестирования строк и методов.
- Проверка работоспособности
Выполняется с целью обеспечить бесперебойную работу ключевых функций программы или системы. Данный тест обычно проводят после проверки на «дым».
Тестирование на «дымность», также известное как проверка сборки, выполняется после выпуска тестовой сборки для обеспечения стабильности этого выпуска.
- Функциональное регрессионное тестирование
Необходимо после модернизации кода для исключения нестабильной работы и нарушения функционала согласно спецификациям.
- Интеграционное функциональное тестирование
Проверяются сквозные сценарии совместной работы нескольких функциональных модулей системы с целью достижения конечного результата, в том числе, когда по отдельности эти модули работают безупречно.
Тестирование осуществляется непосредственно потребителем в производственных условиях. Таким образом учитывается уровень комфорта при взаимодействии с программным продуктом, оценивается обратная связь. Данный вид проверок напоминает приемочное тестирование пользователей.
Этапы функционального тестирования
Этап 1: Подготовка
Выполняемые на этом этапе функционального тестирования задачи включают в себя анализ исходных данных о системе. А именно, исследуются требования заказчика, техническое задание и паспорт проекта.
Кроме того, разрабатываются план предстоящих тестов и тест-кейсов, который затем согласовывается с клиентом. Согласованию подлежат также проектные сроки выполнения, число итераций, оценка вероятных рисков. Подготовка ведется при участии представителей заказчика.
Этап 2: Проведение
Функциональное тестирование мобильного приложения или программного обеспечения выполняется вручную по заранее разработанным сценариям. Обнаруженные в ходе тестов ошибки заносятся в багтрекинговую систему, если она имеется у заказчика.
В противном случае возможны несколько вариантов: предоставление такой системы на ресурсах исполнителя, предоставление заказчику специальной лицензии, использование имеющихся у клиента средств, использование только офисных программ.
Только до 29.06
Скачай подборку тестов, чтобы определить свои самые конкурентные скиллы
Список документов:
Тест на определение компетенций
Чек-лист «Как избежать обмана при трудоустройстве»
Инструкция по выходу из выгорания
Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне
Этап 3: Отчет
По определению функциональное тестирование должно завершаться отчетными материалами. Разрабатываются и согласовываются отчеты на последнем этапе, при этом составляются списки выявленных отклонений с рекомендациями по улучшению системы. При необходимости организуется обучение пользователей.
Основные методы функционального тестирования
Существует две крупных категории, определяющие тот или иной подход к исследованиям.
- Положительное тестирование
Тесты в данном случае проводятся с целью обеспечить соответствие программного продукта хотя бы ключевым требованиям заказчика.
- Отрицательное тестирование
Проверка с применением негативных сценариев дает впоследствии гарантию стабильной работы системы даже в случаях воздействия неожиданных начальных условий.
Далее эти фундаментальные методы можно разделить на типы функционального тестирования:
- Проверки на основе конечного пользователя
Исследуемая система состоит из компонентов, соответствующих пользовательским ожиданиям при условии совместной работы этих компонентов.
Входные данные разделяются по так называемым классам данных эквивалентности. Критерий отнесения к тому или иному разделу заключается в одинаковом поведении этих данных, что позволяет исследовать лишь одно условие — если оно работает, другие также будут работать, а если вдруг по нему работа прекращается, перестают работать все.
Популярные статьи
- Граничное тестирование
В рамках этих тестов ограничиваются данные для исследуемой программы, а затем анализируется поведение этой программы. Выход исходных данных за пределы установленных границ автоматически относит данное тестирование к отрицательному.
- Тесты на основе принятия решений
Здесь основным критерием служат всевозможные получаемые при проведении функционального тестирования результаты, но только когда выполняется определенное условие.
- Альтернативные проверки потока
Обычно таким образом проверяются все вероятные способы выполнения функции, отличные от основного потока.
Данной методикой выявляются различные несоответствия, которые ранее не обнаруживались. Эти тесты находят широкое применение, когда большая часть ошибок была выявлена вышеописанными методами.
Когда требуется функциональное тестирование сайта
Необходимость в таком исследовании возникает при наличии на сайте интерактивных элементов, таких как:
- формы регистрации,
- формы авторизации
- формы обратной связи,
- инструменты сортировки и фильтрации,
- кнопки заказа товара,
- кнопки вызова менеджера,
- инструменты для прохождения опроса, оставления отзыва и т. д.
Сайт интегрируется с другими информационными системами, среди которых:
- программы складского учета,
- CRM,
- сервисы оплаты и доставки,
- программы лояльности и т. д.
Каждый такой модуль может работать с ошибками и сбоями.
Цель функционального тестирования состоит в удовлетворении требований заказчика. Прежде всего необходимо знать, как должна работать тестируемая система. Любые отклонения от правильного поведения и возникающие в ходе тестов ошибки требуется документировать. После проверки на основе данной документации проводится процедура отладки.
Выполнение функционального тестирования сайта зачастую требует от специалиста знаний и навыков в области юзабилити. Опытный тестировщик также обратит внимание на недочеты во внешнем виде ресурса, даже если функционал работает исправно.
При наличии грубых ошибок верстки и плохих дизайнерских решений они обязательно будут отмечены. Соответствующие рекомендации по исправлению выявленных недочетов тестировщик может отразить в итоговом отчете.
Тем не менее, упор в процессе данных тестов делается именно на проверку функциональности сайта. Остальные критерии проверяются скорее факультативно.
Поэтому, когда необходим конкретно аудит юзабилити, либо требуется полная проверка интернет-ресурса, желательно заказывать услуги у исполнителей, которые специализируются именно на этом. Функциональное тестирование интерфейса и дизайна выполняется специалистами, которые в освещенных темах могут досконально не разбираться.
Многие клиенты стремятся максимально сэкономить на тестировании их продуктов, и это желание вполне объяснимо. Все дело в невозможности определения экономического эффекта от каждой такой проверки. Заказчики вынуждены оценивать результат исключительно по субъективным критериям.
Эта неопределенность в итоге влияет на решение руководителей компаний урезать затраты на подобные испытания, а то и вовсе отказываться от проведения тестов.
Между тем, специалисты рекомендуют не игнорировать полностью важность функциональных проверок. Последствия таких недальновидных отказов могут быть весьма негативными для бизнеса.
А вот отказываться от отдельных тестов, необходимости в которых в данное время нет, как раз желательно. Провести их можно в любой другой момент — возможности информационных технологий это позволяют.
Источник: gb.ru
Что такое функциональное тестирование
Функциональное тестирование — это вид тестирования программного обеспечения, при котором основные функциональные возможности приложения проверяются на соответствие заранее определенному набору спецификаций. Используя методы тестирования «черного ящика», функциональные тесты измеряют, возвращает ли заданный входной сигнал желаемый выходной сигнал, независимо от любых других деталей. Результаты являются двоичными: тесты проходят или не проходят.
Почему важно функциональное тестирование?
Функциональное тестирование важно, потому что без него вы не сможете точно понять, функционирует ли ваше приложение так, как задумано. Приложение может пройти нефункциональные тесты и в остальном работать хорошо, но если оно не обеспечивает конечного пользователя ключевыми ожидаемыми результатами, приложение нельзя считать рабочим.
В чем разница между функциональным и нефункциональным тестированием?
Функциональные тесты проверяют, выполняются ли заданные функциональные требования, в то время как нефункциональные тесты могут использоваться для проверки нефункциональных вещей, таких как производительность, безопасность, масштабируемость или качество приложения. Другими словами, функциональное тестирование проверяет, работают ли ключевые функции, а нефункциональные тесты больше интересуются тем, как происходят эти операции.
Примеры типов функциональных тестов
Существует множество типов функциональных тестов, которые вы можете захотеть выполнить в процессе тестирования вашего приложения.
Несколько наиболее распространенных из них включают:
Unit тесты
Юнит-тестирование разбивает желаемый результат на отдельные блоки, позволяя вам проверить, приводит ли небольшое количество входных данных (иногда всего один) к желаемому результату. Юнит-тесты, как правило, являются одними из самых маленьких тестов, которые можно быстро написать и выполнить, поскольку каждый из них предназначен для проверки только одного участка кода (функции, метода, объекта и т.д.) и проверки его функциональности.
Smoke тесты (дымовые тестирование)
Дымовое тестирование проводится для проверки того, что наиболее важные части приложения работают так, как задумано. Это первый проход в процессе тестирования, и он не является исчерпывающим. Дымовые тесты гарантируют, что приложение работает на базовом уровне. Если это не так, нет необходимости переходить к более детальному тестированию, и приложение может быть возвращено команде разработчиков для проверки.
Санитарное тестирование
Тестирование на пригодность к использованию в некотором роде является двоюродным братом смок тестов, поскольку оно также предназначено для проверки базовой функциональности и потенциально позволяет избежать детального тестирования неработающего программного обеспечения. Разница заключается в том, что тестирование на пригодность проводится на более поздних этапах процесса, чтобы проверить, оказало ли новое изменение кода желаемый эффект. Это «проверка на вменяемость» конкретного изменения, чтобы определить, работает ли новый код так, как ожидалось.
Интеграционное тестирование
Интеграционное тестирование определяет, правильно ли функционируют комбинации отдельных программных модулей вместе. Отдельные модули могут уже пройти независимые тесты, но когда их успешная работа зависит от других модулей, такое тестирование необходимо, чтобы убедиться, что все части работают вместе, как ожидается.
Регрессионное тестирование
Регрессионное тестирование позволяет убедиться, что добавление нового кода не нарушает существующие функциональные возможности. Другими словами, не привел ли новый код к «регрессу» или откату качества приложения? Регрессионные тесты нацелены на внесенные изменения и гарантируют, что приложение в целом остается стабильным и функционирует так, как ожидается.
Приемочное пользовательское тестирование (UAT)/Бета-тестирование
Тестирование юзабилити подразумевает использование приложения ограниченной группой реальных пользователей в производственной среде. Отзывы этих реальных пользователей, которые не имеют опыта работы с приложением и могут обнаружить критические ошибки, о которых не знали внутренние команды, используются для внесения дальнейших изменений в приложение перед полным запуском.
Тестирование UI/UX
UI/UX тестирование оценивает графический пользовательский интерфейс приложения. Проверяется производительность компонентов пользовательского интерфейса, таких как меню, кнопки, текстовые поля и т.д., чтобы убедиться, что пользовательский интерфейс идеально подходит для пользователей приложения. Тестирование UI/UX также известно как визуальное тестирование и может быть ручным или автоматизированным.
Другие классификации функционального тестирования включают тестирование «черного ящика», тестирование «белого ящика», тестирование компонентов, тестирование API, тестирование системы и производственное тестирование.
Как проводить функциональное тестирование
Суть функционального тестирования включает в себя три этапа:
- Определите желаемые входные значения теста
- Выполнить тесты
- Оценить полученные выходные значения тестов
По сути, когда вы выполняли задачу с вводом данных (например, вводили адрес электронной почты в текстовое поле и нажимали кнопку отправки), генерировало ли ваше приложение ожидаемый результат (например, пользователь был подписан и отображалась страница благодарности)?
Функциональное тестирование: что это, этапы, виды и инструменты использования
Тестирование ПО — процесс испытания программного продукта с целью проверки соответствия между реальным и ожидаемым поведением программы. Существует несколько видов тестирования. Как правило, выделяют функциональное и нефункциональное.
В статье команда IT-компании MediaSoft разобралась, в чем разница между этими видами тестирования, какие этапы и виды функционального тестирования, какие инструменты пригодятся, и как можно автоматизировать тестирование. А также поделилась советами для новичков в QA.
Функциональное тестирование — вид тестирования, при котором проверяем ЧТО делает программный продукт. Например, проверка API, базы данных, пользовательского интерфейса, функциональности тестируемого продукта. Проверяется на соответствие спецификациям, бизнес-требованиям. Основано на требованиях клиента.
Нефункциональное тестирование — вид тестирования, при котором проверяется КАК работает программный продукт: производительность, масштабируемость, нагрузка, UX и т.д. Основано на ожиданиях клиента. Пример: авторизация произошла за 2 секунды.
Отличия функционального и нефункционального тестирований
При функциональном тестировании:
- Мы проверяем, что система выполняет те задачи, которые были заявлены в требованиях к приложению;
- Обычно выполняется с использованием тест-кейсов, которые описывают шаги для проверки функций продукта;
- Проще провести проверку, не прибегая к использованию дополнительных инструментов.
При нефункциональном тестировании:
- Проверяется, как система себя ведет при выполнении заявленных задач;
- Написать тест-кейсы значительно сложно, так как зачастую для него нет четких требований;
- Приходится обращаться к помощи специальных программ, поэтому оно сложнее, чем функциональное.
Этапы функционального тестирования
- Определить и проанализировать, какую функциональность необходимо протестировать. Перед началом необходимо изучить тестируемый функционал: какие у нее требования, как она должна работать, как пользователь будет её использовать.
- Написать тест-кейсы. В них тестировщик пошагово описывает сценарий проверки определенной функциональности.
- Подготовка тестовых данных. Для тестирования используются данные, которые максимально приближены к тем, что могут использовать пользователи. Сбор тестовых данных основывается на требованиях.
- Проведение тестирования. Происходит сравнение фактического результата и ожидаемого.
- Составление отчета по результатам тестирования. По завершении тестирования необходимо собрать отчет с результатами прогонки тестов, списком багов и рекомендациями по улучшению продукта.
Виды тестирования, применяемые при функциональном тестировании
- модульное тестирование — выполняется разработчиками на этапе разработки приложения. Цель модульного тестирования заключается в проверке работы отдельной функциональности.
- интеграционное тестирование — проверка того, что модули работают корректно как группа. Тестирование интеграции очень важный этап, так как модули могут быть созданы разными разработчиками.
- системное тестирование — проводится на полноценной и полностью интегрированной системе для подтверждения, что система работает согласно исходным требованиям.
- регрессионное тестирование — проводится после того, как в приложение были внесены какие-либо изменения. Этот вид тестирования важно проводить, так как любые изменения могут затронуть или сломать уже существующий функционал.
- sanity тестирование или санитарное тестирование — очень похоже на регрессионное. Оно проводится, когда тестировщик получает новую сборку с минорными изменениями. Разница между этими двумя видами заключается в том, что если при регрессе мы проводим полное тестирование приложения, то при санити мы тестируем какую-то одну функциональность.
- smoke-тестирование или дымовое тестирование — проводится для того, чтобы убедиться, что наиболее критичный функционал приложения работает так, как должен.
Инструменты для ручного функционального тестирования
Системы управления тестированием:
- TestIT — система управления тестированием, которая была создана тестировщиками для тестировщиков. С её помощью удобно хранить тест-кейсы, составлять тест-планы, создавать прогоны и управлять ими.
- TestRail — удобно создавать чек-листы, тест-кейсы и прогоны, выгружать результаты прогонов, отчеты о тестировании и сами тест-кейсы в формат CSV. Также сравнивать результаты нескольких прогонов. Он поддерживает интеграцию с различными баг-трекинговыми системами (Jira, YouTrack и т.д.).
- Allure — с его помощью удобно управлять ручным и автоматизированным тестированием. Легко разрабатывать тест-кейсы и чек-листы, создавать тестовые прогоны и собирать статистику по результатам тестирования.
Инструменты для работы с БД:
- DBeaver — универсальный инструмент для управления БД с удобным интерфейсом. С помощью него можно работать с различными СУБД: MySQL, PostgreSQL, SQLite, Oracle и другими.
- SQL Developer — графический интерфейс для работы с БД и выполнения SQL-запросов. С его помощью можно создавать и выполнять запросы, исследовать базы данных и отслеживать ошибки.
- HeidiSQL — графическая оболочка для работы с MySQL, PostgreSQL и Microsoft SQL Server. Она может быть использована для создания, изменения и удаления таблиц, вставки и удаления данных, создания SQL-запросов и многого другого.
Инструменты для тестирования API:
- Postman — с его помощью можно составлять и отправлять запросы, собирать коллекции и делиться ими с коллегами. Также в Postman можно писать автотесты для тестирования API.
- SoapUI — с помощью данного инструмента можно легко и удобно тестировать как SOAP, так и REST-сервисы. Можно проверять работоспособность веб-сервисов, устанавливать доступность, работу различных запросов и отслеживать получение ответов.
- Swagger UI — инструмент для описания и проверки API-методов. К каждому запросу есть пример ответа и описание приходящих в них параметров. Не требует установки на устройство пользователя.
- Kibana — инструмент визуализации и анализа данных в реальном времени, отслеживания трендов и прогнозирования будущих событий.
- Graylog — система для сбора, хранения, мониторинга и анализа логов из различных источников в режиме реального времени. Позволяет сохранять большие объемы логов и анализировать их, используя поисковые запросы и фильтры.
- Android Studio и Xcode — можно собирать логи с мобильных устройств — Android и Xcode соответственно — в режиме реального времени. Удобно собирать, читать и анализировать логи.
- Android Studio — с помощью инструмента Android Virtual Device Manager можно создавать и управлять виртуальными устройствами с операционной системой Android. При эмуляции устройств есть возможность протестировать приложение в различных состояниях (медленное подключение к интернету, прерывания, маленький объем памяти устройства и т.д.).
- Xcode — в данном инструменте есть возможность симуляции различных устройств Apple от iPod до Apple TV. В отличии от эмуляции с помощью Android Studio, Apple Simulator имитирует лишь часть функциональности физического устройства.
- BrowserStack — это сервис для тестирования веб-сайтов и мобильных приложений на различных устройствах и браузерах, без необходимости устанавливать их на локальном компьютере. Он предоставляет обширную коллекцию реальных устройств, операционных систем и браузеров, которые могут быть использованы для тестирования веб-сайтов и мобильных приложений на реальных устройствах в режиме онлайн.
Можно ли автоматизировать функциональное тестирование и для чего
Со временем функционал приложения растет, соответственно, количество функциональных тестов увеличивается. В этом случае на помощь приходит автоматизированное тестирование.
Автоматизация помогает ускорить процесс тестирования, обеспечить более стабильные результаты, уменьшает вероятность человеческого фактора и позволяет перенести рабочую нагрузку нескольких ручных тестировщиков на одного автоматизатора.
Существует много инструментов для автоматизации функционального тестирования. Про самые популярные мы поговорим ниже:
- Selenium — один из самых популярных инструментов для автоматизации тестирования веб-приложений. Selenium позволяет работать на различных операционных системах (Windows, Mac, Linux) и браузерах (Chrome, Firefox и т.д), поддерживает различные языки для написания скриптов.
- Appium — это кроссплатформенный инструмент для автоматизации тестирования мобильных приложений (нативные, гибридные и веб). Позволяет создавать и запускать тесты на реальных устройствах и эмуляторах, использовать различные языки программирования для написания тестов.
- Katalon Studio — инструмент для автоматизации API, веб, десктоп и мобильных приложений. Для написания тестовых скриптов используется язык программирования Java или Groovy. Плюс данного инструмента — для работы с ним достаточно начальных знаний языков программирования. Благодаря чему он отлично подходит для новичков.
- Ranorex Studio — еще один универсальный инструмент для автоматизации тестирования. Этот инструмент, как и предыдущий, хорошо подойдет для новичков, так как поддерживает возможность создания тестов без написания кода.
В заключение
Функциональное тестирование необходимо для проверки продукта на соответствие заявленным требованиям. Оно гарантирует, что пользователь сможет использовать продукт по назначению. А ошибки будут найдены до того, как приложение попадет к клиенту.
Новичкам следует ознакомиться с основными принципами функционального тестирования, изучить инструменты, пробовать создавать тест-кейсы и проводить практическое тестирование. Для этого можно использовать любой сайт или приложение. Рекомендуем ознакомиться с уже готовыми чек-листами в интернете, использовать их для практики и получения опыта в проведении функциональных тестов.
Наращивайте свои навыки, изучайте и пробуйте новые подходы и технологии. Применяйте их на практике, чтобы получить новый опыт и расширить свои знания в тестирования.
Источник: tproger.ru