Ответ
Тестирование методом серого ящика (Gray-box testing) — это техника, при которой тестировщик обладает частичными знаниями о внутренней структуре или реализации системы (например, знает схему базы данных, API-контракты или алгоритмы), но тестирование проводится через внешние интерфейсы (UI, API).
Пример: Тестирование валидации пароля
Известная внутренняя логика (код функции):
def validate_password(password: str) -> bool:
"""Пароль должен содержать минимум 8 символов, хотя бы одну цифру и одну заглавную букву."""
if len(password) < 8:
return False
if not any(char.isdigit() for char in password):
return False
if not any(char.isupper() for char in password):
return False
return True
Тест-кейсы, спроектированные с учетом этой логики, но выполняемые через веб-форму:
| № | Вводимый пароль | Ожидаемый результат (UI) | Почему (основано на знании кода) |
|---|---|---|---|
| 1 | Pass1234 |
Успешная валидация | Соответствует всем трем условиям. |
| 2 | pass1234 |
Ошибка: "Добавьте заглавную букву" | Не содержит заглавной буквы (any(char.isupper()) вернет False). |
| 3 | Pass |
Ошибка: "Минимум 8 символов" | Длина меньше 8 символов. |
| 4 | Password |
Ошибка: "Добавьте цифру" | Не содержит цифр (any(char.isdigit()) вернет False). |
Преимущества подхода:
- Более эффективное покрытие: Знание внутренней логики позволяет создавать тесты, целенаправленно проверяющие граничные условия и ветвления алгоритма.
- Более точные проверки: Можно ожидать конкретные сообщения об ошибках, а не просто факт ошибки.
- Изоляция дефектов: Легче понять, в каком именно условии (
if) возникла проблема.