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

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

Функциональное тестирование проверяет, “что” делает система, а нефункциональное – “как” она работает.

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

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

Содержание

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

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

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

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

Какие же проверки относятся к нефункциональным? В ходе нефункционального тестирования можно проверить, например:

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

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

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

  • Безопасность
  • Производительность
  • Масштабируемость
  • Надежность
  • Совместимость
  • Восстановление
  • Юзабилити
  • Портативность
  • Эффективность

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

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

Тестирование производительности

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

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

А теперь давайте рассмотрим реальный пример, демонстрирующий важность тестирования производительности. Когда американская актриса Дженнифер Энистон дебютировала в Instagram в 2019 году, из-за большого количества пользователей, обращающихся к ее профилю, Instagram временно упал. Такие сценарии очень редки, но они все равно влияют на производительность приложения и, самое главное, на удовлетворенность конечных пользователей.

Тестирование безопасности

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

Одним из многочисленных примеров того, почему тестирование безопасности является важнейшим требованием, является кибератака на Yahoo в 2014 году. В результате атаки были похищены данные (такие как имена, даты рождения, пароли) 500 миллионов учетных записей пользователей. За последние годы учетные записи пользователей Yahoo были взломаны как минимум трижды, что также стало причиной снижения стоимости Yahoo во время ее покупки компанией Verizon Communications.

Тестирование удобства использования

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

Если пользователь не сможет легко ориентироваться в системе, он может потерять интерес к ней, а это, в свою очередь, скажется на удовлетворенности клиентов.

Тестирование совместимости

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

Тестирование масштабируемости

В ходе проверки масштабируемости системы проверяется, что при изменении объема данных, количества пользователей и т.д. система работает так, как ожидается.

Тестирование восстановления

Тестирование восстановления проверяет работоспособность системы в случае любого сбоя и ее способность восстановиться за нужное время без потери данных.

Инструменты автоматизации нефункционального тестирования

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

Ниже приведен список некоторых инструментов автоматизации, используемых тестировщиками по всему миру.

  • JMeter. Инструмент для тестирования производительности, написанный на языке Java. Это программное обеспечение с открытым исходным кодом. JMeter поддерживает интеграцию с Selenium и может использоваться в качестве инструмента для модульного тестирования.
  • LoadRunner. Как и JMeter, LoadRunner также является инструментом тестирования производительности и может использоваться в качестве инструмента модульного и интеграционного тестирования. Он является лидером рынка, когда речь идет о тестировании производительности. LoadRunner также поддерживает скрипты JMeter и Selenium. Он не является бесплатным.
  • NeoLoad. Инструмент для тестирования производительности, написанный на Java. У него есть разные тарифные планы, один из них – бесплатный, но он поставляется с определенными ограничениями. NeoLoad также поддерживает скрипты Selenium, написанные на Java.
  • WebLOAD Professional. Еще один инструмент для тестирования производительности, имеющий различные тарифные планы. Как и NeoLoad, WebLOAD Professional поставляется бесплатно с некоторыми ограничениями.
  • LoadTracer. Инструмент тестирования производительности, разработанный на языке C компанией Trace Technologies Pvt. Ltd. В настоящее время он находится в свободном доступе.

Заключение

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

Перевод статьи «Non Functional Testing».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *