Функциональное тестирование: что это, этапы, виды и инструменты использования
Команда MediaSoft разобралась, в чем разница между функциональным и нефункциональным тестированием и какие инструменты пригодятся.
11К открытий17К показов
Тестирование ПО — процесс испытания программного продукта с целью проверки соответствия между реальным и ожидаемым поведением программы. Существует несколько видов тестирования. Как правило, выделяют функциональное и нефункциональное.
В статье команда 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 — еще один универсальный инструмент для автоматизации тестирования. Этот инструмент, как и предыдущий, хорошо подойдет для новичков, так как поддерживает возможность создания тестов без написания кода.
В заключение
Функциональное тестирование необходимо для проверки продукта на соответствие заявленным требованиям. Оно гарантирует, что пользователь сможет использовать продукт по назначению. А ошибки будут найдены до того, как приложение попадет к клиенту.
Новичкам следует ознакомиться с основными принципами функционального тестирования, изучить инструменты, пробовать создавать тест-кейсы и проводить практическое тестирование. Для этого можно использовать любой сайт или приложение. Рекомендуем ознакомиться с уже готовыми чек-листами в интернете, использовать их для практики и получения опыта в проведении функциональных тестов.
Наращивайте свои навыки, изучайте и пробуйте новые подходы и технологии. Применяйте их на практике, чтобы получить новый опыт и расширить свои знания в тестирования.
11К открытий17К показов