Презентация

Тестирование: что именно и зачем проверяют в проекте

Понятное введение в пирамиду тестирования, различия между unit, integration, system и acceptance тестами и базовые термины тестовой практики.

О чем этот материал

Пирамида тестирования, моки, стабы, тест-кейсы и практический смысл тестов.

Это адаптированная версия учебной презентации: слайды разобраны в формате обычной статьи, чтобы материал было легче читать с телефона и возвращаться к нужным блокам позже.

Что внутри

Ниже краткий план материала. По нему удобно понять, в каком порядке разбирать тему.

  1. Зачем нужны тесты
  2. Пирамида тестирования
  3. Юниты
  4. Интеграционные
  5. Системные
  6. End-To-End
  7. Основные понятия в тестировании
  8. Немного практики

Зачем?

  • Обеспечение качества (надежности, стабильности)
  • Предотвращение регрессии (чтоб ничего не поломалось)
  • Документирование кода
  • Заставляет лучше архитектурить
  • Test Driven Development

Пирамида тестирования

Приемочные, E2E…

Системные

Интеграционные

Юнит тесты

Unit tests

Юнит тесты

методы

текущего модуля (или почти)

  • Тестируем отдельные функции или
  • Всегда автоматизированые
  • Не задействуют ничего кроме

Integration tests

Интеграционные тесты

инфраструктура

  • Тестируем связку модулей
  • Обычно автоматизированые
  • Задействуется внешние системы и

System tests

Системные тесты

полностью

  • Тестируем систему (продукт)
  • Инфраструктура ближе к боевой
  • Подход “черный ящик”

Acceptance tests

Приемочные тесты

внешними инструментами

  • Пользовательские сценарии
  • Как правило тестирование выполняется

Еще немного терминов

Моки (Mocks) — это объекты, которые имитируют поведение реальных объектов в контролируемом виде.

Стабы (Stubs) — это упрощенные версии объектов или функций, которые возвращают заранее определенные ответы. Они используются для замены реальных компонентов при тестировании.

Тест кейсы (Test Cases) — это отдельные сценарии тестирования. Каждый тесткейс имеет входные данные и ожидаемый результат.

Ассерт (Assert) — это утверждения, которые проверяют, соответствует ли результат выполнения теста ожидаемому. Если условие ассерта не выполняется, тест считается проваленным.

Тесты в Go

Команды

`go test` - запуск тестов в текущем проекте

Флаги:

`go test -v ` - (verbose) вывести лог тестирования

Тестирование HTTP

Пакет "net/http/httptest"

Это базовая часть веба. Если здесь появляется ясная картинка маршрута запроса, дальше многие темы становятся заметно проще.