2.4. Классификация по доступу к коду и архитектуре приложения

· Метод белого ящика — у тестировщика есть доступ к внутренней структуре и коду приложения, а также есть достаточно знаний для понимания увиденного. Выделяют даже сопутствующую тестированию по методу белого ящика глобальную технику — тестирование на основе дизайна. Для более глубокого изучения сути метода белого ящика рекомендуется ознакомиться с техниками исследования потока управления или потока данных, использования диаграмм состояний. Некоторые авторы склонны жёстко связывать этот метод со статическим тестированием, но ничто не мешает тестировщику запустить код на выполнение и при этом периодически обращаться к самому коду (а модульное тестирование и вовсе предполагает запуск кода на исполнение и при этом работу именно с кодом, а не с «приложением целиком»).

· Метод чёрного ящика — у тестировщика либо нет доступа к внутренней структуре и коду приложения, либо недостаточно знаний для их понимания, либо он сознательно не обращается к ним в процессе тестирования. При этом абсолютное большинство перечисленных видов тестирования работают по методу чёрного ящика, идею которого в альтернативном определении можно сформулировать так: тестировщик оказывает на приложение воздействия (и проверяет реакцию) тем же способом, каким при реальной эксплуатации приложения на него воздействовали бы пользователи или другие приложения. В рамках тестирования по методу чёрного ящика основной информацией для создания тесткейсов выступает документация (особенно — требования и общий здравый смысл (для случаев, когда поведение приложения в некоторой ситуации не регламентировано явно; иногда это называют «тестированием на основе неявных требований», но канонического определения у этого подхода нет).

· Метод серого ящика — комбинация методов белого ящика и чёрного ящика, состоящая в том, что к части кода и архитектуры у тестировщика доступ есть, а к части — нет. На рисунках 2.3.b и 2.3.c этот метод обозначен особым пунктиром и серым цветом потому, что его явное упоминание — крайне редкий случай: обычно говорят о методах белого или чёрного ящика в применении к тем или иным частям приложения, при этом понимая, что «приложение целиком» тестируется по методу серого ящика.

· Если сравнить основные преимущества и недостатки перечисленных методов, получается следующая картина.

· Методы белого и чёрного ящика не являются конкурирующими или взаимоисключающими — напротив, они гармонично дополняют друг друга, компенсируя таким образом имеющиеся недостатки

Преимущества

Недостатки

Метод белого ящика

· Показывает скрытые проблемы и упрощает их диагностику.

· Допускает достаточно простую автоматизацию тест-кейсов и их выполнение на самых ранних стадиях развития проекта.

· Обладает развитой системой метрик, сбор и анализ которых легко автоматизируется.

· Стимулирует разработчиков к написанию качественного кода.

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

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

· Тестирование сфокусировано на реализованной функциональности, что повышает вероятность пропуска нереализованных требований.

· Поведение приложения исследуется в отрыве от реальной среды выполнения и не учитывает её влияние.

· Поведение приложения исследуется в отрыве от реальных пользовательских сценариев.

Метод чёрного ящика

· Тестировщик не обязан обладать (глубокими) знаниями в области программирования.

· Поведение приложения исследуется в контексте реальной среды выполнения и учитывает её влияние.

· Поведение приложения исследуется в контексте реальных пользовательских сценариев.

· Тест-кейсы можно создавать уже на стадии появления стабильных требований.

· Процесс создания тест-кейсов позволяет выявить дефекты в требованиях.

· Допускает создание тест-кейсов, которые можно многократно использовать на разных проектах.

· Возможно повторение части тест-кейсов, уже выполненных разработчиками.

· Высока вероятность того, что часть возможных вариантов поведения приложения останется непротестированной.

· Для разработки высокоэффективных тест-кейсов необходима качественная документация.

· Диагностика обнаруженных дефектов более сложна в сравнении с техниками метода белого ящика.

· В связи с широким выбором техник и подходов затрудняется планирование и оценка трудозатрат.

· В случае автоматизации могут потребоваться сложные дорогостоящие инструментальные средства.

Метод серого ящика

Сочетает преимущества и недостатки методов белого и чёрного ящика

Таблица №1 Преимущества и недостатки методов белого, чёрного и серого ящиков.