60 тест-кейсов для тестирования API

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

Содержание:

  • Что такое тестирование API?

  • 60 тест-кейсов для тестирования API по категориям:

    1. Тест-кейсы для функционального тестирования

    2. Тест-кейсы для тестирования производительности

    3. Тест-кейсы для тестирования безопасности

  • Как писать тест-кейсы для тестирования API?

  • Шаблон тест-кейса (en)

Что такое тестирование API?

Тестирование API — это практика тестирования программного обеспечения, которая тестирует непосредственно API: от его функциональности, надежности, производительности до безопасности. Как часть интеграционного тестирования, тестирование API направлено на проверку логики архитектуры сборки. Целью тестирования API является проверка не отдельных программных компонентов, а связи между ними. 

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

  • Функциональное тестирование (проверка того, выполняет ли API свои функции так, как ожидалось)

  • Тестирование производительности (проверка работоспособности API при различных уровнях нагрузки)

  • Тестирование безопасности (проверка наличия в API уязвимостей или защиты от угроз безопасности).

60 тест-кейсов для тестирования API по категориям

1. Тест-кейсы для функционального тестирования

fbba47eab4b9574095f43c599522f975.png

Функциональность является основой любого тестируемого приложения, и API не является исключением. Его самая базовая и основополагающая функциональность — это получение и отправка данных, и функциональное тестирование API должно вращаться вокруг этих двух областей. Ознакомьтесь со следующими примерами функциональных тестов и посмотрите, как вы можете применить их в своем собственном проекте тестирования:

  1. Проверка кода состояния для корректных запросов: убедитесь, что API постоянно возвращает ожидаемый код состояния ответа, например »200 OK», для корректных и правильно оформленных запросов.

  2. Обработка аутентификации с некорректными учетными данными: протестируйте ответ API при предоставлении некорректных учетных данных, убедившись, что он последовательно возвращает код состояния »401 Unauthorized», как и ожидалось.

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

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

  5. Обработка таймаутов под нагрузкой: убедитесь, что API корректно обрабатывает таймауты, имитируя запросы, обработка которых занимает больше времени, и гарантируя, что он не зависает.

  6. Проверка функциональности пагинации: протестируйте функциональность пагинации API, запросив определенные страницы результатов и проверив, что ответы содержат ожидаемые данные и информацию о пагинации.

  7. Параллельное тестирование без повреждения данных: убедитесь, что API обрабатывает одновременные запросы от нескольких пользователей без повреждения данных или конфликтов, обеспечивая целостность данных.

  8. Соответствие формату ответа (JSON/XML): убедитесь, что API последовательно возвращает ответы в указанном формате (например, JSON или XML) и придерживается определенной схемы структуры данных.

  9. Оценка механизма кэширования с помощью повторных запросов: оцените механизм кэширования API, выполнив повторные запросы и убедившись, что заголовки кэша правильно установлены и соблюдены.

  10. Оценка ограничения скорости: отправляйте запросы со скоростью, превышающей установленные ограничения, чтобы проверить, что API выдает ожидаемые ответы с ограничением скорости.

  11. Поддержка методов HTTP для операций CRUD: убедитесь, что API поддерживает различные HTTP-методы (GET, POST, PUT, DELETE) для операций создания, чтения, обновления и удаления и что он возвращает соответствующие ответы для каждой из них.

  12. Возможности обработки ошибок для получения содержательных сообщений: оцените возможности API по обработке ошибок, намеренно вызывая ошибки, такие как некорректные входные данные или неожиданные ситуации, и убедитесь, что он последовательно возвращает содержательные сообщения об ошибках для устранения неполадок.

  13. Обработка условных запросов (If-Modified-Since, If-None-Match): проверьте поддержку условных запросов с такими заголовками, как If-Modified-Since и If-None-Match, и убедитесь, что ответы обрабатываются должным образом.

  14. Проверка сортировки и фильтрации списков ресурсов: убедитесь, что API правильно сортирует и фильтрует списки ресурсов на основе указанных параметров, сохраняя точность данных.

  15. Обработка длинных или сложных наборов данных без их повреждения: убедитесь, что API правильно обрабатывает длинные или сложные строки, такие как URL или текстовые поля, не усекая и не повреждая данные.

  16. Поддержка согласования контента для нескольких форматов: протестируйте поддержку согласования контента в API, указав различные заголовки Accept (например, JSON, XML) и проверив соответствие формата в ответе формату в запросе.

  17. Обработка не найденного ресурса (404 Not Found): убедитесь, что API последовательно возвращает соответствующий код состояния »404 Not Found» при попытке получить доступ к несуществующему ресурсу.

  18. Измерение времени отклика для различных запросов: измерьте время отклика API для различных типов запросов, чтобы оценить его производительность и отзывчивость.

  19. Управление большими полезными нагрузками (загрузка файлов): убедитесь, что API может обрабатывать большие полезные нагрузки, такие как загрузка файлов, не сталкиваясь с ошибками или значительным снижением производительности.

  20. Совместимость с клиентскими библиотеками и пакетами средств разработки ПО (SDK): оцените совместимость API с различными клиентскими библиотеками или SDK, чтобы обеспечить эффективную интеграцию с различными платформами и языками программирования.

