Ответ
Нефункциональное тестирование оценивает как система работает, а не что она делает. Основные направления:
1. Тестирование производительности (Performance Testing)
- Нагрузочное тестирование (Load Testing): Проверка поведения под ожидаемой нагрузкой.
- Цель: Определить пропускную способность и время отклика.
- Инструменты: k6, Apache JMeter, Gatling.
- Стресс-тестирование (Stress Testing): Проверка за пределами нормальной нагрузки до точки отказа.
- Цель: Найти "слабое звено" и проверить механизмы восстановления.
- Тестирование стабильности/надежности (Soak Testing): Длительная работа под средней нагрузкой.
- Цель: Обнаружение утечек памяти или деградации производительности.
Пример конфигурации сценария в k6:
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '2m', target: 100 }, // Плавный рост до 100 пользователей
{ duration: '5m', target: 100 }, // Стабильная нагрузка
{ duration: '1m', target: 0 }, // Плавное снижение
],
};
export default function () {
const res = http.get('https://api.example.com/data');
check(res, { 'status was 200': (r) => r.status == 200 });
sleep(1);
}
2. Тестирование безопасности (Security Testing)
- Статический анализ кода (SAST).
- Динамический анализ (DAST) и проверка уязвимостей (OWASP Top 10).
- Тесты на инъекции (SQLi, XSS), аутентификацию и авторизацию.
3. Тестирование совместимости (Compatibility Testing)
- Кроссбраузерное/кроссплатформенное тестирование.
- Тестирование на разных мобильных устройствах и ОС.
4. Тестирование удобства использования (Usability Testing)
- Оценка эргономики и интуитивности интерфейса.
- Тестирование доступности (Accessibility / a11y) на соответствие стандартам WCAG.
5. Тестирование надежности (Reliability Testing)
- Оценка вероятности отказа системы за определенный период.
- Проверка восстановления после сбоев (failover).