суббота, 25 июля 2015 г.

WT07: Отчетик о сессии, посвященной тестированию API

По горячим следам напишу отчет о сессии викенд тестирования, прошедшей сегодня. Темой было тестирование API. Участников собралось довольно много - около 20 человек. Были ребята из Белоруссии, Украины, России, Германии. Что радует - были постоянные участники, которые приходили уже не раз. Давайте я расскажу о том, чем мы занимались.
Начали мы с обсуждения - что такое API. Вот несколько определений, которые мы сформулировали:
  • Дверь, в которую можно постучаться и тебе ответят) (Evgeniy Nepsha)
  • Ключ к функционалу, или части функционала программы, чтобы использовать ее в других приложениях (Миша Гречуха)
  • То, что нужно знать, чтобы взаимодействовать с каким-то ПО. если свое пишешь или тестируешь (Oleksandr Velychko)
  • Программный интерфейс для интеграции программ между собой (Koval, Konstantin)
  • Интерфейс взаимодействия с ПО (Nikita Drok)
После этого мы обсудили опыт работы с API у участников сессии. Некоторые ребята на своей работе только и занимаются, что тестированием API. Другие с ним иногда работают. А кто-то вообще с ним никогда не сталкивался.

Кроме того, мы пришли к выводу, что API способен помочь в тестировании продукта, для доступа к которому он используется. Например, с помощью API можно начинать тестирование продукта в том случае, когда GUI не готов. И автоматизировать тесты через запросы к API обычно намного легче - для этого достаточно несложных запросов на скриптовом языке или на bash.

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

Дальше была самая крупная часть сессии - практика. Объектом тестирования был выбран API Яндекс переводчика. И, надо сказать, участники нашли несколько интересных вещей - потенциальных багов:
  • При запросе без указания необходимого параметра lang появляется не совсем корректная ошибка: "{"code":501,"message":"The specified translation direction is not supported"}". Тестировщик: Evgeniy Nepsha.
  • При запросе с html тегами во входящем тексте, варианты перевода отличаются при использoвании формата html и plain, хотя сам исходник ничем не отличается.  Тестировщик: Evgeniy Nepsha. 
  • При запросе перевода с параметром lang=ru-en, с параметром text, который содержит текст "Russian" , выходной текст содержит перевод "English". Что выглядит по меньшей мере странным, потому что слова Russian мы просить не переводили. Тестировщик: Evgeniy Nepsha.
  • Допустимы запросы с параметром text больше максимально допустимых документацией 10000 символов (без пробелов). Тестировщик: Maryna Kolesnik.
  • При переводе с французского на испанский слово "Francais" переводится как "inglés". Откуда вдруг берется английский - непонятно :) Тестировщик: Oleksandr Velychko.
  • Непонятная логика транслитерации. При запросе возвращается "Лингва Латина нон пенис canina к", хотя ожидается, что все слова будут в транслите. Тестировщик: Nikita Drok.
Кроме того, несколько участников успели подготовить отчеты по проведенному тестированию. И все это всего лишь за час! Молодцы! Леша Федоров вообще зашел с другой стороны и подготовил файлик с запросами, который можно импортировать в Postman и потом протестировать все языки, доступные в функции API getLangs. 

После практики мы выбрали тему следующей сессии - ей будет "Тестирование мобильных приложений". А также подвели итоги:
  • Для тестирования API нужно знать специальные инструменты и уметь ими пользоваться. Это сильно облегчает тестирование.
  • Ожидаемо пригодится знание функционала самого продукта и технологий, которые в нем используются.
  • API тестирование - хороший кандидат для автоматизации.
  • Умение программировать тоже пригодится в тестировании API - оно поможет взглянуть на API с точки зрения его основных пользователей.
  • При тестировании Web API нужно знать основы HTTP (коды ошибок, методы GET-POST-PUT, и так далее)
В целом, сессия прошла здорово. Хотел еще раз поблагодарить всех участников! До встречи в следующий раз!

Всю переписку можно посмотреть в файлике.

2 комментария:

  1. Добрый день. Очень интересно, скажите, а есть видео, с сесии? Очень хочется посмотреть).

    ОтветитьУдалить
  2. Здравствуйте! Видео нет, но оно и не нужно - все, что есть, можно прочитать в переписке.

    ОтветитьУдалить