Тестирование интеграций с соцсетями в WEB

TechLead отдела тестирования NoveoNsk Наталья делится опытом реализации довольно капризной функциональности — интеграции веб-приложения с соцсетями.

Noveo testing project

Многие из нас не любят заполнять лишних полей при регистрации на новом сайте. В этом нам часто помогает регистрация в один клик через популярные соцсети: фейсбук, гугл, инстаграм. Какая красота: нажимаешь одну кнопочку — и все заполнилось за тебя! Но это работает так, только когда вы пользуетесь уже готовой фичей, а что же скрывается за идеально работающей функциональностью?

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

Авторизация

Начнем с начала — с авторизации. Эта функция есть в любом приложении и вроде бы не должна вызывать никаких сложностей у тестировщика даже с минимальным опытом. Но не все так просто.

Если вам приходилось тестить SSO-авторизацию, вы знаете, что при получении данных аккаунта из стороннего сервиса у аккаунта в нашей БД создается связь с ИД аккаунта из внешнего сервера. Вот тут-то и скрываются подводные камни: а что, если ваш e-mail уже зарегистрирован, но обычным способом? Или ваш аккаунт соцсети внезапно привязан к другой почте в БД? Из соображений безопасности может показаться, что в таких случаях стоит запретить юзеру вход. Но что, если вы изменили свой e-mail в соцсети уже после регистрации на нашей платформе? Такие кейсы мы рекомендуем заранее обговорить с клиентом.

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

Контент

Следующая задача — публикация контента. Тут также может существовать два типа: поделиться ссылкой на страницу или создать уникальную публикацию.

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

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

Во-первых, здесь также необходимо связать аккаунт юзера с аккаунтом соцсети. Да, нам не нужно регистрировать нового юзера, но так же остаются проверки на то, что наш ID никем не занят и мы можем его изменять.

Во-вторых: как вообще будет происходить публикация? В зависимости от соцсети есть разные варианты. ФБ позволяет публиковать данные только через вызов их окна. Т.е. все заполненные юзером данные должны передаваться в открывающееся окно. Для твиттера и линкедина это может сделать сервер: достаточно заполнить данные и отправить нужный API-запрос на наш сервер — он сам все опубликует. Но в любом случае нужно убедиться, что данные публикуются верно.

Вот здесь как раз отлично применимы техники анализа граничных значений и эквивалентное разбиение. Нужно проверить, как отображаются публикуемые медиафайлы разных типов, проверить различные размеры текста и не забыть про разные символы (привет французам с их буквами с диакритикой >_<). А если есть возможность добавлять смайлы, то не забываем, что они также должны верно декодироваться в публикации, а еще занимают не одну позицию. Иначе получится ситуация, где нужно доказать, что ты не робот.

Noveo social networks testing project

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

Если окно открылось, не спешите доставать шампанское. Еще одно проблемное место в том, что после авторизации или клика на кнопку публикации должен быть редирект обратно на наш сайт и обработка действия нашим клиентом, но вот редирект почему-то не отрабатывает. Причем, если у вас все хорошо на винде, это не значит, что будет хорошо на маке. А если хорошо на маке, то на айфоне будут проблемы. Да и если Chrome работает, то Firefox точно заблокирует окно для авторизации. Причем фейсбук может работать, а твиттер уже нет. И не факт, что разработчик знает, что с этим делать и как это пофиксить :( А если нужен саппорт IE, то готовьте валерьянку)

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

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

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

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

Noveo Social Networks testing project

PS: Вообще, конечно, мой любимый нетворк для публикаций — это инстаграм. Они убрали у себя возможность делать публикации из сторонних веб-приложений, и все, что требуется от нашей функциональности, — это сделать публикацию в их приложении, а в нашем ручками заполнить свое имя в инсте и ссылку на пост. Всего два текстовых поля, что может быть проще?)