Тестирование Бэкенда Flashcards

1
Q

Что такое клиент-серверная архитектура?

A

Клиент-серверная архитектура представляет собой модель взаимодействия между программными компонентами, где один компонент (клиент) обращается к другому компоненту (серверу) для получения данных

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое API?

A

Это набор определенных правил, протоколов и инструментов, которые позволяют различным программным приложениям взаимодействовать между собой.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Из чего состоит запрос на сервере?

A

Метод запроса, URL, заголовки, тело запроса, параметры запроса, куки

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какие http методы могут быть?

A

Основные методы: GET, POST, PUT, DELETE, PUTCH

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое идемпотентные методы?

A

Этометоды, которые либо не изменяют состояние в базе данных, либо изменяют состояние только при первом запросе. В случае повторной отправки идентичного запроса, состояние в базе данных не изменяется. Идемпотентными методами являются: GET, PUT, DELETE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Из чего состоит ответ на сервере?

A

Статусная строка, заголовки ответа, тело ответа

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое HTTP?

A

Это протокол передачи данных, который используется для обмена информацией между клиентами и серверами в сети Интернет.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Разница между HTTP и HTTPs?

A

HTTP - Непосредственно протокол передачи данных

HTTPs - Расширение этого протокола НТТР
HTTP - Данные не шифруются
HTTPs - Данные шифруются
HTTP - Не использует сертификаты
HTTPs - Использует сертификаты
HTTP - Использует порт 80
HTTPs - Использует порт 443
HTTP - URL начинается с http://
HTTPs - URL начинается с https://

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какие безопасные HTTP методы знаешь?

A

GET. HEAD, OPTIONS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Из чего состоит HTTP запрос?

A

Стартовая строка содержит метод, путь до ресурса, версию протокола.
Заголовки.
Тело сообщения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Какие заголовки HTTP знаешь?

A
  • Accept: указывает тип данных, которые клиент может обработать.
  • Authorization: содержит информацию о доступе к ресурсу.
  • Cache-Control: управляет кэшированием ресурсов.
  • Connection: управляет соединением между клиентом и сервером.
  • Content-Length: указывает размер тела сообщения.
  • Content-Type: указывает тип содержимого сообщения.
  • Date: указывает дату и время отправки сообщения.
    -User-Agent: указывает информацию о браузере или клиенте
    -Set-Cookie: устанавливает cookie на клиенте.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

В чём разница между PUT, POST и PUTCH?

A

PUT может обновить существующий ресурс или создать новый.
PUT-запросы являются идемпотентными
PUT-запросы заменят существующий ресурс на новый.

POST-запросы создают новый ресурс на сервере.
POST-запросы не являются идемпотентными
POST-запросы не могут обновить существующие ресурсы

PATCH-запросы обновляют частично существующий ресурс.
PATCH - не идемпотентный

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое запрос на сервер?

A

Запрос на сервер - это способ, которым клиент взаимодействует с сервером, чтобы выполнить определенные действия. Отправление запроса с клиента на сервер выполняется посредством API

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Дай 3 объяснения что такое клиент-сервер

A

Архитектура: Клиент-сервер — это модель, где клиенты запрашивают услуги у сервера.

Взаимодействие: Клиенты и серверы обмениваются запросами и ответами через сеть.

Функциональность: Клиенты обрабатывают пользовательский интерфейс, а серверы — бизнес-логику и данные.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

В чем разница между GET и POST

A

GET Предназначен для получения данных с сервера
POST Предназначен для отправки данных на сервер

Способ передачи данных
GET: Через URL
POST: В теле НТТР запроса

Объём передаваемых данных
GET: Способен передать небольшое количество данных на сервер
Есть ограничения на длину URL (2048 символов)
POST: Ограничений нет
Способен передать большие объемы данных
Примечание: ограничения могут быть установлены сервером

Возможность отправки файлов
GET: Не поддерживается
POST: Поддерживается

Защита данных
GET: Данные видны всем в адресной строке браузера, истории браузера и т.п. в итоге данные не защищены
POST: Данные можно увидеть только с помощью инструментов разработчика, расширений браузера, специализированных программ

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как использовать кафку?

A

Тестировщик должен убедиться, что сообщения валидно записываются в Топики.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как тестировать API

A

Тестирование API для ручного тестировщика включает:

Подготовка: Использование Postman или аналогичных инструментов для отправки запросов.

Функциональное тестирование: Проверка корректности ответов на различные типы запросов (GET, POST, PUT, DELETE).

Валидация данных: Убеждение в корректной обработке и возврате данных.

Тестирование граничных условий: Проверка работы API с крайними значениями и некорректными данными.

Тестирование интеграции: Проверка взаимодействия API с другими системами и сервисами.

Тестирование безопасности: Проверка защиты от уязвимостей и авторизации.

Составление отчетов: Регистрация результатов тестирования и ошибок в системе управления ошибками.

18
Q

Как тестировать бэк?

A

Тестирование бэкэнда (серверной части) для ручного тестировщика включает в себя следующие шаги:

Тестирование API: Используя инструменты вроде Postman, тестировщик отправляет запросы к API и проверяет ответы на соответствие ожиданиям.

Тестирование функциональности: Проверяется, что серверные функции работают корректно, включая обработку данных, выполнение бизнес-логики и взаимодействие с базами данных.

Тестирование интеграции: Убеждается в корректном взаимодействии бэкэнда с другими системами и сервисами, такими как внешние API, серверы и хранилища данных.

Тестирование граничных условий: Проверяется поведение бэкэнда при обработке крайних случаев, таких как максимально допустимые значения, пустые данные и ошибки ввода.

Тестирование безопасности: Проверяется защита от уязвимостей, таких как SQL-инъекции, XSS, несанкционированный доступ и утечки данных.

Тестирование на производительность: Оценивается время отклика и нагрузочная способность бэкэнда, хотя для ручного тестирования это может быть ограничено.

Тестирование на соответствие требованиям: Убеждается в том, что бэкэнд соответствует всем функциональным и нефункциональным требованиям, описанным в техническом задании.

19
Q

Где можно посмотреть логи сервера?

A

1)В подах Kubernetes

2) Kibana – визуальный инструмент для Elasticsearch, чтобы взаимодействовать с данными, которые хранятся в индексах ES. Веб-интерфейс Kibana позволяет быстро создавать и обмениваться динамическими панелями мониторинга, включая таблицы, графики и диаграммы, которые отображают изменения в ES-запросах в реальном времени. Примечательно, что изначально Kibana была ориентирована на работу с Logstash, а не на Elasticsearch. Однако, с интеграцией 3-х систем в единую ELK-платформу, Kibana стала работать непосредственно с ES.
Kibana позволяет визуализировать данные ES, а также администрировать базу данных.

20
Q

Как протестировать форму поиска?

A

Для тестирования формы поиска тестировщик может выполнить следующие шаги:

Функциональное тестирование: Проверить, что форма корректно обрабатывает ввод пользователя и выполняет поиск в соответствии с заданными критериями.

Валидация ввода: Убедиться, что форма обрабатывает различные типы ввода (пустые строки, специальные символы, слишком длинные строки) и корректно возвращает ошибки валидации.

Тестирование граничных условий: Проверить работу формы с минимальными и максимальными значениями, а также с пустыми или некорректными данными.

Тестирование производительности: Оценить время отклика формы при запросе большого количества данных или при высокой нагрузке.

Тестирование на соответствие макету: Убедиться, что форма отображается и функционирует в соответствии с дизайном.

Тестирование на различных устройствах и браузерах: Проверить, как форма работает на разных экранах и в различных браузерах, включая мобильные устройства.

Тестирование безопасности: Убедиться, что форма защищена от уязвимостей, таких как XSS или SQL-инъекции.

Тестирование интеграции: Проверить, как форма взаимодействует с другими компонентами сайта или приложения.

Тестировщик должен составить набор тестовых сценариев, которые покрывают все возможные пути использования формы поиска, и выполнить их, чтобы убедиться в ее корректной работе.

21
Q

Что можно делать в Postman

A

В Postman тестировщик может выполнять следующие задачи:

Отправлять HTTP запросы: Postman позволяет отправлять запросы различных типов (GET, POST, PUT, DELETE и др.) к API и веб-сервисам.

Настраивать заголовки и тело запроса: Тестировщик может настроить заголовки, параметры URL, тело запроса (в формате JSON, XML, формы и др.) и другие атрибуты запроса.

