Найти в Дзене

Методы, этапы и метрики в тестировании: простой разбор сложных понятий по Майерсу, Блэку, Вайнбергу

Оглавление

Современное тестирование программного обеспечения — это не просто поиск дефектов. Оно выполняет более масштабную функцию: оценку риска, обеспечение уверенности в качестве, оптимизацию затрат воспроизводства продуктов. Тестирование включает три основные категории организационного знания:

  • Этапы: последовательность управляемых действий/шагов
  • Методы: техники и стратегии построения проверки
  • Метрики: измеримые показатели результата

Если этапы обеспечивают организацию, то методы — разум, а метрики — обратную связь.

Рассмотрим их подробнее как они представлены в каждом из источников.

Подписывайтесь на мой канал в Телеграмм, чтобы ничего не пропустить.

Ну или на канал в VK, если хотите видеть новые статьи у себя в ленте.

🧱 Гленфорд Майерс — «Искусство тестирования программ»

📌 Общая идея

Майерс — один из первых, кто систематизировал подход к тестированию как дисциплине, а не просто набору действий. Его книга — это классика, в которой он рассматривает тестирование как процесс выявления ошибок, а не подтверждение корректности.

💬 «Тестирование — это процесс, направленный на демонстрацию наличия ошибок, а не их отсутствия.»

🔧 Методы тестирования

Майерс делит тестирование на два основных подхода:

1. Тестирование "чёрного ящика" (Black-box testing)

  • Тестировщик не знает внутренней логики программы.
  • Ориентируется на входы и выходы.
  • Используется для проверки соответствия требованиям.

Примеры техник:

  • Эквивалентное разбиение
  • Анализ граничных значений
  • Таблицы принятия решений

2. Тестирование "белого ящика" (White-box testing)

  • Тестировщик знает структуру кода.
  • Цель — проверить все возможные пути выполнения.
  • Используется для покрытия логики и условий.

Примеры техник:

  • Покрытие операторов
  • Покрытие ветвлений
  • Покрытие условий

🧩 Этапы тестирования (в интерпретации Майерса)

Хотя книга не даёт формального жизненного цикла, логика процесса у него следующая:

1. Анализ требований — понять, что должно быть протестировано.

2. Проектирование тестов — выбор техник и создание тест-кейсов.

3. Выполнение тестов — ручное или автоматизированное.

4.Анализ результатов — сравнение фактического и ожидаемого поведения.

5. Документирование дефектов — фиксация и передача в разработку.

📊 Метрики тестирования

Майерс не даёт большого набора метрик, но подчёркивает важность оценки эффективности тестов:

  • Количество найденных дефектов
  • Плотность дефектов (дефекты на 1000 строк кода)
  • Эффективность тестов — насколько хорошо они выявляют ошибки
💬 «Хороший тест — это тот, который с высокой вероятностью обнаружит ошибку, если она есть.»

⚙️ Рекс Блэк — «Ключевые процессы тестирования»

📌 Общая идея

Рекс Блэк — один из ведущих экспертов в области управления тестированием. Его книга — это практическое руководство по построению и управлению процессом тестирования в рамках проекта или организации. В отличие от Майерса, который фокусируется на техниках, Блэк делает акцент на процессах, ролях, документации и метриках.

💬 «Тестирование — это управляемый процесс, а не хаотичная активность.»

🔧 Методы тестирования

Блэк классифицирует методы по типу активности и уровню автоматизации:

1. Статическое тестирование

  • Проводится без выполнения кода.
  • Включает: ревью требований, кода, архитектуры, чек-листы, анализ документации.
  • Цель — предотвратить дефекты до их появления.

2. Динамическое тестирование

  • Проводится путём выполнения программы.
  • Включает: функциональное, интеграционное, системное, приёмочное тестирование.
  • Может быть ручным или автоматизированным.

3. Тестирование на основе рисков

  • Приоритизация тестов в зависимости от вероятности и влияния дефектов.
  • Позволяет сфокусироваться на наиболее критичных частях системы.

4. Тестирование на разных уровнях

  • Модульное (unit testing)
  • Интеграционное
  • Системное
  • Приёмочное (acceptance testing)

🧩 Этапы тестирования (по жизненному циклу)

Рекс Блэк описывает структурированный жизненный цикл тестирования, который соответствует современным стандартам (например, ISTQB):

1. Планирование тестирования

Определение стратегии, объёма, ресурсов, рисков.

Создание тест-плана.

2. Анализ и проектирование тестов

Изучение требований.

Выбор техник тест-дизайна.

Определение критериев входа/выхода.

3. Реализация и подготовка

Написание тест-кейсов.

Подготовка тестовых данных и окружения.

4. Выполнение тестов

Запуск тестов, фиксация результатов.

Регистрация дефектов.

5. Оценка критериев выхода и завершение

Проверка выполнения целей тестирования.

Принятие решения о завершении.

6. Закрытие тестирования

Подведение итогов.

Сбор метрик.

Ретроспектива и улучшения.

💬 «Хороший процесс тестирования — это повторяемый, измеримый и улучшаемый процесс.»

📊 Метрики тестирования

Рекс Блэк активно использует метрики как инструмент управления. Он подчёркивает, что метрики должны быть понятными, полезными и применимыми.

