Найти в Дзене
Блог тестировщика

Что такое URL? Из чего состоит URL и почему это необходимо знать тестировщикам?

Прошлая часть: Что такое интерфейс и что такое API И снова здравствуйте. Если вы до сих пор читаете мои статьи (весь этот поток сознания) - большое спасибо. А теперь - погнали к следующей теме.
В предыдущих главах мы разобрались с интерфейсами и API. Теперь давайте перейдем к вопросу: «Как клиент и сервер находят друг друга в сети?». Для этого нам понадобится понять, что такое URL, из чего он состоит и какую роль играет в тестировании веб-приложений. Но прежде, чем перейти к понятию «URL» сначала введем понятие «ресурс», чтобы упростить объяснение темы. Когда мы заходим в интернет – каждый из нас преследует цель получить что-то «полезное». Даже если вашей целью является посмотреть упоротый ролик или мем – именно этот объект является вашей «целью» и этот «объект» располагается где-то в определенном месте. Вот именно то, что является целью пользователя в сети мы и будем называть «ресурс». Ресурс — это объект, данные или функционал, доступные в сети. Это может быть: И так далее… Вот прос
Оглавление

Прошлая часть: Что такое интерфейс и что такое API

И снова здравствуйте. Если вы до сих пор читаете мои статьи (весь этот поток сознания) - большое спасибо. А теперь - погнали к следующей теме.
В предыдущих главах мы разобрались с интерфейсами и API. Теперь давайте перейдем к вопросу:
«Как клиент и сервер находят друг друга в сети?». Для этого нам понадобится понять, что такое URL, из чего он состоит и какую роль играет в тестировании веб-приложений. Но прежде, чем перейти к понятию «URL» сначала введем понятие «ресурс», чтобы упростить объяснение темы.

Что такое «ресурс»?

Когда мы заходим в интернет – каждый из нас преследует цель получить что-то «полезное». Даже если вашей целью является посмотреть упоротый ролик или мем – именно этот объект является вашей «целью» и этот «объект» располагается где-то в определенном месте. Вот именно то, что является целью пользователя в сети мы и будем называть «ресурс». Ресурс — это объект, данные или функционал, доступные в сети. Это может быть:

  1. Веб-страница (например, статья в блоге).
  2. Изображение, видео или аудиофайл.
  3. API какого-то сервера (например, /filmsCategory/comedy для получения списка фильмов-комедий).
  4. Форма для отправки данных на сервер.

И так далее…

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

Что такое URL?

Теперь представим, что вы отправляетесь в путешествие. Чтобы добраться до места назначения, вам нужен адрес. Например, «г. Самара, ул. Пупалуповская, дом 10, квартира 5». Этот адрес поможет вам добраться до интересующей вас квартиры, то есть до «ресурса». В сети есть аналог для этого.

Это URL (Uniform Resource Locator) – унифицированный (или же единообразный) указатель ресурса. Он выполняет аналогичную роль — это «адрес», по которому браузер находит нужную страницу, изображение или любой другой ресурс. Например:

«https://youtube.com/watch?v=dQw4w9WgXcQ»

Этот URL говорит браузеру: «Найди видео с идентификатором dQw4w9WgXcQ на сайте youtube.com». Но URL — не просто строка. Это строка, состоящая из важных частей и имеющая определенную структуру. Теперь разбираемся в самой структуре.

Из чего состоит URL?

В качестве примера для разбора состава URL мы возьмем абстрактный сайт, на котором люди ведут свои блоги и пишут на них статьи на определенную тематику. Наш гипотетический URL будет иметь следующий вид:

«https://example.ru/blog/qaLearning/articles?name=testing&sort=asc»

Протокол