Проверять ответы: Postman предоставляет возможность проверять ответы сервера, включая статусный код, заголовки и тело ответа.

Создавать коллекции: Тестировщик может организовать запросы в коллекции, что упрощает управление и повторное использование наборов тестов.

Автоматизировать тесты: Postman поддерживает скрипты JavaScript для автоматизации тестов и проверки ответов с помощью встроенных инструментов тестирования.

Создавать и запускать сквозные тесты: Тестировщик может создать сквозные тесты, которые автоматически запускаются в определенном порядке, чтобы проверить интеграцию между разными частями API.

Аналитика и мониторинг: Postman позволяет отслеживать и анализировать производительность API, а также настраивать уведомления о сбоях и изменениях.

Сотрудничество: Postman поддерживает совместную работу над проектами, включая обмен коллекциями и настройку доступа к ним.

22
Q

Расскажи разницу между коллекцией и окружением

A

Разница между коллекцией и окружением
Коллекция - это собрание объектов, а окружение - это переменные, которые позволяют параметризовать запросы и управлять различными наборами значений.

23
Q

Что такое булевое значение?

A

Булевое значение - это логическое значение, которое может принимать только два значения: истину (True) или ложь (False).

24
Q

Что такое JSON

A

JSON (JavaScript Object Notation) - это текстовый формат для представления данных в виде объектов, который широко используется для обмена данными между приложениями и сервисами.

25
Q

Есть ли тело у GET запроса. Какой эффект будет, если это сделать?

A

GET запросы не могут иметь тело. В HTTP протоколе GET запросы используются для получения данных от сервера, и они не могут содержать тела. Если вы пытаетесь отправить тело в GET запросе, сервер может игнорировать это тело или возвращать ошибку.

26
Q

Где можно посмотреть логи и для чего

A

Логи можно посмотреть в DevTools, Kubernetes, Kibana. Смотрим их для локализации ошибок и для проверки что функционал работает корректно.

27
Q

Как вызывается API?

A
  • Напрямую:
  • Система вызывает функции внутри себя
  • Система вызывает метод другой систем
  • Человек вызывает метод
  • Автотесты дергают методы

Косвенно:
- Пользователь работает с GUI

28
Q

SOAP vs REST (различия)

A

REST — это архитектурный стиль. SOAP — это формат обмена сообщениями.

REST и SOAP
- Специфика SOAP — это формат обмена данными. С SOAP это всегда SOAP-XML, который представляет собой XML.
- Специфика REST — использование HTTP в качестве транспортного протокола. Он подразумевает наилучшее использование функций, предоставляемых HTTP — методы запросов, заголовки запросов, ответы, заголовки ответов и т. д.

Формат обмена сообщениями
- В SOAP вы используете формат SOAP XML для запросов и ответов
- В REST такого фиксированного формата нет. Вы можете обмениваться сообщениями на основе XML, JSON или любого другого удобного формата. JSON является самым популярным среди используемых форматов

