Ответ
Нефункциональное тестирование (Non-functional testing) — это тип тестирования, направленный на проверку как система работает, а не что она делает. Оно оценивает характеристики, не связанные с конкретной бизнес-логикой, но критически важные для пользовательского опыта и эксплуатации.
Ключевые виды нефункционального тестирования:
- Тестирование производительности (Performance):
- Нагрузочное (Load): Работа под ожидаемой нагрузкой.
- Стрессовое (Stress): Работа за пределами нормальной нагрузки.
- Объемное (Volume/Soak): Работа с большими объемами данных или в течение длительного времени.
- Тестирование безопасности (Security): Выявление уязвимостей, проверка аутентификации и авторизации.
- Тестирование удобства использования (Usability): Оценка понятности, обучаемости и удобства интерфейса.
- Тестирование совместимости (Compatibility): Работа в разных браузерах, ОС, устройствах.
- Тестирование надежности (Reliability): Способность работать без сбоев в заданных условиях.
Почему это важно? Функционально корректное приложение может быть непригодным из-за медленной скорости, утечек памяти или плохой безопасности.
Пример (концепция нагрузочного теста):
// Псевдоконфигурация для JMeter
Thread Group:
Number of Threads (users): 100
Ramp-Up Period: 30 seconds // Наращивание нагрузки до 100 пользователей за 30 сек
Loop Count: Forever
// Цель: проверить, выдерживает ли API 100 одновременных запросов. Ответ 18+ 🔞
А, слушай, вот эта вся хуйня про нефункциональное тестирование! Это ж самое интересное, блядь, в нашей работе! Ну представь: приложение вроде работает, кнопки жмутся, данные сохраняются. Но стоит на него народу побольше зайти — и оно, сука, ложится как шальной бык, блядь! Или начинает тормозить так, что волосы на жопе шевелятся от нетерпения! Вот именно от этого и спасает нефункциональное тестирование, ёпта!
Оно не про то, что система делает — это и дурак проверит. Оно про то, как она это делает, подлая тварь. Какая от неё польза, если она функционально идеальна, но работает со скоростью пьяного ленивца в сиропе, блядь?
Вот смотри, какие у нас тут главные «как» бывают, на которые надо глаз положить, и не один:
-
Производительность (Performance): Это святое, блядь. Тут три кита, на которых всё держится.
- Нагрузочное (Load): Вот ты сидишь, спокойно такой, один. А мы тебе подкинем сотню-другую таких же, как ты, виртуальных пользователей. И смотрим, не обоснётся ли наша система под этой толпой. Ожидаемая нагрузка, мать её.
- Стрессовое (Stress): А это когда мы уже не играем в поддавки. Накидываем народу в три раза больше, чем она может выдержать, и смотрим, как она красиво и с какими словами на прощание ляжет. И главное — как потом встанет, когда нагрузку уберём. Выживет — герой. Не встанет — пиши пропало.
- Объемное (Volume/Soak): А это, блядь, для выносливости. Запускаем тест на сутки, наливаем в базу данных столько, что она пухнет, как удав, съевший слона. И смотрим, не начнёт ли она через 10 часов тихонько срать памятью или дисковым пространством. Медленная смерть, ебать.
-
Безопасность (Security): Ну тут всё ясно, как божий день. Не проверишь — придёт какой-нибудь пидарас шерстяной с интернета и вынесет тебе всю базу клиентов, пока ты чай с печенькой жуёшь. Проверяем все эти авторизации, инъекции и прочие радости жизни.
-
Удобство (Usability): А вот это, блядь, вообще отдельная песня. Можно сделать функционал гениальный, но такой неудобный, что пользователь через три клика посылает всё нахуй и уходит к конкурентам. Интерфейс должен быть не для гения, а для распиздяя, который пальцем тыкает куда попало. Если он не запутается — красава.
-
Совместимость (Compatibility): О, ёперный театр! Это когда твоё творение должно работать и в древнем Internet Explorer, который уже сам себя не помнит, и на телефоне с экраном размером с почтовую марку. А если нет — опять же, в пизду полетят все труды.
-
Надёжность (Reliability): Ну это чтобы система не падала каждые пятнадцать минут, как заведённая. Должна работать стабильно, сука, как швейцарские часы, а не как отечественный автомобиль в дождь.
А зачем это всё, спросишь? Да затем, чувак! Можно хоть трижды функционально протестировать, но если сайт грузится полминуты, из него торчат дыры в безопасность, а в Хроме всё плывёт — пользователь скажет тебе одно короткое, но ёмкое слово и закроет вкладку. Нахуй никому не сдался такой «рабочий» продукт.
Ну и, как без примера, блядь. Вот смотри, как примерно выглядит настройка, чтобы навалить на систему народу:
// Псевдоконфигурация для JMeter
Thread Group:
Number of Threads (users): 100 // Сто виртуальных дебилов, которые будут жать кнопки
Ramp-Up Period: 30 seconds // Не всех сразу, а подпускаем их толпой за полминуты, как на распродажу
Loop Count: Forever // Пусть долбят, пока не надоест нам
// Цель: проверить, выдерживает ли API 100 одновременных запросов.
Вот запускаем эту адскую машину и смотрим: либо API героически отбивается, либо, прости господи, начинает отвечать ошибками, а время отклика вырастает до неприличных величин. Вот тогда и начинается самое интересное — искать, где же эта узкая горловина, эта хитрая жопа в коде, которая всё тормозит.