Что такое API?
API расшифровывается как “интерфейс прикладного программирования” или “интерфейс программирования приложений”.
Он позволяет осуществлять связь и обмениваться данными между двумя отдельными модулями программы. Система программного обеспечения, реализующая API, содержит функции/подпрограммы, которые могут быть выполнены с помощью другого программного обеспечения.
Что подразумевает тестирование API?
Тестирование API полностью отличается от тестирования графического интерфейса и в основном концентрируется на слое бизнес-логики архитектуры программного обеспечения. GUI в API тестировании практически не нужен.
Вместо стандартных видов ввода пользовательских данных (заполнение форм) здесь для передачи данных используется программное обеспечение.
Для API тестирование нам потребуется само тестируемое приложение и приложение для работы с API. Также потребуется написать собственный код для работы с API.
Настройка среды тестирования API
Тестирование API отличается от других видов отсутствием пользовательского интерфейса, следовательно, мы должны настроить с необходимым набором параметров среду тестирующую API, а затем проанализировать результаты теста.
База данных и сервер должны быть настроены в соответствии с требованиями приложения. После завершения настройки должна быть вызвана API функция для проверки этих настроек.
Выходные данные API
- Любой тип данных
- Статус (true, или false)
- Вызов другой функции API
Давайте рассмотрим пример каждого типа.
Любой тип данных
Пример: Существует функция API, который должен добавить два целых числа.
Long add(int a, int b)
В качестве входных параметров должны быть приведены числа. На выходе должна быть сумма двух целых чисел. Полученный результат должен быть сравнен с ожидаемым результатом.
Вызов должен быть примерно таким:
add (1234, 5656)
При превышении предела должно быть обработано исключение.
Статус (true или false)
Рассмотрим ниже функции API
Lock()
Unlock()
Delete()
Они возвращают какое-либо значение, такое как True (в случае успеха) или False (в случае ошибки), в качестве выходного.
Более полный тест впоследствии может вызвать функцию или скрипт, а затем проверить изменения в базе данных или обновление графического интерфейса.
Вызов другой функции API
В этом случае мы вызываем одну из функции API, которая в свою очередь, будет вызывать другую функцию.
Например, первая функция API может быть использована для удаления указанной записи в таблице и эта функция в свою очередь вызывает другую функцию, чтобы обновить базу данных.
Разница API-тестированием и Unit-тестированием
Unit-тестирование | API-тестирование |
· Выполняется разработчиками | · Выполняется тестировщиками |
· Тестируются отдельные модули | · Тестируется end-to-end функционал |
· Разработчик имеет доступ к исходному коду | · Тестировщик не имеет доступа к исходному коду |
· Возможно тестирование UI | · Тестируется только API |
· Тестируется только базовый функционал | · Тестируется весь функционал |
· Ограничен в возможностях | · Широкие возможности |
· Запускается до заливки на SCV | · Запускается после билда |
Виды тестов в тестировании API:
- Обзорное тестирование – тесты должны выполнить набор вызовов, задекларированных в API, чтобы проверить общую работоспособность системы;
- Юзабилити-тестирование – проверяет, является ли API функциональным и обладает ли удобным интерфейсом, также проверяется интеграция с другими;
- Тестирование безопасности – проверяет используемый тип аутентификации и шифрование данных с помощью HTTP ;
- Автоматизированное тестирование – создание скриптов, программ или настройка приложений, которые смогут тестировать API на регулярной основе;
- Документация – проверяется полнота описаний функций API, её понятность и, в свою очередь, является финальным результатом.
Лучшие практики тестирования API:
- Тест-кейсы должны быть сгруппированы по тестовым категориям;
- Каждый тест должен включать декларацию тестируемой функции;
- Выбор параметров должен быть явно упомянут в самом тесте;
- Установка приоритетов вызова функций API;
- Каждый тест должен быть самодостаточным и независимым друг от друга;
- Особую осторожность следует соблюдать при обращении к функциям удаления, закрытия окна и прочим;
- Вызов последовательности действий должен быть хорошо спланирован и выполнен;
- Для обеспечения полного тестового покрытия создавайте тестовые случаи для всех возможных комбинаций входных данных.
Типы ошибок, которые обнаруживаются при API тестировании:
- Сбой обработки ошибочных условий;
- Неиспользуемые флаги;
- Отсутствует или дублируется функционал;
- Вопросы надежности: трудности при подключении и получении ответа от API;
- Проблемы с безопасностью;
- Вопросы многопоточности;
- Проблемы с производительностью: время отклика API очень высоко;
- Ложные ошибки;
- Некорректная обработка валидных значений;
- Данные ответа некорректно структурированы (JSON или XML).
Инструменты для тестирования API
- SOAPUI
- Runscope
- Postman with jetpacks
- Postman with newman
- Curl
- Cfix
- Check
- CTESK
- dotTEST
- Eclipse SDK tool- Automated API testing
Проблемы в тестировании API
- Комбинация и выбор параметров
- Отсутствие графического интерфейса
- Валидация и верификация выходных данных в разных системах
- Обязательная проверка обработки исключений
- Тестировщикам необходимы знания в программировании
Вывод
API состоит из множества классов / функций / процедур, которые представляют собой слой бизнес-логики. Если API не проверяется должным образом, то это может вызвать проблемы не только в применении API, но и в вызывающем приложении.