Многообразие тестов
Чёрный ящик
Это семейство тестов рассматривает тестируемую систему как изолированный объект малоизвестной природы
-
Базовые сценарные/UI тесты. Соответсвуют фичам, в основном тестируют навигацию и наличие html элементов
-
Продвинутые UI-тесты. Автоматизированы и эффективны. Тестируют все роли пользователей, сбрасывают данные, повторяющиеся функции абстрагированы. Средний приоритет.
-
перетаскивание (drag-and-drop)
-
тестирование различных ролей на привилегии
-
многопоточный аплоад файлов
-
тесты с вебсокетами на синхронизацию данных между браузерами
-
Поведенческие тесты. Пишутся для бизнеса что-бы "наглядно" показывать что тестируется, но требует парсер на более низкий уровень
-
Скриншоты и CSS регрессия. Тестируют слетающий UI, шрифты, разные браузеры и телефоны
Серый ящик
Это семейство тестов рассматривает систему на уровне сервисов и процессов
-
Диагностика окружения на доступность ресурсов
-
На доступность сервисов
-
Внешних 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
-
Библиотек
-
Виртуальная БД
-
Виртуальная файловая система
-
Мутационные тесты - отключение частей приложения для выявления зависимостей и процента сбоев
-
Тестирование многопоточных процессов