Как тестируют Shazam

Основа: визуальное тестирование

«В Shazam с самого начала принят целостный визуальный подход к QA-процессу. Но всегда были трудности с интеграцией UI-тестов в процесс. Приходилось писать код для закрытия всплывающих окон на JS и прочее. Самые простые тесты становились негодными после самых незначительных изменений. С появлением XCUITest стало, конечно, лучше, но не хватало взаимодействия между приложениями. Для этих целей приходилось использовать CFNotificationCenter, это казалось не совсем правильным, и мы на некоторое время отказались от этой идеи. Уже начиная с 9-й версии XCode мы можем запускать и завершать различные приложения, тестировать взаимодействия между ними, просто ссылаясь на их bundleIdentifier:

let app1 = XCUIApplication(bundleIdentifier: "com.Shazam.app1")
app1.launchEnvironment = ["key":"value"]
app1.launch()
let app2 = XCUIApplication(bundleIdentifier: "com.Shazam.app2")
app1.terminate()
app2.launch()

Так запускаем несколько приложений. Просто добавляем все приложения в «Target Dependencies» в UITests, и XCode автоматически устанавливает их на девайс или симулятор.

В целом, в Shazam мы стараемся применять простые инструменты и простые подходы. 

Тестирование аудио является самой сложной вещью в QA

Сказал Кент Бек, создатель таких методологий разработки ПО как экстремальное программирование и разработка через тестирование, один из подписантов Agile Manifesto. На воркшопах он упоминал тестирование звука как одну из наиболее сложных вещей в QA. Это, безусловно, так. Поэтому у нас разработаны специальные инструменты для тестирования всего что касается звука. 

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

// Starting a playback app and passing an audio file URL
let playbackApplication = XCUIApplication(bundleIdentifier: "com.Shazam.TestPlaybackApp")
playbackApplication.launchEnvironment =["url":playbackTest.urlString]
playbackApplication.launch()

Теперь запускаем само приложение Shazam и начинаем тестирование.

// Starting a playback app and passing an audio file URL
let shazam = XCUIApplication(bundleIdentifier: "com.Shazam.***")
shazam.launch()
let shazamButton = ...
shazamButton.tap()

Далее ждем когда оно сработает, то есть появится нужное название (на самом деле мы делаем это немного по-другому, но это долго объяснять).

let artistLabel = shazam.staticTexts["Yusef Lateef"]
let titleLabel = shazam.staticTexts["Love Theme From Spartacus"]
// oh yes, we have a good taste here
let exists = NSPredicate(format: "exists == 1")

expectation(for: exists, evaluatedWith: artistLabel, handler: nil)
expectation(for: exists, evaluatedWith: titleLabel, handler: nil)
waitForExpectations(timeout: 10, handler: nil)

Ручной тест:

XCode-боты на симуляторах

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

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

У нас есть и другие важные виды UI-тестов, регулярно выполняемые — проверка наиболее важных user flow на разных девайсах, и на разных языках, но это выходит за рамки данной статьи.

Скорость и точность распознавания

Мы очень любим все измерять. Ключевыми показателями для нас являются «Время распознавания» и «Точность распознавания» (какой процент пользователей в итоге узнаЁт название мелодии, которую ищет). Мы постоянно отслеживаем эти показатели, так как они являются основными, ради них Shazam и существует.

Совет

Кроме того, мы измеряем эти показатели в зависимости от условий использования телефона. Когда-то мы, в порядке эксперимента, решили проверить, как пользователи держат свои телефоны до и после «шазаминга».

Как известно, iPhone поддерживает такие ориентации: портретную, перевернутую портретную, альбомную правую и т.д. Если вы когда-нибудь работали с ориентацией, то знаете, что она не очень точно срабатывает, и вот мы решили проверить. Провели небольшое тестирование — и сообщаем, что если постоянно держать телефон в портретной ориентации при пользовании Shazam, то это даст статистически значимый выигрыш в правильности и в скорости определения мелодии! 

Поэтому, советуем не поворачивать телефон когда шазамите — потерпите, держите его неподвижно, подождите несколько секунд.»

Источник

Какие требования к тестировщикам в Shazam

Shazam принадлежит Apple, хотя команда пользуется большой внутренней автономией. Уровень требований к QA-инженерам соответствующий.

  • Тестирование как ручное, так и автоматическое — с упором на очень квалифицированное ручное. 
  • В компании очень важны софт-скиллы, и список требований к QA Engineer начинается именно с них: нужно «быть креативным и уметь сотрудничать в команде». 
  • «Умение и желание делиться знаниями и получать знания»
  • Далее, требуется большой опыт в тестировании мобильных приложений, имеется в виду ручное тестирование приложений для iOS; знакомство с последними трендами в этой сфере
  • Доказанный опыт исследовательского тестирования, знание лучших практик.
  • На собеседовании дотошно проверяют умение документировать use-кейсы и продуктовые features и превращать их в «ясные четкие тесты». 
  • Умение подготовить для руководства «быстрый доклад по тестовому покрытию». 
  • «Подтвердить умение решать проблемы креативно» прямо на собеседовании
  • Умение самостоятельно приоритизировать свои задачи, исходя из «очень агрессивных» рабочих графиков, при этом «не теряя по дороге стандарты качества Apple»
  • Умение справляться с изменениями, внесенными в последнюю минуту
  • Умение работать по Agile и Lean

Рабочие инструменты и технологии в QA-департаменте Shazam:

  • ОС: iOS / (и Android-инструменты конечно же)
  • Client debugging tools: Xcode
  • Баг-трекер: Jira
  • Управление процессом: TestRail
  • Прокси: Charles proxy
  • Мониторинг: Splunk
  • Source control: Git

Большой гайд по автоматизации в XCUITest

Тестировщики в телеге

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас