Тестирование черного ящика (Black Box Testing) основано на проверке функциональности системы без знания ее внутренней структуры и кода. Тестирование серого ящика (Gray Box Testing) сочетает элементы черного и белого ящиков: тестировщик имеет частичное знание внутренней структуры или алгоритмов системы, что позволяет создавать более эффективные тест-кейсы.
Ключевые отличия:
| Описание | Тестирование черного ящика | Тестирование серого ящика |
|---|---|---|
| Знание системы | Нет знаний о внутренней strukturе и коде. | Частичное знание внутренней strukture и логики. |
| Фокус | Проверка функциональности с точки зрения пользователя. | Сочетание проверки функциональности и некоторого знания внутренней logika. |
| Написание тестов | Основано на требованиях и спецификации. | Основано на требованиях и частичном знании кода/архитектуры. |
| Охват дефектов | Поиск функциональных дефектов, ошибок интерфейса. | Поиск функциональных дефектов, ошибок логики в определенных участках кода. |
| Примеры тестов | Эквивалентное разбиение, анализ граничных значений, таблицы состояний. | Тестирование баз данных, тестирование интеграции на основе знания API, тестирование безопасности с учетом архитектуры. |
Пример test-case для черного ящика (аутентификация):
Пример test-case для серого ящика (аутентификация с учетом знания о max_login_attempts в БД):
max_login_attempts times -> Account is locked (проверка, что after max_login_attempts попыток происходит именно lock, а не что-то другое, основываясь на знании internal limit).