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

 

обложка

Придумали крутой IT-продукт → прикрутили к нему классные фичи → готовы показать его миру. Стоп. Даже если кажется, что все отлично, нелишним будет перепроверить разработку на уязвимости и баги. Лучше прочекать и допилить самим, нежели после релиза разочарованные пользователи закидают жалобами.

Протестировать — значит погрузить продукт в условия близкие к эксплуатации, прогнать через позитивные и опасные сценарии. Для проверки функциональности, чистоты кода и логики продукта используют различные методы тестирования ПО. Сегодня мы расскажем о двух: черном и белом ящике.

Как происходит тестирование продукта?

 

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

Для этого используется так называемая «пирамида тестирования» — это группировка уровней тестирования от частных (в основании пирамиды) к общим (на вершине). 

Пирамида тестирования включает в себя:

  • модульное тестирование (Unit-тестирование) — проверку отдельных модулей кода;
  • интеграционные тесты — проверку взаимодействия между модулями, функциями, бэкендом и фронтендом;
  • End-to-end-тесты — комплексное тестирование всего продукта
Пирамида
Так выглядит визуальное представление пирамиды тестирования. База — это Unit-тестирование. Пока отдельные модули не проверены, двигаться дальше нельзя

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

 

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

 

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

Что такое тестирование «черный» и «белый ящик» 

Представим, что продукт (его код, инфраструктура, взаимосвязи) находится в коробке.

При тестировании «белого ящика», или white box testing, коробка прозрачна. Тестировщик будет видеть, как реализован продукт, какое дополнительное ПО подключено для его функционирования, какие взаимосвязи используются.

Тестирование «черного ящика», или black box testing, — это непрозрачная коробка. Тестировщик не имеет ни малейшего понятия, с какими взаимосвязями и сервисами предстоит работать. Проверяется только логика функционирования продукта.

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

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

черный и белый тест
Так можно наглядно представить тестирование «черный» и «белый ящик». При black box testing мы знаем только вводные данные и желаемый результат, а при white box testing еще и видим инфраструктуру.

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

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

Вот что может проверять метод «черный ящик»:

  • Функциональность. Насколько корректно выполняются функции и задуманные сценарии. Например, нет ли багов в приложении для вызова такси, когда пользователь отмечает точку на карте или пишет комментарий.
  • Удобство использования. Насколько комфортно пользоваться продуктом. Например, быстро ли пользователь интернет-магазина может найти нужный товар, нет ли трудностей с оплатой и выбором способа доставки.
  • Совместимость. Правильно ли продукт работает на различных операционных системах и устройствах, интегрируется ли с другими ресурсами. Например, синхронизируется ли мессенджер с контактами в смартфоне. 
  • Стабильность. Как продукт реагирует на большое количество пользователей или DDoS-атаки. Например, сайт интернет-магазина не должен «повиснуть», если после объявления распродажи на него зайдет в несколько раз больше пользователей, чем обычно.  

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

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

 

Как проходит тестирование «белый ящик»   

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

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

Вот что может проверять метод «белый ящик»:

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

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

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

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

 

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

Что такое тестирование «серый ящик» 

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

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

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

Рассмотрим плюсы и минусы тестирования «серый ящик».

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

 

Что выбрать: «черный» или «белый ящик»

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

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

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

 

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

Резюме

Тестирование по методу «черного» и «белого ящика» различается по доступу к коду. В первом случае у тестировщика нет доступа, и он проверяет продукт с позиции обычного пользователя. Во втором — тестирует именно код. Также есть метод «серого ящика», где доступ есть только к одному из блоков кода.

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

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

Если вам нужно провести аудит продукта или тестирование методом «черного» или «белого ящика», специалисты Codeby помогут это сделать. 

 

Оценка статьи:

1 Star2 Stars3 Stars4 Stars5 Stars (Пока оценок нет)
Загрузка...
Василий Котов

Василий Котов

Senior Software Engineer

Эксперт в области информационной безопасности с многолетним опытом работы в IT-индустрии. Специализируется на разработке и тестировании веб-приложений, промышленных систем автоматизации (АСУ ТП) и банковских решений. Его профессиональный путь включает работу над сложными проектами, где безопасность данных и устойчивость систем являются критически важными. Обладает глубокими знаниями в области кибербезопасности, подтвержденными международными сертификатами: HFI (следование инцидентам хакерских атак), CISA/CISM (аудит и управление информационной безопасностью) и CISSP (сертифицированный специалист по информационной безопасности). Эти квалификации позволяют ему не только выявлять уязвимости, но и разрабатывать стратегии для их предотвращения.

Получить оценку
Заполните форму и наши специалисты свяжутся с вами в ближайшее время
Ваше сообщение отправлено!
Наши специалисты свяжутся с вами в ближайшее время