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

«Какие аспекты системы проверяются в рамках нефункционального тестирования?» — вопрос из категории Тестирование производительности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

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).