Программный интерфейс приложения (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. Просто нажмите кнопку ниже и начните создавать свои тест-кейсы прямо сейчас.
 
           
 

antoniozvonarev
Фиксация сеанса - вот про это совсем не понял. О чем тут речь вообще? сеанс сессии?