Как тестируют бэкенд

Если этого не делать, сломается весь интернет

Как тестируют бэкенд

Сегодня у нас тема сразу про два ИТ-раздела: про бэкенд-разработку и её тестирование. Но про тестирование всё же больше, потому что надо, чтобы всё работало (а не просто как-то крутилось на сервере).

Что такое бэкенд

Упрощённо фронтенд и бэкенд можно поделить так:

  • Фронтенд — видимая часть программы. Это всё, что видит и с чем взаимодействует пользователь — темы приложения, картинки, кнопки, формы для заполнения, интерфейс.
  • Бэкенд — невидимая часть, которая поддерживает фронтенд. Когда пользователь нажимает на кнопку или заполняет форму, с сервера возвращаются заготовленные файлы или в базу данных записываются нужные данные.

Вокруг фронтенда и бэкенда появилось большинство остальных профессий в ИТ: кто-то оптимизирует и упрощает работу, кто-то работает только с фронтендом, кто-то — с бэкендом. Тестировщики помогают проверять работу всего сервиса, чтобы при выходе программы она работала как надо — или максимально близко к этому.

Какие классические части включает в себя бэкенд:

  • Сервер — часть программы, которая работает с запросами приложения, обменивается данными с фронтендом и ведёт другую важную работу.
  • Базы данных — хранилища, которые собирают всю необходимую фронтенду и бэкенду информацию.
  • API — часть сервера для связи с другими программами. Это язык, на котором к сервису могут обращаться другие приложения и просить что-то сделать. Например, прислать список продуктов на складе или какую-то нужную информацию. Существует много способов написать API, одним из самых популярных и распространённых считается REST.

И вот это всё надо тестировать. Работы много и на всё нужны специалисты, потому что нейронки не могут сломать и проверить на прочность всё так, как это умеет человек :)

Зачем тестировать бэкенд

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

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

  • При запросе одной страницы будет появляться другая.
  • Запросы будут обрабатываться долго, сервис может зависать.
  • В периоды праздников сервер будет недоступен, потому что окажется не готов к увеличенной нагрузке. Распродажи и раздачи бесплатных доступов к чему-то — сюда же.
  • Личные данные пользователей из баз данных окажутся в открытом доступе.

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

Вам может быть интересно:

Направления тестирования бэкенда

Тестирование бэкенда будет различаться в зависимости от того, что именно проверяют.

Тестирование API. Программный интерфейс приложения нужен для взаимодействия не только между программами, но и между внутренними компонентами сервисов. Это как мост между приложениями, фронтендом и бэкендом и мобильными сервисами. Если его не тестировать, может не работать авторизация, мобильные платежи, а данные с сервера могут попадать на фронтенд с ошибками.

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

Тестирование баз данных. Проще говоря — проверка целостности и безопасности данных. Тестирование БД гарантирует, что процессы хранения и доступа к данным работают правильно.

Функциональное тестирование. Это тест того, что бэкенд соответствует заявленным функциям и работает как задумано. Обычно все думают, что тестировщики проверяют только это, но ФТ — это лишь капля в море того, что надо проверять.

Нефункциональное тестирование. Оценка производительности бэкенда под нагрузкой: масштабируемость, безопасность, скорость.

Структурное тестирование. Проверка внутренней структуры кода и архитектуры, которая требует знания кодовой базы.

Модульное тестирование. Тестирование отдельных компонентов, функций и классов.

Инструменты для тестирования

Чтобы проверять работу программ, есть много других программ-сервисов, которые упрощают жизнь тестировщиков и разработчиков. Здесь мы коротко расскажем про несколько популярных инструментов, а по самым интересным и полезным напишем отдельные статьи.

👉 У каждого сервиса есть аналоги и альтернативы, поэтому необязательно пользоваться чем-то одним — можно попробовать остальные и остановиться на том, что больше нравится или лучше подходит под конкретную задачу.

Swagger

Инструмент документации REST API.

