Программный интерфейс приложения (API) – основа современного мира. Многие действия, которые вы выполняете на цифровых платформах, используют API, и тестирование этих API является ключом к обеспечению хорошего пользовательского опыта в программном обеспечении и приложениях. Если вы пытаетесь протестировать API и не знаете, с чего начать, читайте дальше и узнайте о 60 тест-кейсах для тестирования API, которые вы можете использовать в качестве шаблонов. Мы также включили в статью пример тест-кейса, чтобы вы могли использовать его в своей работе, а также подробное руководство о том, как следует тестировать API.
Содержание:
-
Что такое тестирование API?
-
60 тест-кейсов для тестирования API по категориям:
-
Тест-кейсы для функционального тестирования
-
Тест-кейсы для тестирования производительности
-
Тест-кейсы для тестирования безопасности
-
-
Как писать тест-кейсы для тестирования API?
-
Шаблон тест-кейса (en)
Что такое тестирование API?
Тестирование API – это практика тестирования программного обеспечения, которая тестирует непосредственно API: от его функциональности, надежности, производительности до безопасности. Как часть интеграционного тестирования, тестирование API направлено на проверку логики архитектуры сборки. Целью тестирования API является проверка не отдельных программных компонентов, а связи между ними.
Тестирование API может проводиться как вручную, так и автоматически с помощью специальных инструментов, каждый из которых имеет свои плюсы и минусы. Как правило, автоматизированное тестирование API предпочтительнее, так как этот тип тестирования основан на данных и имеет множество повторений. Кроме того, существует множество аспектов в тестировании API, но это три наиболее распространенные категории:
-
Функциональное тестирование (проверка того, выполняет ли API свои функции так, как ожидалось)
-
Тестирование производительности (проверка работоспособности API при различных уровнях нагрузки)
-
Тестирование безопасности (проверка наличия в API уязвимостей или защиты от угроз безопасности).
60 тест-кейсов для тестирования API по категориям
1. Тест-кейсы для функционального тестирования
Функциональность является основой любого тестируемого приложения, и API не является исключением. Его самая базовая и основополагающая функциональность – это получение и отправка данных, и функциональное тестирование API должно вращаться вокруг этих двух областей. Ознакомьтесь со следующими примерами функциональных тестов и посмотрите, как вы можете применить их в своем собственном проекте тестирования:
-
Проверка кода состояния для корректных запросов: убедитесь, что API постоянно возвращает ожидаемый код состояния ответа, например “200 OK”, для корректных и правильно оформленных запросов.
-
Обработка аутентификации с некорректными учетными данными: протестируйте ответ API при предоставлении некорректных учетных данных, убедившись, что он последовательно возвращает код состояния “401 Unauthorized”, как и ожидалось.
-
Обработка отсутствующих или некорректных параметров: убедитесь, что API обрабатывает отсутствующие или некорректные параметры запроса и возвращает понятные сообщения об ошибках, которые помогают в устранении неполадок.
-
Валидация входных данных с использованием искаженных данных: протестируйте валидацию входных данных API, отправляя различные формы искаженных данных, например, некорректные форматы электронной почты, и убедитесь, что API отклоняет и правильно реагирует на эти данные.
-
Обработка таймаутов под нагрузкой: убедитесь, что API корректно обрабатывает таймауты, имитируя запросы, обработка которых занимает больше времени, и гарантируя, что он не зависает.
-
Проверка функциональности пагинации: протестируйте функциональность пагинации API, запросив определенные страницы результатов и проверив, что ответы содержат ожидаемые данные и информацию о пагинации.
-
Параллельное тестирование без повреждения данных: убедитесь, что API обрабатывает одновременные запросы от нескольких пользователей без повреждения данных или конфликтов, обеспечивая целостность данных.
-
Соответствие формату ответа (JSON/XML): убедитесь, что API последовательно возвращает ответы в указанном формате (например, JSON или XML) и придерживается определенной схемы структуры данных.
-
Оценка механизма кэширования с помощью повторных запросов: оцените механизм кэширования API, выполнив повторные запросы и убедившись, что заголовки кэша правильно установлены и соблюдены.
-
Оценка ограничения скорости: отправляйте запросы со скоростью, превышающей установленные ограничения, чтобы проверить, что API выдает ожидаемые ответы с ограничением скорости.
-
Поддержка методов HTTP для операций CRUD: убедитесь, что API поддерживает различные HTTP-методы (GET, POST, PUT, DELETE) для операций создания, чтения, обновления и удаления и что он возвращает соответствующие ответы для каждой из них.
-
Возможности обработки ошибок для получения содержательных сообщений: оцените возможности API по обработке ошибок, намеренно вызывая ошибки, такие как некорректные входные данные или неожиданные ситуации, и убедитесь, что он последовательно возвращает содержательные сообщения об ошибках для устранения неполадок.
-
Обработка условных запросов (If-Modified-Since, If-None-Match): проверьте поддержку условных запросов с такими заголовками, как If-Modified-Since и If-None-Match, и убедитесь, что ответы обрабатываются должным образом.
-
Проверка сортировки и фильтрации списков ресурсов: убедитесь, что API правильно сортирует и фильтрует списки ресурсов на основе указанных параметров, сохраняя точность данных.
-
Обработка длинных или сложных наборов данных без их повреждения: убедитесь, что API правильно обрабатывает длинные или сложные строки, такие как URL или текстовые поля, не усекая и не повреждая данные.
-
Поддержка согласования контента для нескольких форматов: протестируйте поддержку согласования контента в API, указав различные заголовки Accept (например, JSON, XML) и проверив соответствие формата в ответе формату в запросе.
-
Обработка не найденного ресурса (404 Not Found): убедитесь, что API последовательно возвращает соответствующий код состояния “404 Not Found” при попытке получить доступ к несуществующему ресурсу.
-
Измерение времени отклика для различных запросов: измерьте время отклика API для различных типов запросов, чтобы оценить его производительность и отзывчивость.
-
Управление большими полезными нагрузками (загрузка файлов): убедитесь, что API может обрабатывать большие полезные нагрузки, такие как загрузка файлов, не сталкиваясь с ошибками или значительным снижением производительности.
-
Совместимость с клиентскими библиотеками и пакетами средств разработки ПО (SDK): оцените совместимость API с различными клиентскими библиотеками или SDK, чтобы обеспечить эффективную интеграцию с различными платформами и языками программирования.
2. Тест-кейсы для тестирования производительности
Если API, разработанный в вашей команде, получает большой трафик, хорошей идеей будет включить тестирование производительности в свою ежедневную рутину. На самом деле, тестирование производительности должно начинаться еще до начала разработки, поскольку оно дает ценные сведения о максимальном уровне нагрузки на сервер, что может помочь команде разработки лучше распределять и оптимизировать использование ресурсов. Вот несколько распространенных тест-кейсов для проведения тестирования производительности API:
-
Базовое время отклика: измерьте время отклика простого API-запроса в нормальных условиях, чтобы установить базовый уровень производительности.
-
Стресс-тестирование: отправьте большое количество одновременных запросов к API, чтобы оценить его производительность при высокой нагрузке.
-
Параллельное тестирование: оцените, как API обрабатывает заданное количество одновременных запросов без снижения производительности.
-
Тестирование по нарастающей: постепенно увеличивайте количество запросов с течением времени, чтобы определить точку сбоя и пределы производительности API.
-
Тестирование пиковой нагрузки: протестируйте производительность API в пиковые моменты использования, чтобы убедиться, что он способен выдержать максимально ожидаемый трафик.
-
Тестирование на выносливость: непрерывно отправляйте запросы к API в течение длительного времени, чтобы оценить его стабильность с течением времени.
-
Тестирование масштабируемости: постепенно увеличивайте нагрузку и измеряйте, как масштабируется API, добавляя больше ресурсов (например, серверов) для поддержания производительности.
-
Тестирование использования ресурсов: отслеживайте загрузку процессора, памяти и сети, проводя тесты производительности, чтобы выявить узкие места в ресурсах.
-
Распределение времени отклика: проанализируйте распределение времени отклика, чтобы выявить отклонения и проблемы с производительностью.
-
Тестирование задержек: измерьте задержку в сети между клиентом и сервером API, чтобы обеспечить низкую задержку для пользователей.
-
Тестирование пропускной способности: определите максимальное количество транзакций, которое API может обработать за единицу времени, сохраняя при этом приемлемое время отклика.
-
Тестирование частоты ошибок: отслеживайте и записывайте количество ошибок или неудачных запросов во время нагрузочного тестирования, чтобы оценить степень обработки ошибок и устойчивость.
-
Производительность кэширования: оцените влияние кэширования на время отклика и использование ресурсов.
-
Тестирование объема данных: протестируйте API с различными объемами данных (например, малые, средние и большие полезные нагрузки), чтобы оценить его производительность при работе с различными объемами данных.
-
Географическое нагрузочное тестирование: смоделируйте запросы из разных географических точек, чтобы оценить глобальную производительность API и время отклика.
-
Параллельное тестирование с аутентификацией: оцените, как API обрабатывает одновременные запросы с аутентификацией, включая проверку токенов.
-
Нагрузочное тестирование базы данных: оцените влияние API-запросов на связанную с ними базу данных, измерив время отклика запросов.
-
Долго выполняющиеся транзакции: протестируйте транзакции, на выполнение которых уходит значительное количество времени, и оцените их влияние на общую производительность системы.
-
Стресс-тестирование ограничения скорости: проверьте, как API обрабатывает чрезмерное количество запросов при установленном ограничении скорости.
-
Тестирование отказов: смоделируйте отказы серверов и проверьте способность API переходить на резервные серверы, сохраняя при этом производительность.
3. Тест-кейсы для тестирования безопасности
Наконец, обязательно проверьте безопасность вашего API, поскольку именно через него происходит обмен конфиденциальными и ценными данными. API всегда были распространенной целью злоумышленников, стремящихся получить несанкционированный доступ к вашим системам. Вот некоторые тест-кейсы для проверки безопасности API:
-
Тестирование аутентификации: убедитесь, что API обеспечивает надлежащую аутентификацию для всех конечных точек.
-
Тестирование авторизации: убедитесь, что пользователи могут получить доступ только к тем ресурсам, на которые они имеют право.
-
Безопасность токенов: проверьте безопасность токенов аутентификации, включая шифрование и истечение срока действия токенов.
-
Управление сеансами: проверьте безопасное управление сеансами и работу с сессионными файлами cookie.
-
SQL Injection: проверьте наличие уязвимости к SQL-инъекциям путем внедрения вредоносных SQL-запросов в параметры API.
-
Кросс-сайт скриптинг (XSS): убедитесь, что API защищен от XSS-атак путем внедрения вредоносных скриптов.
-
Межсайтовая подделка запроса (CSRF): проверьте, уязвим ли API к CSRF-атакам путем отправки неавторизованных запросов.
-
Валидация ввода: убедитесь, что API проверяет и санирует вводимые пользователем данные для предотвращения инъекционных атак.
-
Ограничение скорости: протестируйте ограничение скорости API для предотвращения злоупотреблений и DoS-атак.
-
Раскрытие конфиденциальных данных: убедитесь, что конфиденциальные данные, такие как пароли или ключи API, не раскрываются в ответах.
-
Тестирование HTTPS/TLS: убедитесь, что API использует безопасную связь через HTTPS/TLS, и проверьте валидность сертификата.
-
Совместное использование ресурсов разными источниками (CORS): проверка корректности CORS-заголовков для предотвращения несанкционированных запросов к ресурсам от различных источников.
-
Безопасность ключей API: оцените безопасность ключей API и их хранения.
-
Безопасность JWT (JSON Web Token): оцените безопасность JWT, используемых для аутентификации и авторизации.
-
Обход аутентификации: попытка обойти механизмы аутентификации и получить несанкционированный доступ.
-
Фиксация сеанса: проверьте, уязвим ли API к атакам с фиксацией сеанса.
-
Небезопасные прямые ссылки на объекты (IDOR): проверьте возможность несанкционированного доступа к ресурсам путем манипулирования ссылками на объекты.
-
Тестирование отказа в обслуживании (DoS): попытка перегрузить API и проверить его устойчивость к DoS-атакам.
-
Версионирование API: убедитесь, что API поддерживает версионирование, чтобы изменения не повлияли на существующих клиентов.
-
Заголовки безопасности: проверьте наличие заголовков безопасности, таких как Content Security Policy (CSP), X-Content-Type-Options и т. д., в ответах API.
Как писать тест-кейсы для тестирования API?
При написании тест-кейса для тестирования API:
-
Внимательно изучите API. Ознакомьтесь с документацией у поставщика API. Также проверьте, доступна ли API-песочница для тестирования, и если да, ознакомьтесь с ней.
-
Соблюдайте последовательность именования тест-кейсов.
-
Вы можете объединить похожие тест-кейсы в рамках общей функции/сценария.
-
Перед созданием тест-кейса ознакомьтесь с требованиями или функциями, которые вы тестируете, чтобы знать, какую информацию в него включить.
-
Используйте глаголы действия в начале каждого шага тестирования, например “Нажмите”, “Введите” или “Проверьте”. При необходимости вы можете даже создать семантическую структуру для описания вашего тест-кейса. Как это делается, вы можете посмотреть в статье, посвященной BDD-тестированию.
-
Включите все необходимые настройки и предварительные условия перед выполнением теста.
-
Убедитесь, что в тест-кейсы включены не только позитивные, но и негативные сценарии, с которыми пользователи обычно не сталкиваются, но которые могут произойти в системе.
-
Используйте форматирование, чтобы ваши тест-кейсы было легче читать и выполнять.
-
Регулярно обновляйте тест-кейсы.
Шаблон тест-кейса (en)
Чтобы упростить задачу написания тест-кейса, вы всегда можете воспользоваться готовым шаблоном, который мы подготовили для вас в форматах PDF, Doc и Excel. Просто нажмите кнопку ниже и начните создавать свои тест-кейсы прямо сейчас.
ссылка на оригинал статьи https://habr.com/ru/articles/871188/
Добавить комментарий