Определения услуг
- SOAP использует WSDL (Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML
- REST не имеет стандартного языка определения сервиса. Несмотря на то, что WADL был одним из первых предложенных стандартов, он не очень популярен. Более популярно использование Swagger или Open API

Транспорт
- SOAP не накладывает никаких ограничений на тип транспортного протокола. Вы можете использовать либо Web протокол HTTP, либо MQ
- REST подразумевает наилучшее использование транспортного протокола HTTP

Простота реализации
- REST обычно использует JSON, который легче анализировать и обрабатывать. В дополнение к этому, REST не требует наличия определения службы для предоставления веб-службы
- Однако в случае SOAP вам необходимо определить свой сервис с использованием WSDL, и при обработке и анализе сообщений SOAP-XML возникают большие накладные расходы

29
Q

Принципы REST

A

Есть шесть принципов, на которых строится REST: клиент-серверная модель, отсутствие состояния, кэширование, единообразие интерфейса, многоуровневая система, код по требованию

30
Q

По каким методам работает REST

A

Использует HTTP методы:

OPTIONS. Запрашивает возможности сервера или поддерживаемые им методы.
GET. Используется для запроса содержимого по указанному URI. Может содержать дополнительные параметры после знака вопроса (Query String), например /path/to/page?param1=value1,param2=value2
HEAD. То же, что GET, но запрашивает только заголовки. Обычно используется для проверки указанного адреса или, например, для получения размера документа перед его загрузкой.
POST. Применяется для передачи данных на сервер, таких как заполненные веб-формы или загружаемые файлы.
PUT. Используется для загрузки содержимого запроса по указанному URI. Отличается от POST тем, что, если загружаемые данные уже существуют на сервере, то этот метод обновит их, а не создаст новую копию.
PATCH. То же, что PUT, но применяется к части данных.
DELETE. Удаляет указанные данные с сервера.
TRACE. Позволяет клиенту получить информацию, вносимую или изменяемую промежуточными серверами.
CONNECT. Запускает TCP/IP туннель, то есть двустороннюю связь с сервером.

31
Q

Расскажи про Безопасные и идемпотентные методы

A

Безопасный запрос — это запрос, который не меняет состояние приложения.
Идемпотентный запрос — это запрос, эффект которого от многократного выполнения равен эффекту от однократного выполнения.

Безопасные методы
- GET
- HEAD
- OPTIONS

Идемпотентные методы
- GET
- HEAD
- OPTIONS
- PUT
- DELETE

Небезопасный и неидемпотентный метод
- POST

32
Q

Какие статус коды знаешь?

A

1xx Информационный ответ. Запрос получен и понятен. Обработка запросов продолжается.
2xx Успех. Акция была успешно принята, понята и принята.
3xx Перенаправление. Для выполнения запроса клиент должен принять дальнейшие меры.
4xx Ошибки клиента. Ошибка можно было вызвать клиентом. Запрос содержит плохой синтаксис или не может быть выполнен.
5xx Ошибки сервера. Сервер столкнулся с ошибкой и не выполнил запрос.

Доп:
Статус-код 201 — это код статуса, который подтверждает, что запрос был успешным и, как следствие, был создан новый ресурс

Статус-код 204 – Этот код статуса подтверждает, что сервер выполнил запрос, но не нуждается в возврате информации. Примеры этого кода статуса включают запросы на удаление или если запрос был отправлен через форму, и ответ не должен вызывать обновление формы или загрузку новой страницы.

Код статуса 401 – Этот запрос кода статуса возникает, когда требуется проверка подлинности, но она не была предоставлена или не была предоставлена.

Код статуса 401 Это происходит, если клиенту/пользователю требуется необходимое разрешение или ему может понадобиться учетная запись для доступа к ресурсу.

33
Q

Расскажи структуру HTTP запроса и ответа

A

HTTP запрос состоит из следующих частей:

Псевдозаголовок: Это неформальная часть, которая обычно включает в себя метод запроса, URI и версию HTTP. Например: GET /index.html HTTP/1.1.

Заголовки запроса: Это набор пар “ключ-значение”, которые предоставляют дополнительную информацию о запросе. Например: Host: www.example.com, User-Agent: Mozilla/5.0, Accept: text/html.

Пустая строка: После заголовков запроса следует пустая строка, обозначающая конец заголовков.

Тело запроса: Это необязательная часть, которая содержит данные, передаваемые серверу. Например, в запросе POST тело может содержать данные формы.

Структура HTTP ответа:

HTTP ответ состоит из следующих частей:

Псевдозаголовок: Это неформальная часть, которая обычно включает в себя версию HTTP, статусный код и статусную строку. Например: HTTP/1.1 200 OK.

Заголовки ответа: Это набор пар “ключ-значение”, которые предоставляют дополнительную информацию о ответе. Например: Content-Type: text/html, Content-Length: 1234, Date: Mon, 27 Jul 2023 12:28:53 GMT.

Пустая строка: После заголовков ответа следует пустая строка, обозначающая конец заголовков.

Тело ответа: Это необязательная часть, которая содержит данные, передаваемые клиенту. Например, в ответе на запрос GET тело может содержать HTML-код страницы.

34
Q

Что такое Restful

A

RESTful («restful» с англ. «успокоительный», «спокойный») - это ряд принципов, по котором в идеале нужно работать.

Основные принципы REST
- единый интерфейс
- разграничение клиента и сервера
- нет сохранения состояния
- кэширование всегда разрешено
- многоуровневая система
- код предоставляется по запросу

35
Q

Что происходит, когда пользователь вводит что-то в поисковой строке

A
  1. Пользователь вводит в браузере адрес сайта
  2. Браузер начинает искать сервер
  3. Браузер отправляет запрос к DNS-серверам
  4. Браузер устанавливает соединение с сервером
  5. Браузер отправляет HTTP-запрос, чтобы получить контент сайта
  6. Сервер обрабатывает запрос
  7. Сервер отправляет ответ браузеру
  8. Браузер обрабатывает полученный ответ и «рисует» веб-страницу
36
Q

Где передаются пароль и логин

A

В header (метод POST).
Заголовок HTTP Authorization request header можно использовать для предоставления учетных данных, которые аутентифицируют пользовательский агент на сервере, разрешая доступ к защищенному ресурсу . Заголовок Authorization обычно, но не всегда, отправляется после того, как пользовательский агент впервые попытается запросить защищенный ресурс без учетных данных

37
Q

Как Вы будете тестировать форму авторизации

A

Проверка авторизации пользователя
- Успешная авторизация, используя валидный логин и пароль. В данном случае валидный логин и пароль подразумевает под собой соответствие предполагаемым требованиям
- Не успешная авторизация, используя невалидный логин и валидный пароль
- Не успешная авторизация, используя валидный логин и невалидный пароль

Проверка поля “логин”
- Проверка появления подсказки, при вводе неверного (не валидного) логина
- Буквы, цифры, специальные символы - все вместе
- Пробел в начале/середине/конце строки
- Только пробел
- Возможность копирования в поле текста
- Символы конца строки (\n, \r)
- Перенос строки
- Проверка минимального/среднего/максимального количества символов
- Больше максимального кол-ва символов
- Меньше минимального кол-ва символов
- Пустая строка
- SQL-инъекции
- XSS инъекции
- НТМL-инъекции
- Только цифры
- Проверка ASCII
ASCII — название таблицы, в которой некоторым распространённым печатным и непечатным символам сопоставлены числовые коды
- Расположение поля “логин” в пределах формы авторизации
- Видимость поля “логин”
- Видимость введенных данных в поле “логин”

Проверка поля “пароль”
- Проверка, что вводимый пароль скрывается астерисками
- Проверка появления подсказки, при вводе неверного (не валидного) пароля
- Буквы, цифры, специальные символы - все вместе
- Проверка ASCII
- …. далее все аналогично проверки поля “логин”
- Расположение поля “пароль” в пределах формы авторизации
- Введенные данные отображаются в поле “пароль”

Тестирование кнопки авторизации
- Проверка работоспособности кнопки (после нажатия идет авторизация пользователя)
- Проверка видимости кнопки
- Кнопка находится в пределах формы авторизации
- Кнопка неактивна, пока пользователь не заполнит поле “логин” и “пароль”
- Кнопка активна, пока пользователь не заполнит поле “логин” и “пароль”

38
Q

Как протестировать безопасность сайта

A

Тестирование безопасности — отдельный раздел тестирования. Специалисты по безопасности уже не ручные тестировщики, не автоматизаторы, они занимаются именно своей областью.

Простые смертные могут искать простейшие уязвимости в своем приложении — SQL-инъекции, XSS-атаки и прочее.

SQL инъекция — это один из самых доступных способов взлома сайта. Суть таких инъекций – внедрение в данные (передаваемые через GET, POST запросы или значения Cookie) произвольного SQL кода. Если сайт уязвим и выполняет такие инъекции, то по сути есть возможность творить с БД (чаще всего это MySQL) что угодно.

XSS (межсайтовый скриптинг) – одна из разновидностей атак на веб-системы, которая подразумевает внедрение вредоносного кода на определенную страницу сайта и взаимодействие этого кода с удаленным сервером злоумышленников при открытии страницы пользователем.

Инъекции Hypertext Markup Language (HTML), также иногда называемые виртуальным дефейсом. Они являются типом атаки, которая благодаря отсутствию надлежащей обработки пользовательского ввода позволяет злоумышленнику встроить на сайт собственный HTML-код.

39
Q

При GET-запросе отображается белое окно. Что будете делать?

A
  1. Посмотреть логи в DevTools
  2. Почистить Cookies
40
Q

Отличия POST, PUT, PATCH

A

POST — создание ресурса
PUT — замена ресурса целиком
PATCH — редактирование ресурса

41
Q
A