Gray Box Testing – The New Normal?

Gray Box Testing – The New Normal?


Все мы знакомы с тестированием черного и белого ящиков и потратили годы на работу с ними. У обоих этих подходов есть свои достоинства и недостатки, и тестировщики научились мириться с ними.

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

Так что же такое тестирование серого ящика?

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

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

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

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

Gray box testing


Пример, демонстрирующий тестирование серого ящика

У тестировщика есть гиперссылка для тестирования. В таблице ниже приведены три типа тестирования и предпринятые шаги:

An example showcasing the gray box testing

Нам известны только некоторые особенности реализации тестируемой системы.

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

Эту технику тестирования также называют методом полупрозрачного ящика: что-то мы видим, а что-то – нет.

Пример:

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

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

Как проводится тестирование серого ящика

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

  1. Соберите входные данные из подходов к тестированию «белого ящика» и «черного ящика».
  2. Определите выходы входов на шаге 1.
  3. Определите все пути пользователя, которые преобразуют эти входные данные в выходные.
  4. Определите подфункции для прохождения тестирования на один уровень глубже.
  5. Определите входы для подфункций.
  6. Определите ожидаемый результат для входов на шаге 5.
  7. Выполните тестовые примеры для подфункций.
  8. Проверить правильность результата выполнения шага 7.
  9. Повторите шаги 4-8 для каждой подфункции.

Типы тестов серого ящика:

  1. Регрессионные проверки;
  2. Матричные проверки;
  3. Шаблонное тестирование;
  4. Проверка ПО с помощью ортогонального массива.

Существует 4 основных метода тестирования, которые классифицируются как тестирование серого ящика:

  1. Матричное тестирование - тестирование переменных в системе. Переменные переносят данные по всему приложению. Бизнес-риск идентифицируется для каждой переменной, а затем исследуется по каждому риску. Это помогает идентифицировать неиспользуемые или недостаточно используемые переменные.
  2. Регрессионное тестирование - стандартное тестирование, чтобы увидеть, не нарушает ли какое-либо новое исправление работу существующего приложения.
  3. Тестирование шаблонов - обнаружение шаблонов, вызывающих ошибки. Основное внимание здесь уделяется выявлению факторов, которые привели к дефекту, способу его обнаружения и необходимости исправления. Эта информация помогает в разработке серых тестов, которые гарантируют, что шаблоны, выявленные в более старых версиях, могут быть обнаружены на ранних этапах в новых версиях.
  4. Проверка ортогональных массивов - Статистический метод выполнения тестов. Он используется, когда вводы слишком малы, но тесты сложные. Это помогает увеличить покрытие кода.

✅ Плюсы тестирования серого ящика 

  1. Тестирование проводится как с точки зрения пользователя, так и с точки зрения разработчика, поскольку оно сочетает в себе тестирование черного и белого ящиков.
  2. Поскольку он является производным от методов «черного ящика» и «белого ящика», он добавляет больше преимуществ в обоих методах тестирования.
  3. Тестирование проводится в большей степени с точки зрения пользователя, чем с точки зрения разработчиков.
  4. Качество программного обеспечения улучшается.
  5. Этот метод больше ориентирован на восприятие пользователем.
  6. Разработчики получают выгоду, поскольку у них есть достаточно времени для исправления ошибок.
  7. Мгновенные исправления могут быть сделаны, так как доступен частичный код.
  8. Поток данных управляется и поддерживается правильно.
  9. Сделан честный обзор программного обеспечения, и между разработчиками и тестировщиками не возникает конфликтов
  10. Этот метод тестирования эффективен при интеграционном тестировании.
  11. С помощью этого метода можно эффективно тестировать сложные приложения и сценарии.

❌ Недостатки тестирования серого ящика

  1. Полное знание кода не достигается, поэтому трудно достичь полного покрытия кода.
  2. Поскольку доступен только ограниченный доступ к коду / логике, полные исправления иногда не могут быть сделаны, а значит, иногда программное обеспечение может оставаться таким, как есть.
  3. Другие типы тестирования белого ящика, такие как тестирование алгоритма, не могут быть выполнены, так как полная логика недоступна.
  4. Трудно выполнить этот тип тестирования в распределенных архитектурных программных системах.

Сравнение трех подходов

A comparative study of the three approaches

КРАТКИЕ ИТОГИ

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

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



Report Page