Блог A1QA

О тестировании и качестве ПО

10 миллионов шагов до релиза, или трудности при тестировании носимых устройств

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

QA-специалист компании A1QA Вероника Янченко делится опытом своей команды и предлагает варианты решения трудностей, которые могут возникнуть при тестировании приложений, использующих данные носимых устройств.

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

1. Сложность выбора покрытия

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

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

2. Отсутствие эмуляторов данных

Чтобы получить нужные вам данные с носимого устройства, сначала необходимо получить их на само устройство. Для этого придется бегать, ходить, увеличивать пульс, спать и т.д. При этом при переподключении к другому девайсу все «набеганные» и «наспанные» данные теряются, и их приходится собирать заново.

Решение: Если вам необходимо протестировать большое количество шагов и вам заранее об этом известно, можно взять девайс с собой на прогулку или в спортзал и получить необходимые данные. Если же протестировать необходимо «здесь и сейчас», не отходя от рабочего места, пробуйте выполнять движения, имитирующие бег или ходьбу: например, трясти устройство в руке.

3. Зависимость от сторонних приложений

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

Решение: При обнаружении подобных дефектов задача тестировщика — определить, воздействуют ли они на приложение. Если это так, стоит определить:

  • Возможно ли обрабатывать некорректные данные и предотвращать их попадание в ваше приложение?
  • Каким образом можно изменить бизнес логику приложения, чтобы предотвратить возможность использования некорректных данных пользователями в корыстных целях? Например, для получения каких-либо вознаграждений. Наличие подобных «обманных кейсов» может нанести материальный ущерб заказчику.

4. Многочисленные варианты использования носимых устройств

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

Решение: Ставьте себя на место пользователя, а лучше – станьте им на время: используйте носимое устройство в жизни, периодически наблюдая за его «реакцией» на изменяющиеся условия эксплуатации. Вот несколько примеров того, как нашей команде приходилось мыслить не просто широко, а придумывать действительно нетривиальные методы тестирования.

Примеры из реальных проектов

Тестирование на полотенцах

Одним из наших коллег было обнаружено, что если открыть экран с замером пульса на Apple Watch, когда часы на руке, а затем снять их и положить на полотенце/джинсы (важна рельефная структура материала), то срабатывает датчик замера пульса. Результаты замера при этом составляют около 200 ударов в минуту, что многовато для полотенца, согласитесь.
Заказчик, узнав о подобном поведении устройства, попросил проверить, как оно отражается на работе приложения. Воспроизвести данный сценарий удалось не сразу: ни рельефной джинсовой ткани, ни полотенца под рукой не оказалось, и пришлось искать альтернативные варианты.

На помощь пришла плюшевая игрушка! Разместив на нем Apple Watch, нам удалось воспроизвести пульс около 200 ударов в минуту.

Возникает вопрос: насколько подобный кейс реален?

На самом деле, вполне реален: например, пользователь после спортзала снимает часы и кладёт их на стопку с одеждой, где вполне могут оказаться джинсы или полотенце. Однако можно ли предусмотреть подобное и включить такую проверку на этапе тестирования? Скорее всего, нет.

#10000000steps

В ходе проекта был получен дефект от конечного пользователя: не синхронизируются шаги. Исследовав проблему, удалось выяснить, что происходит это, когда число синхронизируемых шагов больше семи цифр, а это минимум 10 000 000 шагов. Здесь стоит отметить, что при первом подключении нашего приложения к приложению производителя носимого устройства подтягиваются все шаги, которые были зафиксированы за последние 90 дней.

Проведя приблизительные расчеты, мы получаем примерно 111 000 шагов или 80-90 километров, которые пользователь должен был проходить ежедневно на протяжении 90 дней. Реально ли это? Вряд ли.

Чтобы убедиться в этом, мы решили узнать, сколько же ходят реальные пользователи. Подобной информацией люди очень любят делиться в Instagram.
Просмотрев посты с соответствующими хэштегами (#steps, #activity), мы выяснили, что наиболее частыми показателями являются 7 000-10 000 шагов в день, 15 000-20 000 шагов у тех, кто поактивнее. Самые спортивные пользователи проходят около 35 000 шагов. Больше встречается редко.

wearables-fitness-results

Можно пойти другим путём и поискать напрямую интересующее нас количество шагов, а именно по хэштегу #10000000steps.

Подобный пост был найден, и, судя по сопутствующему комментарию «Great Wall of China», для получения подобного результата пользователю пришлось преодолеть Великую Китайскую стену. К сожалению, не был указан срок, за который это произошло, но, в любом случае, маловероятно, что кто-то мог проходить по 80-90 километров в течение 90 дней подряд. Дефект был исправлен, однако проверять его не стали, т.к. ситуация маловероятная, а вопрос о том, кто и как получил 10 000 000 шагов остался открытым.

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

Поделиться статьей: