Как работает клиент-серверная архитектура веб-приложения?

«Как работает клиент-серверная архитектура веб-приложения?» — вопрос из категории Веб-тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Веб-приложение функционирует по модели клиент-сервер через протокол HTTP/HTTPS:

  1. Запрос (Request)

    • Клиент (браузер, мобильное приложение) отправляет HTTP-запрос на сервер.
    • Запрос содержит метод (GET, POST), URL, заголовки (куки, авторизация) и тело (для POST/PUT).
      // Пример клиентского запроса (JavaScript Fetch API)
      fetch('https://api.example.com/users', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ name: 'John' })
      });
  2. Обработка на сервере (Backend)

    • Сервер (например, на Node.js, Python Django, Java Spring) принимает запрос.
    • Маршрутизатор направляет его в соответствующий обработчик (контроллер).
    • Выполняется бизнес-логика: работа с базой данных (MySQL, PostgreSQL), вызов других сервисов.
      
      # Пример обработчика на Python (Flask)
      from flask import Flask, request, jsonify
      app = Flask(__name__)

    @app.route('/users', methods=['POST']) def create_user(): user_data = request.get_json() # 1. Парсинг тела запроса

    2. Валидация и бизнес-логика

    new_user = save_to_database(user_data)
    # 3. Формирование ответа
    return jsonify(new_user), 201
  3. Ответ (Response)

    • Сервер возвращает HTTP-ответ: статус-код (200 OK, 404 Not Found), заголовки и тело (HTML, JSON, XML).
  4. Обработка на клиенте (Frontend)

    • Браузер получает ответ. Если это HTML/CSS/JS — рендерит страницу. Если JSON — клиентское приложение (React, Vue) обновляет состояние интерфейса.

Ключевые компоненты для тестирования:

  • API (Backend): Проверка эндпоинтов, валидации, кодов ответа.
  • Фронтенд: Кросс-браузерная совместимость, отзывчивость UI.
  • Интеграция: Корректность обмена данными между клиентом и сервером.
  • Безопасность: Защита от XSS, CSRF, инъекций.