logo
Ещё

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

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

Определение и необходимость

Функциональным называют тестирование, основной задачей которого выступает проверка возможностей программного продукта с точки зрения функционала. То есть того, что именно может делать проверяемая программа. Важным дополнительным требованием становится соответствие параметрам, заданным заказчиком изначально (обычно – в формате ТЗ или любым иным способом).

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

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

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

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

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

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

Основные виды

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

  1. Белый ящик. Проверка ведется с полным доступом к программному коду. Тестировщик знает внутренние принципы работы программы. Что предусматривает высокие требования к его профессионализму и более точные результаты на выходе.
  2. Черный ящик. Тестирование ведется без получения доступа к исходному коду. Фактически, тестировщик является обычным пользователем. Такая проверка применяется наиболее часто, так как при достаточно высокой точности результатов сопровождается разумными требованиями к квалификации специалиста и ограниченными трудозатратами.
  3. Серый ящик. Комбинация двух описанных выше видов тестирования. При грамотном применении обеспечивает удачное сочетание плюсов каждого при одновременном сведении к минимуму минусов.

С точки зрения погруженности в объект проверки функциональное тестирование делится на несколько уровней:

  1. Верхний. Предусматривает проверку функционирования интерфейса посредством запуска приложения в браузере с последующим проведением необходимых тестов.
  2. Средний. Включает тестирование API, то есть возможностей программы на стороне бэкенда – сферы обмена данными с серверами.
  3. Нижний. Предполагает тестирования баз данных на основании логики хранения, извлечения и изменения, а также проверки значений (валидных или нет).
  4. Взаимодействия. Отдельный вид функционального тестирования, который проверяет интеграцию программы при взаимодействии с внешними системами (например, для приложения интернет-магазина таковыми станут платежный и логистический сервисы).

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

Как выполнить функциональное тестирование ПО

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

  1. Подготовка. Заключается в изучении технического задания на программирование, прежде всего – требований, предъявляемых заказчиком к программному продукту. Затем разрабатывается стратегия и план тестирования.
  2. Разработка сопроводительной документации. Самыми важными документами, помимо плана, выступают чек-лист и тест-кейс. Первый описывает, что нужно проверять, второй – как именно это делать.
  3. Непосредственное тестирование. Предусматривает проведение запланированных тестов и получение намеченных результатов.
  4. Анализ результатов и составление отчета. При обнаружении ошибок составляется баг-репорт. Обычно он направляется QA-инженеру или непосредственно руководителю команды программистов для исправления. Затем происходит возврат к третьему пункту пошаговой инструкции для повторного тестирования. Которое должно выявить исправление багов и функционирование программы в нормальном режиме.

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

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

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

  1. Положительное (позитивное). Проверяется работоспособность приложения или сайта с точки зрения выполнения базовых функций. Например, выбора способа оплаты заказа и проведения платежа.
  2. Отрицательное (негативное). Выполняется проверка функционирования программы в нестандартных условиях. Например, при вводе некорректных данных или других неправильных действиях пользователя.
  3. Тестирование дизайна. Предусматривает задействование готовых (то есть типовых) техник и стратегий проверки. Обычно речь идет о нескольких инструментах с выбором подходящего в зависимости от текущих задач, стоящих перед тестировщиком. В их числе:
    1. Классы эквивалентности. Проверяется работа системы для каждого класса данных, которая должна быть одинаковой.
    2. Метод граничных значений. Часто комбинируется с предыдущим. Базируется на принципе роста количества ошибок на стыках разных классов.
    3. Метод состояния переходов. Применяется в отношении сложных систем. Основан на их реакции на положительные и отрицательные тесты (фиксируется состояние для каждого и переход между ними).
    4. Метод попарного тестирования. Заключается в последовательной проверке всех допустимых комбинаций заданных параметров. Требует серьезных трудозатрат, поэтому часто предусматривает использование специальных автоматизированных сервисов.

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

Инструменты профессионального тестировщика

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

  1. Исходная документация о программе.
  2. Тестовые документы, разработанные самим тестировщиком (план, чек-лист, тест-кейс и т.д.)
  3. Автотест. Сценарий взаимодействия пользователя с программным продуктом с целью выявления багов.
  4. Эмуляторы. Обычно имитируют работу мобильных устройств и приложений. Позволяют проверить функционал программы при запуске в определенной операционной системе или на определенном типе устройства.
  5. PostgreSQL, DBeaver, pgAdmin и другие программы для проверки баз данных.
  6. Сервисы измерения и перехвата трафика. Их достаточно много, поэтому выбирается подходящий.
  7. Chrome DevTools. Универсальный инструмент для тестирования в браузере Chrome и схожих с ним. Представляет собой встроенную функцию, нередко называемую «панелью разработчиков».
  8. Selenium, Appium, Katalon Studio, Ranorex Studio и т.д. Автоматизированные инструменты функционального тестирования ПО.

Советы и лайфхаки

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

  1. Работа всегда начинается с внимательного изучения требования заказчика к программному продукту.
  2. Чем подробнее и одновременно лаконичнее тест-кейс, тем выше процент обнаруженных багов.
  3. Активное использование средств автоматизации заметно сокращает трудозатраты тестировщика.
  4. Типовые тест-кейсы нуждаются в регулярном обновлении и корректировке – с учетом вновь полученных знаний и опыта специалиста.
  5. Результаты тестирования требуют аккуратной и точной фиксации в документах.

FAQ

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

Проверка программы на предмет соответствия заданным требованиям с точки зрении функционала.

Чем оно отличается от нефункционального?

Функциональное тестирование проверяет, что делает приложение. Нефункциональное – как именно оно это делает.

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

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

Вывод

  1. Функциональное тестирование проводится с целью определить, выполняет ли программа возложенные на нее функции.
  2. Функциональное тестирование отличается от нефункционального получением ответа на вопрос, что именно делает приложение (нефункциональное отвечает, как оно это делает).
  3. Функциональное тестирование является основным и всегда проводится первым.
  4. Схема проверки не отличается от обычной. Тестировщик задействует разные методы и обширный инструментарий.
  5. Результатом становится обнаружение ошибок и составление баг-репорта, который направляется для устранения выявленных проблем QA-инженеру или программистам.
  6. После исправления багов проводится повторное функциональное тестирование.