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

Тестирование Black-Box

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

В следующей таблице перечислены преимущества и недостатки тестирования черного ящика.

Преимущества Недостатки
Хорошо подходит и эффективен для больших сегментов кода. Ограниченное покрытие, поскольку на самом деле выполняется только выбранное количество тестовых сценариев.
Кодовый доступ не требуется. Неэффективное тестирование, из-за того, что тестер только имеет ограниченные знания о приложении.
Четкое разделение перспективы пользователя с точки зрения разработчика с помощью явно определенных ролей. Слепой охват, поскольку тестер не может ориентироваться на определенные сегменты кода или области ошибок.
Большое количество умеренно квалифицированных тестировщиков может протестировать приложение без каких-либо знаний о реализации, языке программирования или операционных системах. Тестовые примеры трудно разработать.

Тестирование белого ящика

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

Тестер должен заглянуть внутрь исходного кода и выяснить, какое устройство / блок кода ведет себя некорректно.

В следующей таблице перечислены преимущества и недостатки тестирования белого ящика.

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

Тестирование серых ящиков

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

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

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

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

В следующей таблице перечислены точки, которые различают тестирование «черного ящика», «серое окно» и «белый ящик».

Тестирование Black-Box Тестирование серых коробок Тестирование белого ящика
Не нужно знать внутреннюю работу приложения. Тестер имеет ограниченное знание внутренней работы приложения. Тестер имеет полное представление о внутренней работе приложения.
Также известен как тестирование с закрытым ящиком, тестирование с использованием данных или функциональное тестирование. Также известен как прозрачное тестирование, поскольку тестер имеет ограниченное знание внутренних аспектов приложения. Также известен как прозрачное тестирование, структурное тестирование или тестирование на основе кода.
Выполняется конечными пользователями, а также тестировщиками и разработчиками. Выполняется конечными пользователями, а также тестировщиками и разработчиками. Обычно выполняются тестировщиками и разработчиками.
Тестирование основано на внешних ожиданиях. Внутреннее поведение приложения неизвестно. Тестирование выполняется на основе диаграмм базы данных высокого уровня и диаграмм потоков данных. Внутренние работы полностью известны, и тестер может соответствующим образом создавать тестовые данные.
Он является исчерпывающим и наименее трудоемким. Частично трудоемкий и исчерпывающий. Самый исчерпывающий и трудоемкий тип тестирования.
Не подходит для тестирования алгоритмов. Не подходит для тестирования алгоритмов. Подходит для тестирования алгоритмов.
Это можно сделать только методом проб и ошибок. Домены данных и внутренние границы могут быть проверены, если они известны. Домены данных и внутренние границы могут быть лучше проверены.