Сегодня у нас тема сразу про два ИТ-раздела: про бэкенд-разработку и её тестирование. Но про тестирование всё же больше, потому что надо, чтобы всё работало (а не просто как-то крутилось на сервере).
Что такое бэкенд
Упрощённо фронтенд и бэкенд можно поделить так:
- Фронтенд — видимая часть программы. Это всё, что видит и с чем взаимодействует пользователь — темы приложения, картинки, кнопки, формы для заполнения, интерфейс.
- Бэкенд — невидимая часть, которая поддерживает фронтенд. Когда пользователь нажимает на кнопку или заполняет форму, с сервера возвращаются заготовленные файлы или в базу данных записываются нужные данные.
Вокруг фронтенда и бэкенда появилось большинство остальных профессий в ИТ: кто-то оптимизирует и упрощает работу, кто-то работает только с фронтендом, кто-то — с бэкендом. Тестировщики помогают проверять работу всего сервиса, чтобы при выходе программы она работала как надо — или максимально близко к этому.
Какие классические части включает в себя бэкенд:
- Сервер — часть программы, которая работает с запросами приложения, обменивается данными с фронтендом и ведёт другую важную работу.
- Базы данных — хранилища, которые собирают всю необходимую фронтенду и бэкенду информацию.
- API — часть сервера для связи с другими программами. Это язык, на котором к сервису могут обращаться другие приложения и просить что-то сделать. Например, прислать список продуктов на складе или какую-то нужную информацию. Существует много способов написать API, одним из самых популярных и распространённых считается REST.
И вот это всё надо тестировать. Работы много и на всё нужны специалисты, потому что нейронки не могут сломать и проверить на прочность всё так, как это умеет человек :)
Зачем тестировать бэкенд
Как и любая программа, которой будут пользоваться люди, бэкенд нужно проверять на то, работает ли он как задумано.
Если этого не делать, есть высокий риск отдать людям плохо работающее и потенциально небезопасное приложение:
- При запросе одной страницы будет появляться другая.
- Запросы будут обрабатываться долго, сервис может зависать.
- В периоды праздников сервер будет недоступен, потому что окажется не готов к увеличенной нагрузке. Распродажи и раздачи бесплатных доступов к чему-то — сюда же.
- Личные данные пользователей из баз данных окажутся в открытом доступе.
Тестировщики должны выявить все проблемы на раннем этапе и указать на них остальной команде, чтобы те могли заранее исправить все ошибки (или превратить их в фичи).
Направления тестирования бэкенда
Тестирование бэкенда будет различаться в зависимости от того, что именно проверяют.
Тестирование API. Программный интерфейс приложения нужен для взаимодействия не только между программами, но и между внутренними компонентами сервисов. Это как мост между приложениями, фронтендом и бэкендом и мобильными сервисами. Если его не тестировать, может не работать авторизация, мобильные платежи, а данные с сервера могут попадать на фронтенд с ошибками.
Автотесты. Тесты с помощью инструментов для автоматической проверки. Они нужны для повторяющихся сценариев, экономят время проверок и повышают эффективность работы разработчиков: если в коде что-то не так, автотесты сразу это покажут.
Тестирование баз данных. Проще говоря — проверка целостности и безопасности данных. Тестирование БД гарантирует, что процессы хранения и доступа к данным работают правильно.
Функциональное тестирование. Это тест того, что бэкенд соответствует заявленным функциям и работает как задумано. Обычно все думают, что тестировщики проверяют только это, но ФТ — это лишь капля в море того, что надо проверять.
Нефункциональное тестирование. Оценка производительности бэкенда под нагрузкой: масштабируемость, безопасность, скорость.
Структурное тестирование. Проверка внутренней структуры кода и архитектуры, которая требует знания кодовой базы.
Модульное тестирование. Тестирование отдельных компонентов, функций и классов.
Инструменты для тестирования
Чтобы проверять работу программ, есть много других программ-сервисов, которые упрощают жизнь тестировщиков и разработчиков. Здесь мы коротко расскажем про несколько популярных инструментов, а по самым интересным и полезным напишем отдельные статьи.
👉 У каждого сервиса есть аналоги и альтернативы, поэтому необязательно пользоваться чем-то одним — можно попробовать остальные и остановиться на том, что больше нравится или лучше подходит под конкретную задачу.
Swagger
Инструмент документации REST API.
REST API состоит из запросов к серверу, которые называются эндпойнтами, и какой-то информации, которую сервер в ответ на эти эндпойнты возвращает. Например, в ответ на запрос сервер может вернуть список космонавтов на Международной космической станции и её координаты.
Когда бэкенд-разработчики создают программный интерфейс приложения, им нужно объяснить принцип его работы:
- фронтенд-разработчикам, которые будут связывать видимые пользователям части программы с этим API;
- всем, кто ещё будет использовать этот API;
- компьютерам, чтобы они тоже понимали принципы работы другой программы и умели с ней взаимодействовать.
👉 В современной разработке не нужно создавать документацию формата Swagger вручную. Фреймворки вроде Django и FastAPI сами создают и обновляют её в процессе написания кода.
Иногда при какой-то сложной специфичной работе приходится писать документацию вручную, но это редко и неудобно: все изменения тоже надо заносить в документацию, и есть риск что-то забыть. Но бывает и такое, да.
Работа Swagger выглядит так:

Тут виден список эндпойнтов, разделённых по цветам (это тип запроса) и тексту самого эндпойнта — это URL, который можно отправить на бэкенд. Если развернуть каждую из этих ссылок, документация покажет дополнительные параметры и даст возможность протестировать запрос.
Postman
Ещё один инструмент для работы с API.
Если Swagger направлен в основном на то, чтобы получать удобную автоматическую документацию REST API и тестировать простые запросы, то Postman — более продвинутый инструмент, который работает со всеми видами API и может реализовать сложные варианты тестирования.
Это один из самых популярных инструментов для работы с API. Его можно использовать онлайн, установить как десктоп-приложение или добавить плагин в IDE.
Так выглядит просто создание запроса при работе с плагином в Visual Studio Code:

Ещё в Postman тоже можно создавать документацию, и у такого способа есть несколько плюсов перед документацией в Swagger. Но это большая тема, про неё мы расскажем в отдельной статье.
Apache JMeter
Написанный на языке Java сервис для проведения нагрузочного тестирования.
Нагрузочное тестирование проверяет, с какой загруженностью может справиться сервер. Такие тесты имитируют реальное поведение пользователей и говорят: выше этого количества система не выдержит. После этого можно понять, как поведёт себя программа под нагрузкой во время наплыва посетителей из-за распродаж, акций или отключения сервисов конкурентов.
JMeter популярен по нескольким причинам:
- Он бесплатный.
- Его можно гибко настраивать под разные задачи.
- Имеет графический интерфейс — и это удобно для тех, кто только начинает им пользоваться.
- У JMeter большое сообщество пользователей, которые могут подсказать, когда что-то не получается.

Какие есть аналоги:
- WebLOAD,
- LoadNinja,
- LoadRunner,
- LoadUI,
- NeoLoad.
SQL-клиенты
Приложения тестирования баз данных.
Базы данных — хранилище приложения, где лежат пользователи, заказы, настройки и другая важная информация. Чтобы проверить, что с ней всё в порядке, используют специальные программы, которые умеют заглянуть внутрь БД, сделать запросы и проанализировать результаты. А ещё они могут сымитировать нагрузку на базу данных и посмотреть, сколько запросов в секунду (и какой сложности) она может выдержать.
Такие программы выпускают сами создатели баз данных, а ещё есть подобный софт от сторонних разработчиков:
- pgAdmin — официальный клиент для баз данных PostgreSQL;
- MySQL Workbench — официальный клиент для баз данных MySQL;
- DBeaver — универсальный и бесплатный;
- TablePlus — универсальный, но платный.
Чаще всего SQL-клиенты нужно отдельно установить на компьютер и запускать как приложения со своим интерфейсом. Пример — DBeaver:

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

Правда, есть нюанс: при использовании Pytest могут быть проблемы совместимости с другими фреймворками. Но зато сам Pytest можно расширить дополнительными плагинами, если каких-то возможностей не хватает.
OWASP ZAP
Бесплатный инструмент проверки безопасности, который помогает находить уязвимости в веб-приложениях.
Какие проблемы может помочь найти OWASP ZAP:
- ненадёжная аутентификация;
- утечка личных данных;
- ошибки в настройках безопасности;
- SQL-инъекции;
- межсайтовый скриптинг (XSS).
Устанавливается как десктопное приложение со своим интерфейсом (олды увидят здесь много знакомого):

В чём особенности:
- Сервис ищет уязвимости в работающем приложении, ему не нужен доступ к исходному коду.
- У самого ZAP открытый исходный код, что важно при работе с безопасностью.
- Подходит для ручного и автоматического тестирования.
Где научиться тестировать бэкенд
Тестировать приложения, использовать сложные инструменты и находить уязвимости учат на курсах Яндекс Практикума.
В тестировании есть из чего выбрать: можно проходить базовый или расширенный курс на инженера-тестировщика и научиться автоматизированному тестированию на Python и Java. Учиться помогут практикующие наставники из современных ИТ-компаний, а за время курса можно будет собрать проекты в портфолио.
Почти во всех курсах есть бесплатная часть, поэтому если вам хочется понять, нравится ли вам искать баги и ошибки разработчиков, — приходите и попробуйте.
Вам слово
Приходите к нам в соцсети поделиться своим мнением о статье и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте: шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!