2. Тест-кейсы для тестирования производительности

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

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

  2. Стресс-тестирование: отправьте большое количество одновременных запросов к API, чтобы оценить его производительность при высокой нагрузке.

  3. Параллельное тестирование: оцените, как API обрабатывает заданное количество одновременных запросов без снижения производительности.

  4. Тестирование по нарастающей: постепенно увеличивайте количество запросов с течением времени, чтобы определить точку сбоя и пределы производительности API.

  5. Тестирование пиковой нагрузки: протестируйте производительность API в пиковые моменты использования, чтобы убедиться, что он способен выдержать максимально ожидаемый трафик.

  6. Тестирование на выносливость: непрерывно отправляйте запросы к API в течение длительного времени, чтобы оценить его стабильность с течением времени.

  7. Тестирование масштабируемости: постепенно увеличивайте нагрузку и измеряйте, как масштабируется API, добавляя больше ресурсов (например, серверов) для поддержания производительности.

  8. Тестирование использования ресурсов: отслеживайте загрузку процессора, памяти и сети, проводя тесты производительности, чтобы выявить узкие места в ресурсах.

  9. Распределение времени отклика: проанализируйте распределение времени отклика, чтобы выявить отклонения и проблемы с производительностью.

  10. Тестирование задержек: измерьте задержку в сети между клиентом и сервером API, чтобы обеспечить низкую задержку для пользователей.

  11. Тестирование пропускной способности: определите максимальное количество транзакций, которое API может обработать за единицу времени, сохраняя при этом приемлемое время отклика.

  12. Тестирование частоты ошибок: отслеживайте и записывайте количество ошибок или неудачных запросов во время нагрузочного тестирования, чтобы оценить степень обработки ошибок и устойчивость.

  13. Производительность кэширования: оцените влияние кэширования на время отклика и использование ресурсов.

  14. Тестирование объема данных: протестируйте API с различными объемами данных (например, малые, средние и большие полезные нагрузки), чтобы оценить его производительность при работе с различными объемами данных.

  15. Географическое нагрузочное тестирование: смоделируйте запросы из разных географических точек, чтобы оценить глобальную производительность API и время отклика.

  16. Параллельное тестирование с аутентификацией: оцените, как API обрабатывает одновременные запросы с аутентификацией, включая проверку токенов.

  17. Нагрузочное тестирование базы данных: оцените влияние API-запросов на связанную с ними базу данных, измерив время отклика запросов.

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

  19. Стресс-тестирование ограничения скорости: проверьте, как API обрабатывает чрезмерное количество запросов при установленном ограничении скорости.

  20. Тестирование отказов: смоделируйте отказы серверов и проверьте способность API переходить на резервные серверы, сохраняя при этом производительность.

