Что такое нефункциональное тестирование?
В запуск функциональных тестов в Azure Pipelinesвы добавили тесты пользовательского интерфейса Selenium в конвейер. Тесты пользовательского интерфейса — это форма функционального тестирования. В этой части вы изучите типы нефункциональных тестов, которые можно запустить в конвейере.
Команда сначала определяет нефункциональные тесты. Они говорят о некоторых типах этих тестов. Затем они решают добавить нефункциональный тест в свою цепочку.
Как нефункциональные тесты сравниваются с функциональными тестами?
В выполнение функциональных тестов в Azure Pipelinesмы определили функциональные тесты и нефункциональные тесты.
Вкратце, функциональные тесты проверяют, что каждая функция программного обеспечения выполняет то, что она должна. Другими словами, функциональные тесты проверяют функциональность приложения.
нефункциональные тесты проверяют нефункциональные аспекты приложения, такие как производительность и надежность. Кроме того, можно запускать нефункциональные тесты в системах, которые не являются приложениями, такими как компоненты инфраструктуры. Одним из примеров нефункционального теста является определение количества пользователей, которые могут одновременно войти в приложение, не вызывая проблемы, например более медленное время отклика.
На веб-сайте Space Game функциональный тест может убедиться, что таблица лидеров отображается правильно и показывает корректные записи, когда пользователь выбирает фильтр. Недиагностический тест может подтвердить, что фильтрация таблицы лидеров завершается менее чем за одну секунду, даже если большое количество пользователей заходит на веб-сайт одновременно.
Нефункциональное тестирование всегда проверяет то, что измеримо. Цель заключается в улучшении продукта. Это можно сделать, например, улучшая эффективность использования ресурсов приложением или повышая время отклика, когда многие клиенты используют его одновременно. Ниже приведены некоторые вопросы, на которые могут отвечать нефункциональные тесты:
- Как приложение выполняется в обычных условиях?
- Как приложение выполняется при одновременном входе многих пользователей?
- Насколько безопасно приложение?
Какие виды нефункциональных тестов можно выполнять?
Существует множество нефункциональных тестов. Многие из них соответствуют широким категориям тестирования производительности и тестирования безопасности.
Тестирование производительности
Целью тестирования производительности является улучшение скорости, масштабируемости и стабильности приложения. Тестирование скорости определяет, как быстро приложение реагирует. Тестирование масштабируемости определяет максимальную нагрузку пользователей, которые может обрабатывать приложение. Тестирование стабильности определяет, остается ли приложение стабильным при разных нагрузках. Два распространенных типа тестов производительности — нагрузочные тесты и стресс-тесты.
Нагрузочное тестирование
нагрузочные тесты определяют производительность приложения при реальных нагрузках. Например, нагрузочные тесты могут определить, насколько хорошо приложение выполняется в верхнем пределе соглашения об уровне обслуживания (SLA). В основном нагрузочное тестирование определяет поведение приложения, когда несколько пользователей нуждаются в нем одновременно.
Пользователи не обязательно являются людьми. Например, нагрузочный тест для программного обеспечения принтера может отправлять приложения большие объемы данных. Нагрузочный тест для почтового сервера может имитировать тысячи одновременных пользователей.
Нагрузочное тестирование также является хорошим способом выявить проблемы, которые существуют только в том случае, если приложение работает в своих ограничениях. Это происходит, когда могут возникнуть такие проблемы, как переполнение буфера и утечка памяти.
В этом модуле вы будете использовать Apache JMeter для выполнения нагрузочных тестов. Вы будете использовать набор имитированных пользователей, которые обращаются к веб-сайту одновременно.
Стресс-тестирование
стресс-тесты определяют стабильность и устойчивость приложения при тяжелых нагрузках. Нагрузки выходят за рамки того, что указано для приложения. Стресс-тесты определяют, будет ли приложение завершаться сбоем под этими нагрузками. Если приложение завершается сбоем, стресс-тест проверяет, что это происходит без серьезных последствий. Плавный сбой может, например, выдавать подходящее информативное сообщение об ошибке.
Сценарии, в которых приложения должны работать в ненормально тяжелых нагрузках, являются общими. Например, если видео идет вирусным, вы хотите знать, насколько хорошо серверы могут обрабатывать дополнительную нагрузку. Другой типичный сценарий — высокий трафик на веб-сайтах покупок во время праздников.
Тестирование безопасности
тестирование безопасности гарантирует, что приложения не подвержены уязвимостям, угрозам и рискам. Тщательное тестирование безопасности находит все возможные лазейки и недостатки системы, которые могут вызвать нарушение информации или потерю дохода.
Существует множество типов тестирования безопасности. Два из них — тестирование на проникновение и тестирование соответствия требованиям.
Тестирование на проникновение
тестирование на проникновениеили тестирование пера— это тип тестирования безопасности, который проверяет небезопасные области приложения. В частности, он проверяет уязвимости, которые злоумышленник может использовать. Авторизованная и имитированная кибератака обычно является частью тестирования на проникновение.
Тестирование соответствия требованиям
тестирование соответствия требованиям определяет, соответствует ли приложение некоторым набору требований, внутри компании или за ее пределами. Например, организации здравоохранения обычно должны соответствовать HIPAA (Закон о переносимости медицинского страхования и подотчетности 1996 года), который предоставляет конфиденциальность данных и положения о безопасности для защиты медицинской информации.
Организация также может иметь собственные требования к безопасности. Программное обеспечение должно быть проверено, чтобы убедиться, что оно соответствует этим требованиям. Например, в системах Linux маска пользователя по умолчанию должна быть 027 или более строгой. Тест безопасности должен доказать, что это требование выполнено.
План
В остальной части этого модуля вы настроите среду Azure DevOps, узнайте о планировании нагрузочных тестов с помощью Apache JMeter и выполнении нагрузочных тестов в Azure Pipelines.