Что такое трехуровневая архитектура
Что проверяют
Понимаете ли вы устройство системы, которую тестируете, и умеете ли по симптому определить уровень, где сидит дефект. Ответ показывает, будете ли вы отдавать разработке задачу с локализацией или скриншот с подписью о том, что кнопка не работает.
Как отвечать
Три уровня: представление (клиент, интерфейс), логика приложения (сервер, бизнес-правила, API) и данные (СУБД, хранилище). Обращение идёт только к соседнему уровню, клиент в базу напрямую не ходит. В двухуровневой схеме толстый клиент знает про структуру базы сам, поэтому правило меняется обновлением всех рабочих мест, а доступ к данным открыт наружу.
Стоит развести термины: слои это логическое разделение кода, уровни это разнесение по узлам, которые разворачиваются и масштабируются отдельно.
Что это даёт тестировщику:
- на каждый уровень свой инструмент: проверки интерфейса, запросы к API, контроль состояния данных запросом;
- локализация дефекта по цепочке: ответ API верный, а на экране нет значит дело в представлении;
- подготовка данных через API быстрее и стабильнее, чем через интерфейс;
- заглушки на границах позволяют проверять уровни по отдельности и воспроизводить редкие ответы;
- пирамида тестов ложится на уровни: много быстрых проверок логики, мало сквозных сценариев.
Где спотыкаются
Проверяют валидацию только в интерфейсе и считают её работающей. Клиентская проверка обходится прямым запросом к API, поэтому каждое правило проверяется ещё и на уровне логики. Без этого в хранилище приезжают отрицательные суммы, чужие идентификаторы и строки длиннее допустимого.
Любой дефект вешают на интерфейс. Минимальный набор доказательств в отчёте это запрос, ответ сервера и состояние данных до и после: он либо переводит задачу на нужную команду сразу, либо показывает, что баг в отображении. Без этого задача ходит по кругу и возвращается с пометкой о том, что воспроизвести не удалось.
Готовят данные прямой правкой в базе мимо бизнес-логики. Так получается состояние, которого в рабочей системе не бывает, и дальше либо ловится несуществующий дефект, либо, наоборот, маскируется настоящий, потому что проверки уровня логики в этом сценарии вообще не отработали.