Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

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

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

10К открытий16К показов
Функциональное тестирование: что это, этапы, виды и инструменты использования

Тестирование ПО — процесс испытания программного продукта с целью проверки соответствия между реальным и ожидаемым поведением программы. Существует несколько видов тестирования. Как правило, выделяют функциональное и нефункциональное.

В статье команда IT-компании MediaSoft разобралась, в чем разница между этими видами тестирования, какие этапы и виды функционального тестирования, какие инструменты пригодятся, и как можно автоматизировать тестирование. А также поделилась советами для новичков в QA.

Функциональное тестирование — вид тестирования, при котором проверяем ЧТО делает программный продукт. Например, проверка API, базы данных, пользовательского интерфейса, функциональности тестируемого продукта. Проверяется на соответствие спецификациям, бизнес-требованиям. Основано на требованиях клиента.

Нефункциональное тестирование — вид тестирования, при котором проверяется КАК работает программный продукт: производительность, масштабируемость, нагрузка, UX и т.д. Основано на ожиданиях клиента. Пример: авторизация произошла за 2 секунды.

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

При функциональном тестировании:

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

При нефункциональном тестировании:

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

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

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

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

  • модульное тестирование — выполняется разработчиками на этапе разработки приложения. Цель модульного тестирования заключается в проверке работы отдельной функциональности.
  • интеграционное тестирование — проверка того, что модули работают корректно как группа. Тестирование интеграции очень важный этап, так как модули могут быть созданы разными разработчиками.
  • системное тестирование — проводится на полноценной и полностью интегрированной системе для подтверждения, что система работает согласно исходным требованиям.
  • регрессионное тестирование — проводится после того, как в приложение были внесены какие-либо изменения. Этот вид тестирования важно проводить, так как любые изменения могут затронуть или сломать уже существующий функционал.
  • 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 — еще один универсальный инструмент для автоматизации тестирования. Этот инструмент, как и предыдущий, хорошо подойдет для новичков, так как поддерживает возможность создания тестов без написания кода.

В заключение

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

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

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

Следите за новыми постами
Следите за новыми постами по любимым темам
10К открытий16К показов