REST API состоит из запросов к серверу, которые называются эндпойнтами, и какой-то информации, которую сервер в ответ на эти эндпойнты возвращает. Например, в ответ на запрос сервер может вернуть список космонавтов на Международной космической станции и её координаты.

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

  • фронтенд-разработчикам, которые будут связывать видимые пользователям части программы с этим API;
  • всем, кто ещё будет использовать этот API;
  • компьютерам, чтобы они тоже понимали принципы работы другой программы и умели с ней взаимодействовать.

👉 В современной разработке не нужно создавать документацию формата Swagger вручную. Фреймворки вроде Django и FastAPI сами создают и обновляют её в процессе написания кода. 

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

Работа Swagger выглядит так:

Источник: swagger.io

Тут виден список эндпойнтов, разделённых по цветам (это тип запроса) и тексту самого эндпойнта — это URL, который можно отправить на бэкенд. Если развернуть каждую из этих ссылок, документация покажет дополнительные параметры и даст возможность протестировать запрос.

Postman

Ещё один инструмент для работы с API.

Если Swagger направлен в основном на то, чтобы получать удобную автоматическую документацию REST API и тестировать простые запросы, то Postman — более продвинутый инструмент, который работает со всеми видами API и может реализовать сложные варианты тестирования.

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

Так выглядит просто создание запроса при работе с плагином в Visual Studio Code:

Источник: thecode.media

Ещё в Postman тоже можно создавать документацию, и у такого способа есть несколько плюсов перед документацией в Swagger. Но это большая тема, про неё мы расскажем в отдельной статье.

Apache JMeter

Написанный на языке Java сервис для проведения нагрузочного тестирования.

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

JMeter популярен по нескольким причинам:

  • Он бесплатный.
  • Его можно гибко настраивать под разные задачи.
  • Имеет графический интерфейс — и это удобно для тех, кто только начинает им пользоваться.
  • У JMeter большое сообщество пользователей, которые могут подсказать, когда что-то не получается.

Какие есть аналоги:

  • WebLOAD,
  • LoadNinja,
  • LoadRunner,
  • LoadUI,
  • NeoLoad.

SQL-клиенты

Приложения тестирования баз данных.

Базы данных — хранилище приложения, где лежат пользователи, заказы, настройки и другая важная информация. Чтобы проверить, что с ней всё в порядке, используют специальные программы, которые умеют заглянуть внутрь БД, сделать запросы и проанализировать результаты. А ещё они могут сымитировать нагрузку на базу данных и посмотреть, сколько запросов в секунду (и какой сложности) она может выдержать.

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

  • pgAdmin — официальный клиент для баз данных PostgreSQL;
  • MySQL Workbench — официальный клиент для баз данных MySQL;
  • DBeaver — универсальный и бесплатный;
  • TablePlus — универсальный, но платный.

Чаще всего SQL-клиенты нужно отдельно установить на компьютер и запускать как приложения со своим интерфейсом. Пример — DBeaver:

Источник: www.youtube.com

Pytest

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

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

Источник: thecode.media

Правда, есть нюанс: при использовании Pytest могут быть проблемы совместимости с другими фреймворками. Но зато сам Pytest можно расширить дополнительными плагинами, если каких-то возможностей не хватает.

OWASP ZAP

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

Какие проблемы может помочь найти OWASP ZAP:

  • ненадёжная аутентификация;
  • утечка личных данных;
  • ошибки в настройках безопасности;
  • SQL-инъекции;
  • межсайтовый скриптинг (XSS).

Устанавливается как десктопное приложение со своим интерфейсом (олды увидят здесь много знакомого):

Источник: zaproxy.org

В чём особенности:

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

Где научиться тестировать бэкенд

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

В тестировании есть из чего выбрать: можно проходить базовый или расширенный курс на инженера-тестировщика и научиться автоматизированному тестированию на Python и Java. Учиться помогут практикующие наставники из современных ИТ-компаний, а за время курса можно будет собрать проекты в портфолио.

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

Вам слово

Приходите к нам в соцсети поделиться своим мнением о статье и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте: шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!

Обложка:

Алексей Сухов

Корректор:

Елена Грицун

Вёрстка:

Кирилл Климентьев

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
А вы читали это?
hard
[anycomment]
Exit mobile version