Веб тестирование

Всё о клиент-серверных архитектурах, HTTP, API, безопасности, логах и современных веб-технологиях.

Клиент-серверная архитектура
Клиент-серверная архитектура – это система распределения, в которой одни устройства обращаются к другим для получения необходимой информации или выполнения определенных задач. Клиенты отправляют запросы, серверы их обрабатывают и возвращают результат.
Одноуровневая архитектура — клиент и сервер на одном уровне, вся логика и интерфейс в одном приложении.
Двухуровневая архитектура — клиент и сервер разделены, клиент — UI и часть логики, сервер — данные.
Трёхуровневая архитектура — клиент (UI), сервер приложений (логика), сервер БД (данные).
Многоуровневая архитектура — добавляются промежуточные слои (кеш, балансировщики и т.д.).
Толстый клиент — много логики на клиенте, меньше нагрузка на сервер.
Тонкий клиент — минимум логики на клиенте, всё на сервере.
Разница между архитектурой и технологией
Пример: Архитектура — браузер отправляет HTTP-запрос на сервер. Технология — используется HTTP, сервер Nginx, данные в JSON.
Типы серверов
Модели взаимодействия клиент-сервер
Облачные серверы (Cloud Servers)
IaaS — аренда виртуальных машин (AWS EC2, Google Compute Engine).
PaaS — готовые платформы для развертывания (Heroku, Firebase).
SaaS — готовый софт (Gmail, Google Drive).
Преимущества облака
URL
URL (Uniform Resource Locator) — адрес уникального ресурса в интернете. Рекомендуется не более 2000 символов.
Микросервисы и монолиты
Монолитная архитектура — Единое приложение, где все компоненты (UI, бизнес-логика, БД) работают в одном процессе и развертываются как единое целое.
Микросервисная архитектура — Приложение разбито на множество небольших независимых сервисов, каждый из которых решает свою задачу и общается с другими через API (HTTP, gRPC, Message Queue).
HTTP и HTTPS
HTTP (Hypertext Transfer Protocol) — это протокол прикладного уровня, предназначенный для передачи гипертекстовых документов (например, HTML-страниц) между клиентом (браузером) и сервером.
HTTPS (Hypertext Transfer Protocol Secure) — это безопасная версия HTTP, которая использует шифрование через SSL/TLS для защиты передаваемых данных.
Версии HTTP
HTTP-методы
Идемпотентные методы: GET, PUT, DELETE
Неидемпотентные методы: POST
Кешируемые методы: GET, HEAD, OPTIONS
Безопасные методы: GET, HEAD, OPTIONS
Небезопасные методы: POST, PUT, DELETE, PATCH
Структура HTTP-запроса
GET /path HTTP/1.0
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Структура HTTP-ответа
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123
Body
HTTP-коды состояния
HTTP-заголовки
SSL сертификат
SSL-сертификат удостоверяет подлинность сайта и позволяет использовать зашифрованное соединение (HTTPS).
Аутентификация и Авторизация
Аутентификация — подтверждение личности пользователя.
Авторизация — проверка прав доступа.
auth vs authz
Сессия на сайте
Сессия — промежуток времени между входом на сайт и его закрытием.
Токен
Токен — средство авторизации для каждого запроса. Генерируются на сервере на основе секретного ключа.
Access Token — для доступа к защищённым ресурсам, ограниченный срок действия.
Refresh Token — для получения новых access token без повторной аутентификации.
JWT — стандартный формат токенов (заголовок, payload, подпись).
Cashe и cookie
Кэш — это механизм хранения копий ресурсов (HTML, CSS, JS, изображения и т.д.) локально в браузере или промежуточных серверах (CDN), чтобы ускорить загрузку страниц.
Цель:
Виды кэширования:
Cookie — это небольшие фрагменты данных, которые сервер отправляет клиенту (браузеру) с помощью HTTP-заголовка Set-Cookie. Браузер сохраняет эти данные и отправляет их обратно на сервер при последующих запросах.
Основные цели использования:
Виды куков
Заголовки безопасности кук:
API
API (Application Programming Interface) — это набор правил и методов , с помощью которых одно программное обеспечение может взаимодействовать с другим.
Общая схема взаимодействия
Основные компоненты API
Виды API
REST API — архитектурный стиль, работает через HTTP, возвращает JSON или XML.
SOAP API — использует XML, строгие стандарты, часто в корпоративных приложениях.
GraphQL — язык запросов, позволяет получать только нужные данные.
WebSocket API — двусторонняя связь, подходит для чатов и онлайн-игр.
gRPC API — Высокопроизводительный RPC-протокол, использующий Protobuf
REST
REST (Representational State Transfer) — это архитектурный стиль для создания API. Он основан на использовании стандартных методов HTTP.
Плюсы
Минусы
Основные принципы REST:
Авторизация в API:
SOAP
SOAP — Он использует формат XML для передачи данных и может работать поверх различных транспортных протоколов: HTTP, SMTP, TCP и др.
Плюсы
Минусы
Как работает SOAP?
WSDL (Web Services Description Language)
WSDL — это XML-документ, описывающий SOAP-сервис:
Web-Service
Web-Service (веб-сервис) — это программная система, предназначенная для взаимодействия между приложениями через интернет с использованием стандартных протоколов и форматов данных.
Основные характеристики веб-сервисов:
Типы веб-сервисов:
Все веб-сервисы — это API, но не все API — веб-сервисы.
JSON
JSON — текстовый формат обмена данными, основанный на JavaScript.
Снифферы трафика
Снифферы — то программа или устройство, которое перехватывает и анализирует сетевой трафик в реальном времени. Оно позволяет увидеть все данные, передаваемые между устройствами в сети: IP-адреса, порты, содержимое пакетов и даже текстовые данные (например, HTTP-запросы).
Брокеры сообщений (Kafka)
Apache Kafka — распределённая платформа для передачи, хранения и анализа сообщений в реальном времени.
Kafka схема
Применение Kafka
Модель OSI
OSI — семиуровневая модель взаимодействия сетевых устройств.
OSI
Физический уровень — передача данных через среду (кабели, беспроводные каналы).
Канальный уровень — передача данных между устройствами в локальной сети.
Сетевой уровень — маршрутизация и адресация.
Транспортный уровень — контроль передачи данных, надежность.
Сеансовый уровень — управление сессиями связи.
Представительный уровень — преобразование, шифрование, сжатие данных.
Прикладной уровень — доступ приложений к сети и ресурсам.
Модель TCP/IP
Модель TCP/IP — это концептуальная модель, описывающая, как данные передаются через сеть. Она легла в основу интернета и определяет стандарты взаимодействия сетевых устройств.
Уровни модели TCP/IP
TCP и UDP
TCP (Transmission Control Protocol) — Надежная доставка данных с установкой соединения.
UDP (User Datagram Protocol) — Быстрая, но ненадежная передача без установки соединения.
TCP vs UDP
QUIC
QUIC (Quick UDP Internet Connections) — Современный протокол на основе UDP с улучшенной безопасностью и скоростью, обеспечивает мультипоточность, приоритезацию, сквозное шифрование. Лежит в основе HTTP/3.
Логи
Логи — записи о событиях, ошибках, действиях пользователей и состоянии системы.
Виды логов
Уровни логирования