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

Завершено

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

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

Как нефункциональные тесты сравниваются с функциональными тестами?

В azure Pipelines мы определили функциональные тесты и нефункциональные тесты.

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

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

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

Нефункциональное тестирование всегда проверяет то, что измеримо. Цель заключается в улучшении продукта. Это можно сделать, например, улучшая эффективность использования ресурсов приложением или повышая время отклика, когда многие клиенты используют его одновременно. Ниже приведены некоторые вопросы, на которые могут отвечать нефункциональные тесты:

  • Как приложение выполняется в обычных условиях?
  • Как приложение выполняется при одновременном входе многих пользователей?
  • Насколько безопасно приложение?

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

Существует множество нефункциональных тестов. Многие из них соответствуют широким категориям тестирования производительности и тестирования безопасности.

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

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

Нагрузочное тестирование

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

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

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

В этом модуле вы будете использовать Apache JMeter для выполнения нагрузочных тестов. Вы будете использовать набор имитированных пользователей, которые обращаются к веб-сайту одновременно.

Стресс-тестирование

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

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

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

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

Существует множество типов тестирования безопасности. Два из них — тестирование на проникновение и тестирование соответствия требованиям.

тест на проникновение;

Тестирование на проникновение или тестирование пера — это тип тестирования безопасности, который проверяет небезопасные области приложения. В частности, он проверяет уязвимости, которые злоумышленник может использовать. Авторизованная и имитированная кибератака обычно является частью тестирования на проникновение.

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

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

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

План

В остальной части этого модуля вы настроите среду Azure DevOps, узнайте о планировании нагрузочных тестов с помощью Apache JMeter и выполнении нагрузочных тестов в Azure Pipelines.

Проверьте свои знания

1.

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

2.

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

3.

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