Баннер мобильный (1) Пройти тест

Тестирование «черного и белого ящика»: в чем разница?

Разбираемся, как тестировщики проверяют новые продукты и при чем тут ящики

Разбор

3 марта 2024

Поделиться

Скопировано
Тестирование «черного и белого ящика»: в чем разница?

Содержание

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

    Уровни тестирования и подходы

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

    Как правило, тестирование происходит на трех уровнях, которые составляют классическую «Пирамиду тестирования»:

    • Unit-тесты (проверка корректности работы отдельных модулей программного кода).
    • Интеграционные тесты (проверка взаимодействия различных компонентов программы, frontend- и backend-разработки и т. д.).
    • End-to-end тесты (когда задействована вся система: это может быть ручное тестирование, при котором пользователь или тестировщик механически нажимает на кнопки, или автоматизированные тесты с аналогичным сценарием).
    Виды тестов в форме пирамиды
    Классическая пирамида тестирования

    Чтобы проверить продукт на всех трех уровнях, используют тестирование по принципу «черного и белого ящиков». Эти подходы отличаются степенью прозрачности кода для тестировщика. Например, «белый ящик» — это полностью открытый код, «черный ящик» — полностью закрытый. Разберемся 

    Тестирование по методу «белого ящика» 

    White box testing основывается на анализе внутренней структуры программы. Тестировщик знает, как работает программа и какие функции выполняет каждый ее блок. Основной фокус в этом методе — на коде. Он исследует структуру каталогов, маршрутизацию, циклы и при необходимости может самостоятельно изменить код. Такое тестирование проводится в два этапа:

    Для проверки по методу «белого ящика» тестировщик должен знать язык программирования. Он самостоятельно создает тест-кейсы, чтобы выявить не только очевидные, но и скрытые ошибки.

    Плюсы
    Минусы
    Более тщательная проверка кода и компонентов программы, возможность избавиться от программных «тупиков»
    Нужно знание языка программирования, который проверяется
    Понятные отчеты об ошибках: тестировщик может дать разработчику прямое указание на ошибку в коде или исправить ее самостоятельно
    Возможны когнитивные искажения, ведь человек, точно знающий, как устроена система, может предполагать, что ее поведение не выходит за рамки известного ему алгоритма
    Возможность доработать архитектуру и логику программы в процессе тестирования
    Не позволяет проверить интеграцию с другими сервисами

    Тестирование по методу «черного ящика» 

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

    Тестирование «черным ящиком» может происходить как вручную, так и автоматически. И, как и в случае «белого ящика», специалист создает test-кейсы, чтобы покрыть все возможные сценарии использования программы. 

    Такое тестирование можно проводить на любом этапе разработки ПО. Часто оно не позволяет выявить скрытые ошибки, но зато доступно начинающим специалистам и помогает посмотреть на продукт глазами обычного пользователя.

    При использовании метода «черного ящика» тестировщик не видит код программы

    Плюсы
    Минусы
    Не нужны дополнительная подготовка к тестированию, добор навыков
    Можно пропустить критичные баги в программном коде
    Максимальное покрытие продукта тестами
    Разработчикам понадобится больше времени, чтобы найти причину ошибки
    Высокая скорость проверок
    Алексей Каллистов
    QA-инженер, автор курса «Тестировщик-автоматизатор» в Skillfactory

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

    Когда мы работаем без возможности увидеть код, то можем предвидеть многие нестандартные пользовательские сценарии, так как не ограничены своим знанием об устройстве кода. Таким образом, не ждем от него только какого-то одного известного нам поведения

    Тестирование по методу «серого ящика» 

    Grey box testing считается промежуточным вариантом между «белым и черным ящиком». В этом случае тестировщик может видеть часть кода или иметь доступ к внутренним настройкам продукта, недоступным обычному пользователю. 

    Однако проверка при этом приходит с использованием программного интерфейса. Это позволяет получить преимущества «черного ящика» и исключить искажения при работе с «белым».

    Плюсы
    Минусы
    Не нужно глубоко погружаться в код продукта
    Более длительные тесты: нужно проверять код и интерфейс, сопоставлять отчеты
    Совмещает преимущества «черного» и «белого ящиков», дает сбалансированную проверку
    Специалистам нужны одновременно понимать внутреннюю логику продукта и сценарии поведения обычного пользователя, это нетривиальная задача
    Алексей Каллистов
    QA-инженер, автор курса «Тестировщик-автоматизатор» в Skillfactory

    «Серый ящик» — предпочтительный способ тестирования. Он лишен минусов когнитивного искажения, но в то же время мы можем подсматривать в код, чтобы убедиться в том, что ничего не упустили. 

    Классический «белый ящик» работает внутри кода и часто не позволяет проверить интеграцию с другими сервисами. В случае с «серым ящиком» нам будет отвечать реальная система и мы сможем увидеть результат при реальном взаимодействии. На такое тестирование может потребоваться больше времени, но оно дает наиболее полную картину о качестве ПО. 

    Какой метод выбрать

    Главное, что объединяет все виды тестирования — это общая цель: повышение качества работы программного обеспечения.

    И «черный», и «белый ящики» направлены на поиск и устранение ошибок еще до того, как приложение попадает к конечному пользователю. Зачастую, чтобы добиться конечной цели, необходимо использовать все возможные методы проверки.

    Метод «белого ящика» помогает исключить важные системные ошибки; принцип «черного ящика» необходим, чтобы посмотреть на продукт глазами обычного пользователя и исключить нештатные ситуации.

    Алексей Каллистов
    QA-инженер, автор курса «Тестировщик-автоматизатор» в Skillfactory

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

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

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии