Многообразие тестов

Чёрный ящик

Это семейство тестов рассматривает тестируемую систему как изолированный объект малоизвестной природы

  • Базовые сценарные/UI тесты. Соответсвуют фичам, в основном тестируют навигацию и наличие html элементов

  • Продвинутые UI-тесты. Автоматизированы и эффективны. Тестируют все роли пользователей, сбрасывают данные, повторяющиеся функции абстрагированы. Средний приоритет.

  • перетаскивание (drag-and-drop)

  • тестирование различных ролей на привилегии

  • многопоточный аплоад файлов

  • тесты с вебсокетами на синхронизацию данных между браузерами

  • Поведенческие тесты. Пишутся для бизнеса что-бы "наглядно" показывать что тестируется, но требует парсер на более низкий уровень

  • Скриншоты и CSS регрессия. Тестируют слетающий UI, шрифты, разные браузеры и телефоны

  • Snapshot тесты

Серый ящик

Это семейство тестов рассматривает систему на уровне сервисов и процессов

  • ​Диагностика окружения на доступность ресурсов

  • На доступность сервисов

  • Внешних API (предшественник контрактных тестов). Высокий приоритет.

  • на доступность

  • предсказуемый формат (банальный get и проверка json), проверка что формат не изменился

  • полное взаимодействие с записью (обычно партнёрская компания с разработчиком ставит тестовую машинку)

  • Своего внутреннего API. Запускаются без браузера, через CURL-запросы, эмулирующие вызов из JavaScript или мобильных приложений. Высокий приоритет.

  • совместимость классов и интерфейсов

  • простые get - запросы, проверяющие на наличие ошибок/stacktrace

  • POST/PUT-запросы, меняющие данные

  • в запущенных случаях (мобильные приложения), когда с мобильника e2e тесты не запустить, а функционал надо тестировать, то получаются последовательные сценарные (а не одинарные get-post) запросы, сохраняющие состояние сущностей и пользователя (в БД и сессии)

  • На конкурентность. Проверяется наличие дедлоков на бэкенде

  • Целостность данных

  • целостность данных между табличками БД и/или файлами

  • сравнение entity классов с БД

  • миграции БД

  • Конфигурационная матрица (поддержка разных платформ)

  • На производительность (performance). Тестовый прогон сервиса/кода что-бы понять эффективность работы

  • время отклика / скорость

  • бэкенд - память, CPU, IO-пропорции в RAM, HDD, сети, число запросов к БД

  • фронтенд - число сетевых запросов

  • На утечки памяти и количество обработчиков событий (особенно для UI-компонентов)

  • На нагрузку (load/stress-тесты). Что будет, если трафика/посетителей очень много. Что самое слабое звено

  • На отказоустойчивость (что будет, если упадёт БД, Rabbit или какой-то сервис). Есть ли резервный вариант, обработка ошибок, мониторинг

  • На инъекции. Нечёткие (fuzzy) тесты

  • контроль инъекций - SQL, XSS

  • формат данных - вариации аргументов: разные типы, пути к файлам

  • права на файлы/директории

Белый ящик

  • Юнит-тесты

  • Бэкенд - средний приоритет. Особые случаи: соотношение random(), работа с ресурсами (генерация картинок)

  • Фронтенд - низкий приоритет. Jest, Karma + Jasmine, Mocha.

  • Приватные методы

  • Моки

  • Контракты

  • API

  • Библиотек

  • Виртуальная БД

  • Виртуальная файловая система

  • Мутационные тесты - отключение частей приложения для выявления зависимостей и процента сбоев

  • Тестирование многопоточных процессов