Что такое тестирование методом серого ящика?

Блог

Один из самых частых вопросов при изучении особенностей тестирования — чем различаются методы тестирования Вlack-box, White-box и Gray-box. Про методы Чёрного и Белого ящика написано множество хороших статей. Но чем от них отличается метод Серого ящика? Давайте разберёмся.

Зачастую Серый ящик считают совокупностью видов White/Black-Box, так как он подразумевает, что внутреннее устройство тестируемого продукта нам известно лишь частично. Поэтому прежде, чем пытаться понять, что же такое Grey-Box-тестирование, стоит разобраться, из совокупности каких других методов оно состоит.

Black-box тестирование

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

Пример работы

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

White-Box тестирование

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

Пример работы

Хорошим примером послужит любой проект с открытым исходным кодом. Скачав и запустив подобные, можно писать автотесты, прогон которых и станет проверкой. У подобных проектов часто отсутствует пользовательский интерфейс, что отсекает возможность тестирования Black-box.

Основные различия между Black-box и White-Box

При тестировании методом Белого ящика необходимы знания программирования. Поэтому считается, что данным видом пользуются сами разработчики, так как им известен код. Они определяют уместные или неуместные паттерны проектирования, структуры классов. Для них разрабатываемая ими же система — Белый ящик. Black-box не требует знаний программирования, поэтому с ним работает непосредственно отдел Тестирования.

Grey-Box тестирование

При тестировании по принципу Серого ящика руководствуются не только спецификацией, но и ключевыми элементами проектирования. 

Пример работы

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

Например, если вводимая фамилия пользователя записывается в поле типа «‎строка» длиной 128 символов, мы должны:

  • Попробовать найти фамилию длиннее, чем 128 символов. Если такие фамилии существуют, то человек с такой фамилией не сможет воспользоваться нашей системой — это довольно серьезный баг, ;
  • Независимо от того, существуют или нет такие фамилии, попробовать ввести строку больше 128 символов. Программа не должна ломаться (должна выдавать внятное сообщение об ошибке).

Если программа интегрируется с другими внешними системами, помимо базы данных, можно также проанализировать ограничения таких систем. Например, если мы тестируем почтовый IMAP-клиент, следует убедиться, что он корректно обрабатывает длинные пути к папкам на сервере (чаще всего, ограничение на длину пути составляет 255 символов).

Кроме указанного, если мы имеем еще и доступ к коду программы, то мы можем:

  • Обратить внимание на специальные случаи, которые не попали в документ с требованиями и которые необходимо протестировать;
    Напротив, увидеть, что какие-то вещи тестировать не имеет смысла.

Достоинства Grey-box тестирования

  • Тестирование Серого ящика включает в себя плюсы тестирования «Чёрного» и «Белого». Другими словами, тестировщик смотрит на объект тестирования с позиции «Чёрного» ящика, но при этом проводит анализ на основе данных о системе, которые он знает.
  • Тестировщик может проектировать и использовать более сложные сценарии тестирования.
  • Тестировщик работает вместе с разработчиком, что позволяет на начальном этапе убрать избыточные тест-кейсы. Это сокращает время функционального и нефункционального тестирования и положительно влияет на общее качество продукта.

Недостатки метода:

  • Возможность анализа кода и тестового покрытия ограничена, так как либо доступ к исходному коду отсутствует, либо у тестировщика отсутствуют знания для изучения данного кода.
  • Тесты могут быть избыточными в том случае, когда разработчик также проверяет свой код Unit-тестами.
  • Нельзя протестировать все возможные потоки ввода и вывода, поскольку на это требуется слишком много времени.

Заключение


Стратегия Серого ящика объединяет в себе цели двух других ящиков, одновременно является универсальным вариантом для случаев, когда нет возможности прибегнуть к White-Box тестированию, но есть необходимость более значительного охвата тестами, чем у Black-box. Тестирование методом Серого ящика будет ближе именно к Черному ящику из-за отсутствия необходимости в доступе тестировщика к исходному коду. Все тесты создаются на основе знания алгоритма, архитектуры, внутренних состояний, а также иных высокоуровневых описаний поведения программы.