Pull to refresh

Comments 17

Что ж вы так русский язык-то не любите.


Я не люблю воркэраунды.

Там же в википедии по-русски: "Обходной прием", на техническом жаргоне — «костыль»

Люблю. Русский — великий язык. Но, к сожалению, иногда вещи надо называть так, как это принято в обществе комьюнити. :)
Я не сталкивался конкретно с инстаграмом, но предполагаю что у их API должна быть возможность зарегистрировать приложение в режиме sandbox с тестовыми пользователями, которое можно связать с staging сервером и запускать UI тесты там. Лично я бы не стал на проде запускать какие либо тесты кроме smoke тестов.
Все верно, подобное API у них действительно есть: https://www.instagram.com/developer/sandbox/.

Но есть несколько нюансов, которые мешают использоваться его для стейджинга давно существующего сервиса:

This is a fully functional environment that allows you to test the API before submitting your app for review. Sandbox mode is ideal for developers who are new to the Instagram Platform and want to explore the API Platform, as well as for teams that need multiple clients for development, staging, and other non-live environments.


Это API больше подходит для отладки и написания кода. Оно не предназначено для сервисов, которые не в режиме разработки.

Since this mode is meant for development, apps in Sandbox mode are not visible to the general public, but instead are only visible to a limited set of up to 10 authorized 'sandbox users'. Only these users will be able to test and authenticate your app.


Только лимитированное количество Instagram-аккаунтов сможет взаимодействовать с нашим сервисом. Этого мало, к сожалению.

To get out of Sandbox mode, you need to submit your app for review. If your app falls into the approved use cases and gets approved, it will automatically go liv


Не очень понятно, как бороться с этим.

Мы пробовали писать автотесты, привязывая юзеров через этот API. В конечном итоге такой подход нам не подошел.
Скорее всего такое поведение с аутентификацией через фейсбук — наспех сделаная функциональность. Уверен, что скоро «залатают». Фейсбук переводит инфраструктуру инстаграм на graphQL и свои технологии. Что как бы логично с точки зрения стоимости поддержки и добавления новых фич штатными сотрудниками. Как раз месяц назад это стало причиной багов в библиотеке, которая работала с старым форматом данных instagram.

А мокнуть API инстаграма и тестировать ваше приложение заранее известными ответами API почему не рассматривали?

Это было бы тестированием тестовой логики. Если ответ у инстаграма изменится, нам бы тоже хотелось бы такое ловить тестами и быть в курсе АСАП.
Ну так одно другому не мешает — тестируете ваше приложение мокнутыми ответами (в полном объеме, сотни-тысячи тестов в день) и тестируете, что ваше знание об API инстаграма соответствует реальности (пара простых тестов на инстаграм, запускать заметно реже, там раз в сутки, например)
В целом Ваше решение имеет право на существование. Нам оно не подошло. Сейчас расскажу, почему.

Чтобы мокать ответ Инстаграма, запрос на авторизацию надо слать не на инстаграм, а на какой-то свой АПИ для мока. Это тоже тестовый код. Т.е. мало того, что мы тестируем отправку запроса не туда, куда он будет в итоге отправляться, но еще и не уверены, что ответ мока актуальный. Тестирование тестовой логики… :)

Со временем таких решение становится много: тут инстаграм, там сандбокс для пейпала, рядом свои собственные воркэраунды для труднодоступных мест. В итоге тестов много, сон по ночам крепкий, но на деле проверяется что-то, лишь отдаленно похожее на продакшн.

А так вы тестируете Инстраграм.


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


В вашем случае тесты зависят от:


  • Состояния сети у вас в окружении
  • Состояния сети в Инстраграме
  • Обновлений Истаграма как продукта
  • Обновлений банилки аккаунтов Инстаграма
  • Статуса аккаунта Инстаграмма
  • Состояния сети Фейсбука (выж через него авторизуетесь)
  • Статуса аккаунта Фейсбука
  • Обновлений банилки Фейсбука

Ну и от ошибок в тестируемом коде. Чото звучит не очень, да?

Вы правы. Надо будет переписать тест, чтобы ходил в нашу песочницу вместо Инстаграма. Лишь бы зеленым был. А настоящие пользователи, ради которых мы тесты пишем — да и хай на них. Перестанет приложение логинить их через настоящий Инстаграм, скажем, что у нас в тестах все ок, покажем Вашу запись…

— Алло, это пожарная? У нас тут здание девятиэтажное горит!
— Ну не знаем, у нас напротив такое же девятиэтажное здание и оно не горит…

Раскручивая вашу идеологию нужно перейти к тестированию на всех аккаунтах реальных юзеров :D


А то получится, что на вашем тестовом аккаунте работает, а на реальных нет.

А почему не обрабатывать ввод кода, если вас заблокировали?

Мы так писали тесты для смены пароля, когда новый высылался письмом (знаю, что не айс, но что было, то и проверяли).
Можно. Но проблема начинает выглядеть иначе после нескольких проверок. Инстаграм пишет, что не может залогинеть пользователя. И все. И никаких кодов не присылается. :)
Sign up to leave a comment.

Articles