Протокол — это «способ передвижения» к ресурсу. В жизни вы можете выбрать способ передвижения к конкретному месту — на машине, автобусе или пешком. По безопасной дороге или через «плохой район». В сети протокол определяет, как браузер подключается к серверу. Основные протоколы:

  1. HTTP (http://)— стандартный, но небезопасный. Если ваш запрос перехватит злоумышленник – он может без труда украсть ваши данные.
  2. HTTPS (https://)— защищенная версия. Даже если ваш запрос перехватят по пути от клиента до сервера – данные в запросе будут в зашифрованном виде.

Если URL в целом — адрес дома, то протокол — это средство передвижения и дорога, по которой вы добираетесь до этого дома.

Домен

Домен (доменное имя, или доменный адрес) — уникальное имя сайта в сети. На каждом из этих сайтов вы найдете ресурсы, которые сгруппированы по какому-то логическому признаку. В нашем примере это сайт «example.ru» и он агрегирует статьи и блоги на различные тематики. В аналогии с адресом — это как название города и улицы.

Путь

Путь указывает на конкретную страницу или раздел. В аналогии с адресом – это как номер интересующей вас квартиры в здании. В примере путь «blog/qaLearning/articles», а если быть точнее «blog/<идентификатор пользователя>/articles» ведет к статьям (articles) в блоге(blog) конкретного автора (qaLearning). Если теоретически предположить, что у нас есть второй автор с идентификатором «umpaLumpa», то путь до его статей будет выглядеть как «blog/umpaLumpa/articles»

Параметры пути

Параметр пути (или Path параметры, или URI параметры) — это та часть пути, которая может изменяться в зависимости от того чьи именно ресурсы вы хотите получить. В нашем примере параметром пути является идентификатор конкретного пользователя, чьи статьи мы собираемся просматривать – «qaLearning» если вы хотите посмотреть статьи этого автора, ну или «umpaLumpa», если вы хотите посмотреть статьи автора umpaLumpa.

Если приводить аналогию с адресом – это как выбрать одну или несколько квартир в доме, у которых какой-то конкретный владелец.

Параметры запроса

Параметры запроса (или Query параметры, или просто параметры), это та часть пути, которая указывается после знака вопроса «?» в URL. Стоит отметить, что в отличии от параметров пути с данными параметрами вы будете работать гораздо чаще. В нашем примере параметрами запроса являются «?name=testing&sort=asc» Они уточняют, что именно нужно показать пользователю. Разбираем наш пример:

  1. Знак вопроса «?» обозначает, что всё что идет после него – это параметры запроса.
  2. name=testing — загрузить статьи, которые содержат в названии слово «testing»
  3. Знак «&» обозначает что есть еще один параметр запроса
  4. sort=asc — отсортировать статьи «по возрастанию» названия, то есть в алфавитном порядке.

Если проводить аналогию с адресом – это как выбрать в конкретной квартире тарелки определенного цвета и отсортировать их по размеру.

Что такое IP-адрес, порт и DNS. Как они связаны с URL?

IP-адрес

IP-адрес — числовой идентификатор устройства в сети (например, 192.168.1.1). Так как сервер, к которому обращается клиент, является устройством в сети – у него тоже есть конкретный IP-адрес. При этом сам сервер не знает – является ли он сервером сайта для блогов или является ли он сервером высоконагруженного банковского приложения. Но сервер точно знает:

  1. Список своих API. Ну или говоря по-простому – перечень полезных работ, которые он в состоянии выполнить.
  2. Что делать, если к нему пришел запрос к конкретному API и какую полезную работу в этом случае выполнить.

Если проводить аналогию с адресом, то IP-адрес это аналог долготы и широты конкретной точки на планете земля. По одним координатам вы можете попасть в поле, по другим в тайгу, а по третьим в пункт выдачи заказов, в который вы так непреодолимо хотели попасть

Порт

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

Разберем подробнее – предположим, что у вас сейчас финансовые трудности и из-за этого вы вынуждены развернуть 2 совершенно разных приложения на одном компьютере (то есть сервере). Одно из приложений отвечает за доставку цветов, а второе приложение отвечает за перевод текстов с русского языка на испанский. Приложения имеют совершенно разные API, но при этом крутятся на одной машине, то есть на одном IP-адресе.

Допустим ваш IP адрес равен 111.112.113.114. Для того чтобы разделить запросы к приложениям вы сделали простое разделение – для приложения по доставке цветов вы выделили порт с номером 8085, а для приложения по переводу текста 8086. Теперь все запросы к https:// 111.112.113.114:8085/ будут открывать доступ к ресурсам приложения доставки цветов, а запросы к https:// 111.112.113.114:8086/ будут открывать доступ до ресурсов приложения по переводу текстов.

Как вы могли заметить – целевой «порт» указывается через двоеточия ":" после IP-адреса.

Если проводить аналогию с адресами в городе – то «порт» это дверь в здание. В вашем здании может быть вход в магазин, вход в пункт выдачи заказов, вход в ресторан и входы в подъезды для жильцов. В зависимости от выбора входа – вы получите соответствующий результат (ну или не получите, если вас не пустят).

DNS

DNS (или Domain Name System, или система доменных имён) – это распределенная система для получения информации о доменах. Из этого определения мало что понятно, так что прибегнем к более простому определению. Это система, которая на основании «домена» (то есть красивого и понятного для человека названия) предоставляет соответствие на какое сочетание IP-адрес + порт необходимо отправить запрос.

Если очень сильно упрощенно представить это на картинке – она будет выглядеть вот так:

По аналогии с адресами в реальной жизни будет примерно так. Вы приехали в незнакомый город и спрашиваете у жителя этого города «Где здесь находится <называете желаемый адрес>». Житель города вам подробно рассказывает, как вам необходимо пройти до желаемого здания. В данном случае житель выступает в роли DNS.

Добавлю также очевидный факт – данная технология придумана для того, чтобы вам было проще запомнить адрес в сети. Согласитесь, что проще запомнить комбинацию букв «google.com» вместо набора «10.183.14.154:8081».

Как связаны IP-адрес, порты и DNS

Краткий итог. Когда вы вводите домен в браузере, происходит следующее:

  1. Браузер обращается к DNS-серверу.
  2. DNS преобразует example.com в IP-адрес и порт (например, 93.184.216.34:8081).
  3. Браузер подключается к серверу по этому IP-адресу и загружает страницу.

Зачем тестировщику знать всё это?

Когда вы будете тестировать web-приложения – вы всегда должны быть уверены, что ваш запрос уходит на правильный сервер. Скорее всего вы будете находиться в ситуации, когда у вас будет несколько тестовых стендов с разными версиями приложений. Эти сервера будут иметь разные IP-адреса или доменные имена. Например:

  1. Тестовый стенд с версией ПО X будет располагаться по адресу «dev.test.supercompany.ru»
  2. Тестовый стенд с версией ПО Y будет располагаться по адресу «ift.test.supercompany.ru»

К слову, не все компании балуют и присваивают тестовым серверам конкретные доменные имена – так что иногда вам придется ориентироваться по IP-адресам. Так что комбинации IP-адрес и порт не должны вас пугать.

Но, кроме этого, понимание состава URL может помочь вам в локализации ошибок или выявлении потенциальных проблем. Например:

Проверка корректности ссылок

Неправильный URL (например, /blg вместо /blog) приводит к ошибке 404. Вы должны убедиться, что все пути ведут куда нужно.

Анализ параметров

Страницы могут менять содержимое в зависимости от параметров. Например:

  1. «sort=asc» — сортировка по возрастанию.
  2. «color=red» — отображение товара красного цвета.

Нужно проверить комбинации и корректность их работы в соответствии с требованиями.

Безопасность

Если URL содержит токены или идентификаторы (например, «?user_id=456»), тестировщик должен убедиться, что эти данные не передаются в открытом виде. Так же стоит убедиться, что присутствует разграничение доступа в соответствии с ролевой моделью. Если пользователь X может получить данные, которые ему недоступны просто указав чужие параметры в запросе – это определенные проблемы с безопасностью в системе.

Работа с протоколами

Сайт должен корректно работать по тому протоколу, с которым он должен работать. Например, если страница использует HTTPS, но загружает изображения, видео или иные данные по протоколу HTTP — это потенциальная дыра в безопасности системы.

Тестирование граничных случаев

Вы, как тестировщик, должны понимать, что параметры в URL можно заполнять вручную. Это добавляет тестовые сценарии для проверок. Например:

  1. Что произойдет, если передать неверный параметр (например, id=abc вместо числа)?
  2. Что произойдет, если передать пустой параметр (например, id=)?
  3. Что произойдет, если передать несуществующий параметр (например, id=999999999999999)?
  4. Как сервер обработает слишком длинный URL? (Спойлер – длина URL не бесконечна и в него нельзя передавать слишком много параметров).

Итоги

Подведем итог. URL — это не просто строка, а точный адрес ресурса в сети. Понимание его структуры поможет вам:

1) Находить ошибки в ссылках и параметрах.

2) Проверять безопасность передачи данных.

3) Анализировать взаимодействие клиента и сервера.

Теперь, видя URL, вы можете «прочитать» его, как профессионал и на что обратить внимание при тестировании.

Следующая часть: <Будет скоро ... а может быть и нет>

Поддержать или поблагодарить можете:

Лайком;

Комментарием;

Подпиской на канал;