logo
Ещё

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

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

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

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

Цели

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

Если сформулировать проще, нефункциональное тестирование призвано решить несколько задач:

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

Типы

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

  1. Доступность. Оптимальный вариант – режим работы приложения в формате 24 на 7.
  2. Удобство UX/UI. В данном случае проверяется соответствие дизайна макетам, комфортность работы, понятность интерфейса и другие подобные показатели.
  3. Производительность. Тестирование ведется в отношении скорости обмена данными, стабильности работы ПО, надежности функционирования программы.
  4. Локализация. Проверка актуальная для тех программных продуктов, которые планируется использовать в нескольких странах с разными языками. Что предусматривает необходимость грамотного перевода и учета требований конкретного государства (законодательных, культурных и т.д.)
  5. Безопасность. Тестируется наличие уязвимостей ПО в случае хакерской атаки или других действий потенциальных злоумышленников.
  6. Совместимость. Данный тип проверки проводится в отношении программ, предназначенных для использования на разных устройствах, платформах и операционных системах.

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

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

  1. Тестирование безопасности (время отклика, скорость обмена данными, длительность обработки информации и т.д.)
  2. Нагрузочное тестирование (пропускная способность, время отклика при большом количестве запросов, одновременное посещение множеством пользователей).
  3. Стресс-тестирование (работа на устройствах с малым объемом памяти, большое количество одинаковых запросов, быстрый (без интервала) ввод логина и пароля, другие подобные нештатные действия пользователей).
  4. Объемное тестирование (работа ПО при подаче больших объемов информации, определение предельных размеров данных для обработки, оценка эффективности выдачи отчетов при функционировании «на пределе»).
  5. Юзабилити-тестирование (оценка удобства работы с программным обеспечением).
  6. Тестирование интерфейса (проверка, аналогичная указанной в предыдущем пункте, но с акцентом на пользовательский интерфейс).
  7. Тестирование совместимости (определение минимальной и максимальной конфигурации при работе на разных устройствах, операционных системах и браузерах, установление конфигурации для оптимального покрытия).
  8. Тестирование восстановления (тест на отключение питания, проверка сохранения данных при сбоях в работе серверов, роутера и другого оборудования).
  9. Тестирование установки/удаления ПО (оценка скорости, комплектности и корректности установки программы, аналогичные проверка при удалении продукта с ПК или мобильного устройства).
  10. Тестирование сопроводительных документов (изучение технического задания на разработку ПО, анализ руководства пользователя и другой имеющейся документации).

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

Нефункциональное vs функциональное

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

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

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

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

  1. Подготовка. Включает изучение требований заказчика/ТК и определение на их основании ключевых критериев проверки. Желательно установить KPI для всех базовых параметров (производительность, безопасность, удобство использования и т.д.)
  2. Разработка плана тестирования. Чем он подробнее, тем лучше. Обычно предполагается составление чек-листов и тест-кейса. При необходимости оформляется другая документация. В обязательном порядке выбираются оптимальные инструменты и методы проверки.
  3. Непосредственное тестирование. Проводится в четком соответствии с разработанным планом.
  4. Составление отчета. Начинается с анализа полученных результатов и завершается оформлением итогового документа.
  5. При наличии багов – составляется баг-репорт, который передается команде программистов или QA-инженеру. При несоответствии заданным параметрам – оформляется аналогичный документ с указанием «слабых» мест. После устранения ошибок и проблемных участков ПО проводится еще одно – повторное – нефункциональное тестирование.
  6. Описанный в пунктах 4 и 5 цикл повторяется нужное число раз. До полного исправления ошибок и доведения всех проверяемых параметров до заданных значений. После чего составляется окончательный отчет.

Итоговый документ направляется QA-инженеру или напрямую заказчику. Его форма, содержание и другие требования к документу определяются заранее. Обычно – на этапе подготовки к тестированию.

Обзор инструментов и сервисов

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

  1. Производительность:
    1. LoadRunner – комплексный инструмент для оценки производительности;
    2. Apache JMeter – сервис, предназначенный для проведения разнообразных нагрузочных тестов;
    3. Gatling – удобная программа для симуляции работы ПО под нагрузкой.
  2. Безопасность:
    1. Burp Suite – удобная и многофункциональная платформа для сканирования проверяемого программного обеспечения;
    2. SonarQube – программа для проверки ПО, разработанных на любом из 25 встроенных языков программирования;
    3. OWASP ZAR – сервис обнаружения уязвимостей.
  3. Удобство интерфейса (usability):
    1. Hotjar – программа для оценки поведения и работы пользователей при посещении сайта;
    2. UsabilityHub – приложение для сбора данных об эффективности работы интерфейса;
    3. Crazy Egg – сервис визуализации взаимодействия пользователя и интерфейса.

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

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

Поэтому перечислять возможные проблемы не имеет особого смысла – слишком их много. В качестве примеров достаточно привести такие: сбой при высокой нагрузке (в виде принудительного закрытия программы или иных проблем), «торможение» на определенных устройствах, низкая скорость обмена данными для некоторых браузеров и т.д.

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

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

  1. Активное использование средств автоматизации.
  2. Обязательная тщательная проверка документации – как исходной, так и итоговой.
  3. Определение KPI (то есть точных числовых показателей) для всех проверяемых параметров, в отношении которых это возможно.
  4. Особое внимание разработке тестовой документации.

FAQ

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

Это проверка программного обеспечения с целью получения ответа на вопрос, насколько эффективно оно работает.

Для чего оно проводится?

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

Какие параметры проверяются чаще всего?

Их достаточно много. В числе ключевых: производительность, безопасность, удобство, локализация, совместимость и т.д.

Вывод

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