Какие типы клиентов существуют кроме браузера и почтовых клиентов?
Что проверяют
Понимаете ли вы клиент-серверную модель шире, чем «пользователь в браузере», и видите ли, как тип клиента меняет тестирование. Следом обычно просят рассказать, что именно вы проверяли бы в одном из названных клиентов.
Как отвечать
Начните с определения: клиент это любая программа или устройство, которое отправляет запрос серверу и получает ответ. Дальше примеры по группам:
- мобильные приложения: нативные под iOS и Android, кроссплатформенные на Flutter или React Native, гибридные с WebView внутри;
- десктопные приложения: нативные и на Electron, например мессенджеры, IDE, клиенты облачных дисков;
- консольные:
curl,git,ssh,psql; - инструменты для API: Postman, Insomnia, а также SDK и библиотеки, через которые код обращается к сервису;
- клиенты других протоколов: FTP и SFTP, торрент, клиенты баз данных вроде DBeaver, MQTT-клиенты в IoT;
- устройства: умные часы, телевизоры, платёжные терминалы, датчики;
- другие сервисы: при межсервисном вызове один бэкенд выступает клиентом другого, по REST, gRPC или через брокер сообщений.
Можно добавить деление на тонкий и толстый клиент: тонкий почти всё отдаёт серверу, толстый держит логику и данные у себя.
Для QA главное, что меняет каждый тип:
- мобильные: нестабильная сеть, офлайн-режим, прерывание звонком, пуш-уведомления, старые версии приложения, которые продолжают ходить в новое API;
- десктоп: установка, обновление, права в ОС;
- API-клиенты: контракты, коды ответов, обратная совместимость, таймауты и повторы.
Где спотыкаются
Делят клиентов по размеру экрана: смартфон, планшет, ноутбук. Это разные устройства, но не разные типы клиентов, планшетное приложение остаётся мобильным.
Забывают, что клиентом бывает сервер. Межсервисные вызовы тоже нужно тестировать: контракт, таймауты, поведение при недоступности соседа.
Перечисляют названия, но не говорят, как это влияет на тесты. Вопрос задан тестировщику, поэтому к каждому типу стоит добавить, что в нём проверять.