Примеры метрик:

  • Покрытие требований — сколько требований покрыто тестами.
  • Покрытие кода — строки, условия, ветви.
  • Количество дефектов — по приоритетам, по фазам.
  • Процент успешных/проваленных тестов
  • Среднее время на исправление дефекта
  • Прогресс выполнения тестов
  • Плотность дефектов — дефекты на 1000 строк кода или на модуль
💬 «Метрики — это не цель, а средство принятия решений. Они помогают понять, где мы находимся и куда двигаться дальше.»

🧠 Джеральд Вайнберг — «Идеальное программное обеспечение и другие иллюзии в тестировании»

📌 Общая идея

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

💬 «Тестирование — это способ узнать что-то новое о продукте, а не просто подтвердить, что он работает.»

🔧 Методы тестирования

Вайнберг не делит тестирование на "чёрный ящик" или "белый ящик", он говорит о подходах к мышлению:

1. Исследовательское тестирование (Exploratory Testing)

  • Процесс, в котором тест-дизайн, выполнение и анализ происходят одновременно.
  • Тестировщик адаптирует свои действия на ходу, исходя из наблюдений.
  • Особенно полезно при:Неполных или неясных требованиях
    Ограниченном времени
    Неожиданном поведении системы

2. Контекстно-зависимое тестирование

  • Нет универсального набора техник — всё зависит от контекста: проекта, команды, целей, рисков.
  • Важно понимать, зачем и для кого мы тестируем.

3. Тестирование гипотез

  • Тестировщик формулирует предположения о поведении системы и проверяет их.
  • Это ближе к научному подходу: «Если я сделаю X, то должно произойти Y. А что если нет?»

🧩 Этапы тестирования

У Вайнберга нет формального жизненного цикла, как у Блэка. Вместо этого он предлагает гибкий, итеративный подход, основанный на мышлении:

1. Понимание цели тестирования

Что мы хотим узнать?

Для кого важен результат?
2. Формулировка гипотез

Какие риски или ошибки возможны?

Что может пойти не так?

3. Выбор подхода

Какие методы или инструменты помогут это проверить?

4. Наблюдение и анализ

Что мы узнали?

Что это значит?

5. Корректировка стратегии

Что стоит проверить дальше?

Нужно ли изменить направление?

💬 «Тестирование — это не линейный процесс. Это цикл обучения и адаптации.»

📊 Метрики тестирования

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

Его подход:

  • Качественные наблюдения важнее количественных отчётов
  • Метрики должны помогать думать, а не заменять мышление
  • Вопросы важнее ответов
💬 «Если вы измеряете не то, что важно, вы рискуете улучшить не то, что нужно.»

💡 Особенности подхода Вайнберга

  • Он не даёт готовых рецептов, но учит думать как тестировщик.
  • Он показывает, что тестирование — это не только про баги, но и про понимание продукта.
  • Он подчёркивает важность коммуникации, контекста и целей.

Заключение: три взгляда на тестирование — одна цель

Тестирование программного обеспечения — это не просто набор техник или этапов. Это многогранная дисциплина, в которой сочетаются структура, управление и мышление. Анализ подходов трёх классиков — Гленфорда Майерса, Рекса Блэка и Джеральда Вайнберга — показывает, как эти грани взаимодействуют и дополняют друг друга.

🧱 Майерс: тестирование как техника

Майерс заложил фундамент формального тест-дизайна. Он дал нам:

  • Чёткие методы: эквивалентное разбиение, граничные значения, таблицы решений
  • Понимание, что тест должен искать ошибки, а не подтверждать корректность
  • Осознание важности оптимизации покрытия

Его подход особенно полезен на этапе проектирования тестов, когда нужно выбрать наиболее эффективные случаи.

⚙️ Блэк: тестирование как процесс

Рекс Блэк систематизировал тестирование как управляемую деятельность. Он дал нам:

  • Полный жизненный цикл тестирования: от планирования до закрытия
  • Метрики, которые помогают оценивать прогресс и качество
  • Подход на основе рисков и приоритетов

Его подход незаменим при организации командной работы, отчётности и встраивании тестирования в процесс разработки.

🧠 Вайнберг: тестирование как мышление

Джеральд Вайнберг напомнил, что тестирование — это исследование и понимание, а не просто выполнение инструкций. Он дал нам:

  • Исследовательское тестирование как способ узнавать новое
  • Критический взгляд на метрики и формализм
  • Умение задавать правильные вопросы

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

🧩 Вместе — сильнее

Каждый из этих подходов по-своему ценен. Но в реальной практике они не конкурируют, а дополняют друг друга:

  • Мы используем техники Майерса, чтобы проектировать эффективные тесты.
  • Мы применяем процесс Блэка, чтобы управлять тестированием и отслеживать прогресс.
  • Мы включаем мышление Вайнберга, чтобы не потерять гибкость, креативность и здравый смысл.
💬 «Хорошее тестирование — это не только про баги. Это про понимание, уверенность и ценность для пользователя.»

Спасибо, что прочли до конца 🙌
Подписывайтесь на мой канал в
Телеграм или в VK — впереди ещё много интересного про ИИ, NLP и тестирование!

До встречи в следующих статьях! 💡

-2