Все статьи | Код

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

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

Рассказываем о двух типах тестирования, с которым чаще всего сталкиваются начинающие QA-инженеры.

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

Многие вещи проходят этап тестирования не только перед покупкой, но и на производстве.

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

В разработке программ всё работает похожим образом. Перед тем, как выпустить приложение на рынок, компания проводит тестирование — проверяет готовый продукт и выясняет, соответствует ли он требованиям. Если на этом этапе найдутся ошибки, команда сможет вовремя их исправить.

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

Документация и технические требования

Рассмотрим еще один пример. Предположим, вам нужно поменять обычный чайник на электрический. Еще до покупки вы определились, что новый чайник должен:

  • Работать от электричества
  • Вмещать полтора литра воды
  • Быстро греть воду до 99-100 градусов
  • Автоматически отключаться после кипения

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

  • Работа от электросети
  • Объем более 1,5 литра
  • Нагрев воды до 99-100 градусов
  • Автоматическое отключение

Именно такой чайник вы и искали — все технические требования подходят.

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

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

Читайте также: Как пройти собеседование на тестировщика: все этапы и вопросы

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

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

Рассмотрим функциональное тестирование на знакомом примере. Мы распаковываем чайник, вставляем его в розетку, наливаем воду и нажимаем кнопку. Если он включился, подогрел воду до 100 градусов и выключился —  функциональное тестирование пройдено. Чайник выполняет все основные функции из документации.

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

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

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

Продолжим пример с чайником. Какие еще требования надо проверить?

  • Безопасность. Важно, чтобы пользователь не пострадал. Поэтому у чайника не должно быть оголенных проводов или щелей в корпусе
  • Скорость. Согласитесь, пользователи останутся недовольны, если чайник будет нагревать воду дольше десяти минут
  • Удобство. Нужно проверить, насколько удобным получился продукт. Хватает ли его объема? Комфортно ли его держать одной рукой?

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

Как тестируют программы и приложения

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

Читайте также: Гид по профессии тестировщик: чем занимается специалист в сфере QA, сколько зарабатывает, что надо знать и где учиться

Начнём с функционального тестирования. С точки зрения пользователя важно, чтобы форма выполняла основные функции:

  • Позволяла ввести логин (номер телефона, email-адрес или никнейм)
  • Позволяла ввести пароль
  • Успешно обрабатывала информацию и позволяла пользователю войти

Если эти функции работают, пользователь сможет зайти в свой аккаунт и воспользоваться всеми остальными возможностями банка.

Перейдем к проверке нефункциональных требований.

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

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

Третий важный критерий — удобно ли пользователю вводить свои данные. Нужно проверить, вдруг:

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

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

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

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

Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
30 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
30 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
30 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
30 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
30 июня 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
30 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
30 июня 5 месяцев