Перейти к основному содержимому

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

Чёрный ящик

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

  • Базовые сценарные/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 %

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