При подключении API к программе могут возникать разные проблемы и ошибки — как из-за кода самого API, так и из-за неправильного подключения. Искать такие ошибки — задача тестировщика.
Существует шесть видов тестирования API — в зависимости от того, что именно проверяет тестировщик:
1. Тестирование методов
Каждый метод API проверяют по отдельности — чтобы убедиться, что они работают правильно и возвращают ожидаемые результаты. Тестирование включает проверку входных данных, выполнение операций и проверку вывода.
2. Тестирование взаимодействий
Проверка взаимодействия API с другими API, компонентами программы и сервисами. Показывает, что он успешно отправляет и получает данные, а также обрабатывает различные сценарии использования.
3. Тестирование авторизации и аутентификации
Проверка доступа к API: как работают механизмы авторизации, кто и к каким функциям и данным имеет доступ.
4. Тестирование обработки ошибок
Проверка поведения API в случае непредвиденных ситуаций и ошибок — например, передачи некорректных данных. Позволяет убедиться, что API правильно обрабатывает исключения и передаёт в программу верные коды ошибок.
5. Тестирование производительности
Проверка работы API при повышенных нагрузках — его пропускной способности и производительности. Позволяет убедиться, что API не «отвалится» в случае повышенного спроса на программу.
6. Тестирование безопасности
Проверка уязвимостей безопасности API, которая помогает предотвратить утечку данных или несанкционированный доступ. Проверяются меры безопасности API и проводятся тесты на проникновение для установления возможных уязвимостей.
Чтобы создавать надёжные и эффективные тесты API, тестировщики придерживаются нескольких принципов:
✅Использовать правильные и разнообразные входные данные
При тестировании важно использовать разные типы данных, граничные значения, некорректные данные. Это помогает убедиться, что API правильно обрабатывает все возможные входные сценарии.
✅Автоматизировать тестирование
В тестировании API многое можно автоматизировать: например, проверку отдельных функций или обработку ошибок.
✅Проводить непрерывные тесты
Если в компании есть процессы CI/CD, важно включить в них тестирование API. Это позволит регулярно проверять его работоспособность и получать обратную связь о проблемах сразу после их возникновения.
✅Проверять безопасность
Поскольку API часто поставляются со стороны, важно тщательно тестировать их на уязвимости и проверять механизмы аутентификации, чтобы и API, и основная система были защищены от потенциальных угроз и атак.
На курсе по тестированию «С нуля до автоматизатора» студентов обучают этим принципам, а также всем необходимым навыкам и инструментам для тестирования API.
Некоторые тесты можно проводить и вручную — так же как и программировать теоретически можно в обычном блокноте. Но на практике тестировщики используют специальные инструменты, которые позволяют упростить и автоматизировать тестирование. И делать то, что руками никак не получится.
Вот какими инструментами чаще всего пользуются тестировщики:
● Postman. Позволяет создавать, отправлять и тестировать HTTP-запросы и получать ответы от API. Предоставляет возможность создания автоматизированных тестов, генерации документации и совместной работы в команде.
● SoapUI. Позволяет тестировать и отлаживать SOAP и REST API: создавать и отправлять запросы, автоматизировать тестирование, генерировать тестовые отчеты, мониторить производительность.
● JMeter. Позволяет отправлять HTTP-запросы и проводить нагрузочное тестирование, чтобы проверить, как API справляется с высокими нагрузками, насколько оно производительно и масштабируемо.
● REST-assured. Java-библиотека, которая предоставляет простой и удобный способ для тестирования REST API с использованием DSL-синтаксиса. Она позволяет выполнять запросы, проверять ответы и создавать автоматизированные тесты.
● Swagger. Позволяет автоматически генерировать код для тестирования API и создавать автотесты.
Вот как это может быть применено на реальном примере тестирования API. Представим тестирование RESTful API для системы управления задачами. Предположим, что этот API предоставляет следующие методы:
● GET /tasks — получить список всех задач;
● GET /tasks/{id} — получить информацию о конкретной задаче;
● POST /tasks — создать новую задачу;
● PUT /tasks/{id} — обновить информацию о задаче;
● DELETE /tasks/{id} — удалить задачу.
Шаги тестирования могут быть такими:
1. Определить требования
Изучить документацию API, чтобы понять, какие поля должны быть в задаче, как она должна быть создана и обновлена, ожидаемые коды состояния и структуру ответов.
2. Создать тестовые случаи
Например:
● Тест случая GET /tasks — отправить GET-запрос на /tasks и убедиться, что полученный ответ содержит список задач.
● Тест случая GET /tasks/{id} — создать тестовую задачу, получить её идентификатор, затем отправить GET-запрос на /tasks/{id} и убедиться, что возвращается информация о задаче с правильным идентификатором.
● Тест случая POST /tasks — отправить POST-запрос на /tasks с тестовыми данными для создания новой задачи и убедиться, что задача успешно создана и возвращается правильный код состояния (например, 201 Created).
● Тест случая PUT /tasks/{id} — создать тестовую задачу, получить её идентификатор, затем отправить PUT-запрос на /tasks/{id} с обновлёнными данными и убедиться, что задача успешно обновлена и возвращается правильный код состояния (например, 200 OK).
3. Настроить окружение
Установить Postman для отправки запросов и проверки ответов API.
4. Отправить запросы
С использованием Postman отправить запросы из тестовых случаев к API.
5. Проверить ответы
Проверить ответы от API, используя ожидаемые результаты, указанные в тестовых случаях. Например, убедиться, что возвращается правильный код состояния, структура ответа соответствует ожидаемой и значения полей задачи корректны.
6. Обработать ошибки
Проверить, как API обрабатывает ошибки, отправляя некорректные запросы. Убедиться, что возвращаются соответствующие коды и описания ошибок.
7. Сгенерировать отчёты
Создавать отчёт о результатах после каждого выполнения тестов. Включить в него информацию о прошедших и не прошедших тестах, кодах состояния, ответах, ошибках, и другие полезные данные.
8. Регулярно проводить повторное тестирование
Особенно после внесения изменений в код API или его окружения, для обнаружения проблем и подтверждения работоспособности API.
Читать также: