Что это
Тестирование, проводимое при ограниченном знании исполнителями исходного кода приложения.
Сочетаются оба подхода (черного и белого ящика): для создания тест-кейсов применяется подход белого ящика, для тестирования на функциональном уровне — черного.
Такой гибридный подход применяется для устранения специфических проблем в приложениях; к примеру, при обнаружении дефекта во время тестирования в режиме белого ящика тестировщик изменяет код приложения и повторно тестирует его в реальном времени в режиме черного ящика. Этот подход может работать на всех уровнях тестирования. Чаще всего применяется при интеграционном тестировании и при выполнении пенетрационных тестов безопасности.
Примеры
- Простейший пример: тестировщик, проверяя ссылку на сайте, обнаруживает в ней ошибку, и исправляет ее, внося правки в html-код, затем ещё раз проверяет на сайте. В этом случае он работает «по серому ящику» — исправляет ошибку «будучи в белом ящике», и проверяет корректность ссылки — «в черном».
- Тестировщики могут иметь доступ к базе знаний с кодами ошибок (номерами и описаниями причин каждой), поэтому у них есть частичное понимание причин ошибок, хотя и нет доступа к исходному коду приложения; далее тестировщик детально описывает проблему разработчику.
- Тестировщики имеют доступ к логам, что тоже дает частичное понимание кода и причин ошибок.
Цели
- Сочетать преимущества обоих подходов
- Смотреть с точки зрения как тестировщиков так и разработчиков, а также и пользователей
- Экономить время, как в функциональном так и нефункциональном тестировании
Стратегия
Такое тестирование основывается на опыте тестировщика и частичном понимании архитектуры приложения, его состояний, и других высокоуровневых сущностей.
Применение
Матричное тестирование
Тестировщик обладает списком переменных, используемых в программе. Он «приспосабливает» переменные к требованиям, убирая неиспользуемые, ненужные, неинициализированные переменные.
Регрессионное тестирование
Проводится для того, чтобы изменения кода (удаление дефектов) в одной из частей приложения не повлияли на другие части. Регрессионное тестирование критически важных use-кейсов, повторное тестирование за файерволлом, общее повторное тестирование.
Тестирование по методике ортогонального массива (ОАТ)
Тестировщик ставит цель покрыть как можно больше кода как можно меньшим количеством тест-кейсов. Они пишутся так, чтобы охватить бОльшую часть кода, и бОльшую часть интерфейса.
Тестирование по шаблону
Обычно так тестируют, если есть надежный образец, как действовать, на примере предыдущего проекта. Тогда баги достаточно стандартные и повторяются; их удаляют, тем самым совершенствуя шаблон тестирования в будущих проектах.
Плюсы и минусы серого ящика
Плюсы:
- Гибкое и быстрое улучшение качества
- Взгляд на проект со стороны пользователя
- Экономия времени разработчиков
- Не нужны скиллы высокого уровня
- При этом доступно тестирование очень сложных приложений
- Интеграционное тестирование
Минусы:
- Идеальное тестирование — это все-таки белый ящик
- Неопытным тестировщикам сложно создавать тест-кейсы при неполном понимании системы
- Бывает сложно с большими распределенными системами