Типы автоматических тестов я разделяю таким образом..
Чёрный ящик
Это семейство тестов рассматривает тестируемую систему как изолированный объект малоизвестной природы
- Базовые сценарные/UI тесты. Соответсвуют фичам, в основном тестируют навигацию и наличие html элементов
- Продвинутые UI тесты. Автоматизированы и эффективны. Тестируют все роли пользователей, ресетят данные, повторяющиеся функции абстрагированы. Medium priority
- drag-and-drop
- тестирование различных ролей на привилегии
- многопоточный аплоад файлов
- тесты с вебсокетами на cross-browser data synchronization
- Поведенческие тесты. Пишутся для бизнеса что-бы «наглядно» показывать что тестируется, но требует парсер на более низкий уровень
- Скриншоты и CSS регрессия. Тестируют слетающий UI, шрифты, разные браузеры и телефоны
- Snapshot тесты
Серый ящик
Это семейство тестов рассматривает систему на уровне сервисов и процессов
- Диагностика окружения на доступность ресурсов
- На Availability сервисов
- Внешних API (предшественник контрактных тестов). High priority
- на доступность
- предсказуемый формат (банальный get и проверка json), проверка что формат не изменился
- полное взаимодействие с записью (обычно партнёрская компания с разработчиком ставит тестовую машинку)
- Своего внутреннего API. Запускающиеся без браузера, через CURL запросы, эмулирующие вызов из javascript или мобильных приложений. High priority
- class/interface compatibility
- простые get — запросы, проверяющие на наличие ошибок/stacktrace
- post/put запросы, меняющие данные
- в запущенных случаях (мобильные приложения), когда с мобильника e2e тесты не запустить, а функционал надо тестировать, то получаются последовательные сценарные (а не одинарные get-post) запросы, сохраняющие состояние сущностей и пользователя (в БД и сессии)
- На Concurrency. Тестируется наличие дедлоков на бэкэнде
- Целостность данных
- целостность данных между табличками БД и/или файлами
- сравнение entity классов с БД
- DB migrations
- Конфигурационная матрица (поддержка разных платформ)
- На производительность (performance). Тестовый прогон сервиса/кода что-бы понять эффективность работы
- response time / speed
- backend — память, CPU, IO пропорции в RAM, HDD, сети, число запросов в БД
- frontend — число сетевых запросов
- На утечку памяти (memory leaks) и event-listener count (особенно для UI компонентов)
- На нагрузку (load/stress tests). Что будет если будет очень много траффика/посетителей. Что самое слабое звено
- На failover (что будет если упадёт БД или rabbit, или какой-то сервис). Есть ли резервный вариант, error handling, мониторинг
- На инъекции. Fuzzy tests
- injection control — sql, xss injections
- data format — argument variator — misc types, filepaths
- file/directory permissions
Белый ящик
- Unit тесты
- Backend — Medium priority. Особые случаи — random() ratio, работа с ресурсами (генерация картинок)
- Frontend — Low priority. Jest, Karma + Jasmine, Mocha.
- Приватные методы
- Моки
- Контракты
- API
- Библиотек
- Виртуальная БД
- Виртуальная файловая система
- Мутационные тесты — disabling parts of application to detect dependencies and failure %
- Тестирование многопоточных процессов