3. Тест-кейсы для тестирования безопасности

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

  1. Тестирование аутентификации: убедитесь, что API обеспечивает надлежащую аутентификацию для всех конечных точек.

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

  3. Безопасность токенов: проверьте безопасность токенов аутентификации, включая шифрование и истечение срока действия токенов.

  4. Управление сеансами: проверьте безопасное управление сеансами и работу с сессионными файлами cookie.

  5. SQL Injection: проверьте наличие уязвимости к SQL-инъекциям путем внедрения вредоносных SQL-запросов в параметры API.

  6. Кросс-сайт скриптинг (XSS): убедитесь, что API защищен от XSS-атак путем внедрения вредоносных скриптов.

  7. Межсайтовая подделка запроса (CSRF): проверьте, уязвим ли API к CSRF-атакам путем отправки неавторизованных запросов.

  8. Валидация ввода: убедитесь, что API проверяет и санирует вводимые пользователем данные для предотвращения инъекционных атак.

  9. Ограничение скорости: протестируйте ограничение скорости API для предотвращения злоупотреблений и DoS-атак.

  10. Раскрытие конфиденциальных данных: убедитесь, что конфиденциальные данные, такие как пароли или ключи API, не раскрываются в ответах.

  11. Тестирование HTTPS/TLS: убедитесь, что API использует безопасную связь через HTTPS/TLS, и проверьте валидность сертификата.

  12. Совместное использование ресурсов разными источниками (CORS): проверка корректности CORS-заголовков для предотвращения несанкционированных запросов к ресурсам от различных источников.

  13. Безопасность ключей API: оцените безопасность ключей API и их хранения.

  14. Безопасность JWT (JSON Web Token): оцените безопасность JWT, используемых для аутентификации и авторизации.

  15. Обход аутентификации: попытка обойти механизмы аутентификации и получить несанкционированный доступ.

  16. Фиксация сеанса: проверьте, уязвим ли API к атакам с фиксацией сеанса.

  17. Небезопасные прямые ссылки на объекты (IDOR): проверьте возможность несанкционированного доступа к ресурсам путем манипулирования ссылками на объекты.

  18. Тестирование отказа в обслуживании (DoS): попытка перегрузить API и проверить его устойчивость к DoS-атакам.

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

  20. Заголовки безопасности: проверьте наличие заголовков безопасности, таких как Content Security Policy (CSP), X-Content-Type-Options и т. д., в ответах API.

Как писать тест-кейсы для тестирования API?

При написании тест-кейса для тестирования API:

  • Внимательно изучите API. Ознакомьтесь с документацией у поставщика API. Также проверьте, доступна ли API-песочница для тестирования, и если да, ознакомьтесь с ней.

  • Соблюдайте последовательность именования тест-кейсов.

  • Вы можете объединить похожие тест-кейсы в рамках общей функции/сценария.

  • Перед созданием тест-кейса ознакомьтесь с требованиями или функциями, которые вы тестируете, чтобы знать, какую информацию в него включить.

  • Используйте глаголы действия в начале каждого шага тестирования, например «Нажмите», «Введите» или «Проверьте». При необходимости вы можете даже создать семантическую структуру для описания вашего тест-кейса. Как это делается, вы можете посмотреть в статье, посвященной BDD-тестированию.

  • Включите все необходимые настройки и предварительные условия перед выполнением теста.

  • Убедитесь, что в тест-кейсы включены не только позитивные, но и негативные сценарии, с которыми пользователи обычно не сталкиваются, но которые могут произойти в системе.

  • Используйте форматирование, чтобы ваши тест-кейсы было легче читать и выполнять.

  • Регулярно обновляйте тест-кейсы.

Шаблон тест-кейса (en)

Чтобы упростить задачу написания тест-кейса, вы всегда можете воспользоваться готовым шаблоном, который мы подготовили для вас в форматах PDF, Doc и Excel. Просто нажмите кнопку ниже и начните создавать свои тест-кейсы прямо сейчас.

PDF | Doc | Excel

© Habrahabr.ru