Нефункциональное тестирование выступает важным этапом проверки программного обеспечения перед началом полноценной эксплуатации. Оно органично дополняет функциональное и предназначено для оценки того, насколько эффективным является программный продукт. Рассмотрим более детально, что представляет собой нефункциональное тестирование, с какой целью и как именно проводится, а также какие инструменты при этом используются.
Нефункциональное тестирование – что это
Нефункциональное vs функциональное
Как провести нефункциональное тестирование
Обзор инструментов и сервисов
Какие проблемы чаще всего обнаруживаются
Нефункциональное тестирование – что это
Нефункциональным называют тестирование программного обеспечения, которое отвечает на вопрос, как именно работает программа. Проверка ведется сразу по нескольким направлениям, главными из которых выступают: производительность, способность воспринимать нагрузки, масштабируемость, безопасность и другие подобные параметры. Их перечень определяется с учетом функционального назначения и специфики программного продукта.
Цели
Главной целью нефункционального тестирования становится определение того, насколько программа удовлетворяет требованиям заказчика и/или будущих пользователей. Причем не с точки зрения перечня выполняемых функций, а в плане того, насколько эффективно они исполняются. Другими словами, успешное прохождение проверки в виде нефункциональных тестов демонстрирует, что программное обеспечение удобно, комфортно и безопасно для практического применения.
Если сформулировать проще, нефункциональное тестирование призвано решить несколько задач:
- Контроль качества. Проверка позволяет определить слабые места с последующим их устранением.
- Управление рисками. Один из результатов тестирования – обнаружение багов, исправление которых минимизирует возможные проблемы после выхода программы на рынок.
- Оптимизация. Улучшение самых разных параметров работы ПО – очевидное следствие грамотно проведенной проверки.
- Сбор дополнительных сведений. Углубленное изучение результатов нефункционального тестирования позволяет получить больше информации о программном продукте в целом и его отдельных аспектах в частности.
Типы
Как было отмечено выше, список проверяемых в ходе нефункционального тестирования параметров, определяется с учетом специфики и назначения ПО. В общем случае речь идет о следующих о шести ключевых направлениях проверки:
- Доступность. Оптимальный вариант – режим работы приложения в формате 24 на 7.
- Удобство UX/UI. В данном случае проверяется соответствие дизайна макетам, комфортность работы, понятность интерфейса и другие подобные показатели.
- Производительность. Тестирование ведется в отношении скорости обмена данными, стабильности работы ПО, надежности функционирования программы.
- Локализация. Проверка актуальная для тех программных продуктов, которые планируется использовать в нескольких странах с разными языками. Что предусматривает необходимость грамотного перевода и учета требований конкретного государства (законодательных, культурных и т.д.)
- Безопасность. Тестируется наличие уязвимостей ПО в случае хакерской атаки или других действий потенциальных злоумышленников.
- Совместимость. Данный тип проверки проводится в отношении программ, предназначенных для использования на разных устройствах, платформах и операционных системах.
В качестве дополнительных направлений нефункционального тестирования могут рассматриваться еще несколько параметров. Например, отдельно проводится углубленная проверка на надежность. Которая анализирует способность программы восстанавливаться после сбоев или работать в случае отказа одного/нескольких компонентов. Еще одним достаточно частым мероприятием выступает тест на соответствие различным видам стандартов/нормативов/правил. В качестве последних воспринимаются корпоративные правила, международные стандарты, государственные и межгосударственные требования, законодательные нормы разных стран и т.д.
Исходя из приведенной выше информации, можно выделить несколько типов функционального тестирования. Их проведение позволит получить исчерпывающую информацию по всем перечисленным параметрам. Ниже представлены основные из них, расположенные в порядке убывания частоты практического применения (в скобках перечисляются самые распространенные виды тестов)
- Тестирование безопасности (время отклика, скорость обмена данными, длительность обработки информации и т.д.)
- Нагрузочное тестирование (пропускная способность, время отклика при большом количестве запросов, одновременное посещение множеством пользователей).
- Стресс-тестирование (работа на устройствах с малым объемом памяти, большое количество одинаковых запросов, быстрый (без интервала) ввод логина и пароля, другие подобные нештатные действия пользователей).
- Объемное тестирование (работа ПО при подаче больших объемов информации, определение предельных размеров данных для обработки, оценка эффективности выдачи отчетов при функционировании «на пределе»).
- Юзабилити-тестирование (оценка удобства работы с программным обеспечением).
- Тестирование интерфейса (проверка, аналогичная указанной в предыдущем пункте, но с акцентом на пользовательский интерфейс).
- Тестирование совместимости (определение минимальной и максимальной конфигурации при работе на разных устройствах, операционных системах и браузерах, установление конфигурации для оптимального покрытия).
- Тестирование восстановления (тест на отключение питания, проверка сохранения данных при сбоях в работе серверов, роутера и другого оборудования).
- Тестирование установки/удаления ПО (оценка скорости, комплектности и корректности установки программы, аналогичные проверка при удалении продукта с ПК или мобильного устройства).
- Тестирование сопроводительных документов (изучение технического задания на разработку ПО, анализ руководства пользователя и другой имеющейся документации).
Приведенный перечень разных типов нефункционального тестирования далеко не полон. Но даже размещенной информации вполне достаточно, чтобы понять, насколько разносторонней может быть проводимая проверка. Тем более – если ей занимается квалифицированный и опытный специалиста или даже команда тестировщиков.
Нефункциональное vs функциональное
Разница между функциональным и нефункциональным тестированием формулируется достаточно просто. Если говорить кратко, первое отвечает на вопрос, что делает программный продукт, а второе – как именно он это делает. Другими словами, функциональное тестирование позволяет определить перечень возможностей программы. Нефункциональное – удобство, комфортность и эффективность их реализации.
Необходимо обязательно отметить, что функциональное тестирование является базовым и проводится первым. Нефункциональное – вспомогательным, но от того не менее важным. К нему можно приступать только после того, как будут исправлены баги, обнаруженные по результатам проведения функциональных тестов. В противном случае рассчитывать на получение точных и объективных результатов не имеет особого смысла.
Как провести нефункциональное тестирование
Схема проведения нефункциональных тестов разрабатывается индивидуально с учетом специфики проверяемого программного продукта, его предназначения, общего объема исходного кода и других подобных параметров. В общем случае реализация мероприятия предусматривает последовательное выполнение нескольких этапов:
- Подготовка. Включает изучение требований заказчика/ТК и определение на их основании ключевых критериев проверки. Желательно установить KPI для всех базовых параметров (производительность, безопасность, удобство использования и т.д.)
- Разработка плана тестирования. Чем он подробнее, тем лучше. Обычно предполагается составление чек-листов и тест-кейса. При необходимости оформляется другая документация. В обязательном порядке выбираются оптимальные инструменты и методы проверки.
- Непосредственное тестирование. Проводится в четком соответствии с разработанным планом.
- Составление отчета. Начинается с анализа полученных результатов и завершается оформлением итогового документа.
- При наличии багов – составляется баг-репорт, который передается команде программистов или QA-инженеру. При несоответствии заданным параметрам – оформляется аналогичный документ с указанием «слабых» мест. После устранения ошибок и проблемных участков ПО проводится еще одно – повторное – нефункциональное тестирование.
- Описанный в пунктах 4 и 5 цикл повторяется нужное число раз. До полного исправления ошибок и доведения всех проверяемых параметров до заданных значений. После чего составляется окончательный отчет.
Итоговый документ направляется QA-инженеру или напрямую заказчику. Его форма, содержание и другие требования к документу определяются заранее. Обычно – на этапе подготовки к тестированию.
Обзор инструментов и сервисов
Как было отмечено ранее, существует большое количество различных типов нефункционального тестирования. Для проведения каждого используются разные вспомогательные инструменты и сервисы, общее число которых очень велико. Именно поэтому перечислять все не имеет смысла. Достаточно привести по три наиболее популярных для трех направлений проверки:
- Производительность:
- LoadRunner – комплексный инструмент для оценки производительности;
- Apache JMeter – сервис, предназначенный для проведения разнообразных нагрузочных тестов;
- Gatling – удобная программа для симуляции работы ПО под нагрузкой.
- Безопасность:
- Burp Suite – удобная и многофункциональная платформа для сканирования проверяемого программного обеспечения;
- SonarQube – программа для проверки ПО, разработанных на любом из 25 встроенных языков программирования;
- OWASP ZAR – сервис обнаружения уязвимостей.
- Удобство интерфейса (usability):
- Hotjar – программа для оценки поведения и работы пользователей при посещении сайта;
- UsabilityHub – приложение для сбора данных об эффективности работы интерфейса;
- Crazy Egg – сервис визуализации взаимодействия пользователя и интерфейса.
Какие проблемы чаще всего обнаруживаются
В ходе нефункционального тестирования обнаруживаются самые разные проблемы. Фактически, любой из проверяемых параметров может не отвечать заданным требованиям. Что приводит к запуску цикла – обнаружение проблемы/исправление/повторное тестирование – который повторяется до тех пор, пока ПО не станет соответствовать ТЗ в полном объеме.
Поэтому перечислять возможные проблемы не имеет особого смысла – слишком их много. В качестве примеров достаточно привести такие: сбой при высокой нагрузке (в виде принудительного закрытия программы или иных проблем), «торможение» на определенных устройствах, низкая скорость обмена данными для некоторых браузеров и т.д.
Советы и лайфхаки
Нефункциональное тестирование требует серьезного подхода и привлечения грамотных тестировщиков. Кроме того, крайне желательно изучать опыт лучших, например, посредством изучения и следования нескольким несложным рекомендациям:
- Активное использование средств автоматизации.
- Обязательная тщательная проверка документации – как исходной, так и итоговой.
- Определение KPI (то есть точных числовых показателей) для всех проверяемых параметров, в отношении которых это возможно.
- Особое внимание разработке тестовой документации.
FAQ
Что понимается под нефункциональным тестированием?
Это проверка программного обеспечения с целью получения ответа на вопрос, насколько эффективно оно работает.
Для чего оно проводится?
Конечной целью нефункционального тестирования становится совершенствование программного продукта в плане более комфортной, эффективной и удобной работы пользователя.
Какие параметры проверяются чаще всего?
Их достаточно много. В числе ключевых: производительность, безопасность, удобство, локализация, совместимость и т.д.
Вывод
- Нефункциональное тестирование предусматривает проверку ПО в части эффективной, производительной, комфортной и безопасной работы.
- В отличие от функционального (отвечающего на вопрос, что делает ПО), нефункциональное дает ответ, как именно оно это делает.
- Можно выделит несколько базовых нефункциональных тестов: на производительность, на безопасность, на удобство использования, на стрессоустойчивость и множество других.
- Грамотное проведение проверки позволяет улучшить программный продукт и сделать его комфортнее, быстрее, безопаснее и удобнее в эксплуатации.