Skip to content
IRC-CodingIRC-Coding
Виды тестированияSoftware TestingUnit TestsIntegration TestsE2E TestsФункциональное тестированиеНефункциональное тестированиеРегрессионное тестирование

Виды тестирования в разработке: обзор и применение

Обзор основных видов тестирования: Unit, Integration, E2E, функциональное, нефункциональное, ручное и автоматизированное.

S

schutzgeist

2 min read
Виды тестирования в разработке: обзор и применение

Виды тестирования в разработке ПО

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

Кратко

  • Тесты различаются по уровню, целям и способу выполнения.
  • Основные уровни тестирования: unit, интеграционное, системное и приёмочное.
  • Функциональные тесты проверяют функциональность, нефункциональные проверяют свойства системы.
  • Ручное и автоматизированное тестирование дополняют друг друга, но не заменяют.

Классификация по уровню тестирования

Unit-тест

Проверяет наименьшую тестируемую единицу в изоляции. Быстро, дёшево и даёт сразу же обратную связь.

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

Проверяет взаимодействие нескольких компонентов или систем. Выявляет ошибки на границах раздела.

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

Проверяет систему целиком относительно установленных требований.

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

Проверяет, приемлема ли система с точки зрения заказчика или пользователя.

Классификация по целям тестирования

Функциональные тесты

Проверяют, выполняет ли программа требуемые функции корректно.

  • Unit-тесты: проверка отдельных функций в изоляции.
  • Интеграционные тесты: проверка взаимодействия компонентов.
  • Системные тесты: валидация полной системы.
  • Регрессионные тесты: гарантия того, что изменения не сломали существующий функционал.
  • Smoke-тесты: минимальная проверка базовой работоспособности.

Нефункциональные тесты

Проверяют свойства вроде производительности, безопасности, удобства использования и надёжности.

  • Performance-тесты: время отклика, пропускная способность, масштабируемость.
  • Load-тесты: поведение под ожидаемой нагрузкой.
  • Stress-тесты: поведение при избыточной нагрузке.
  • Security-тесты: обнаружение уязвимостей.
  • Usability-тесты: проверка удобства использования.
  • Accessibility-тесты: валидация доступности.
  • Reliability-тесты: проверка надёжности и доступности.

Классификация по способу выполнения

Ручное тестирование

Человек выполняет тесты согласно сценарию. Гибко, но затратно по времени и плохо воспроизводимо.

Автоматизированное тестирование

Тесты выполняют инструменты. Быстро, повторяемо и масштабируемо, но требует значительных начальных инвестиций.

Исследовательское тестирование

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

Практический пример: виды тестирования для e-commerce системы

Функциональные тесты:
- Unit-тест: расчёт цены с дисконтом
- Интеграционный тест: корзина с БД и платёжным API
- E2E-тест: весь процесс покупки от логина до подтверждения заказа
- Регрессионный тест: повторение критических проверок после каждого релиза

Нефункциональные тесты:
- Performance-тест: время отклика checkout-страницы менее 500 миллисекунд
- Load-тест: 1000 одновременных пользователей
- Security-тест: попытка SQL-injection на поле поиска
- Accessibility-тест: навигация со screen reader

Выполнение:
- Автоматизировано: unit-тесты, интеграционные, E2E, performance, регрессионные
- Вручную: исследовательское тестирование, usability-тесты

Плюсы и минусы

Плюсы

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

Минусы

  • Сложность: много категорий могут запутать.
  • Пересечения: один тест часто относится сразу к нескольким категориям.
  • Трудозатратность: полное покрытие требует много разных видов тестов.
  • Дисбаланс: сосредоточение на одном виде оставляет другие риски открытыми.

Ключевые моменты для подготовки

  • Различие уровней: unit, интеграционное, системное, приёмочное.
  • Различие по целям: функциональное, нефункциональное.
  • Различие по способу: ручное, автоматизированное, исследовательское.
  • Примеры нефункциональных видов тестирования.
  • Значимость регрессионных тестов.

Типичные вопросы с краткими ответами

  1. Какие четыре основных уровня тестирования существуют? Unit, интеграционное, системное, приёмочное.

  2. В чём разница между функциональным и нефункциональным тестированием? Функциональное проверяет поведение, нефункциональное проверяет свойства вроде производительности или безопасности.

  3. Что такое регрессионный тест? Тест, гарантирующий, что новые изменения не сломали существующий функционал.

  4. Назови один вид нефункционального тестирования. Performance, Load, Stress, Security или Usability.

  5. Что такое исследовательское тестирование? Свободное изучение программы без заранее определённых сценариев с целью выявления ошибок.

Продолжение пути в Software Testing

Следующая статья в пути Software Testing рассматривает Mock, Stub, Fake и Test Doubles — различные типы test doubles и их применение.

Основные источники

  1. https://iso25000.com
  2. https://martinfowler.com/testing/
  3. https://en.wikipedia.org/wiki/Software_testing
Назад к блогу
Share:

Nächster Artikel in Качество программного обеспечения

Weiterlesen
CI/CD и Testing: Автоматизация качества

Похожие статьи