Как тестируют в Google - Джеймс Уиттакер
Шрифт:
Интервал:
Закладка:
— Отличия понятны, а чем тестирование в Google схоже с тестированием в других компаниях?
Эппл: Функциональность приложения, которую трудно автоматизировать, создает нам столько же проблем с тестированием, сколько и любой другой компании. Когда мы в спешке доделываем новые фичи для очередного выпуска, мы тестируем код не так тщательно, как хотелось бы. Идеальных компаний и совершенных продуктов не бывает.
— За какие функциональные области ты отвечала, работая инженером по тестированию для YouTube?
Эппл: Я работала с разными командами и участвовала в выпуске многих новых фич YouTube. Предмет моей особой гордости — запуск новой страницы просмотра роликов, которую мы полностью переработали. Это одна из самых часто просматриваемых страниц в интернете! Другой запоминающийся проект — наше партнерство с Vevo, новым порталом музыкального контента, для которого YouTube обеспечивает видеохостинг и стриминг. Этот проект — совместное творение Sony Music Entertainment и Universal Music Group. В день запуска на нем уже было 14 000 видеороликов. За три месяца после запуска видеоролики Vevo на YouTube собрали больше 14 миллионов просмотров. Еще я координировала работу по тестированию переписанной версии видеопроигрывателя YouTube на базе Flash, когда мы переходили с ActionScript 2 на ActionScript 3, и запуск новых страниц Channel и Branded Partner.
— Каково это — рулить тестированием в Google?
Эппл: Это значит координировать работу не только в своей команде и проекте, но и не забывать присматривать за всеми продуктами, на которые может повлиять наша работа. Например, в проекте Vevo мы постоянно держали в голове проигрыватель YouTube, брендированный компонент просмотра, иерархию каналов, распределение трафика и т.д. Нужно уметь видеть лес за деревьями.
— Как ты адаптировала исследовательское тестирование для YouTube?
Эппл: YouTube — это продукт, предельно ориентированный на пользователя. Он настолько визуальный, что исследовательское тестирование выходит на первый план, и мы стараемся, чтобы его было как можно больше.
— Как тестировщики YouTube восприняли идею исследовательского тестирования?
Эппл: О, она здорово их взбодрила! Все-таки тестировщикам нравится искать баги. В исследовательском тестировании ребятам нужно немного побыть пользователем и его глазами пройти весь тур, его руками попытаться сломать продукт. Поэтому к написанию новых тестов надо подходить творчески, — работа становится интереснее, удается найти такие баги, которые обычно или пропускают, или тестируют долго и нудно, пока не наткнутся на них.
— Ты упомянула о турах. Джеймс подтолкнул тебя применить практики из его книги?
Эппл: Когда Джеймс пришел в Google, книга только вышла. Он провел пару семинаров и несколько раз встречался с нами. Но он работает в Сиэтле, а мы в Калифорнии, поэтому мы общаемся не так часто. Мы просто взяли туры из книги и попробовали их. Одни сработали, другие — нет, но мы быстро разобрались, какие лучше подходят для нашего продукта.
— Какие именно работали? Можешь назвать?
Эппл: «Денежный тур» с фокусом на фичи, связанные с деньгами (для YouTube это Ads и другие части, завязанные на партнеров), конечно, играл важную роль в каждом выпуске. «Тур по достопримечательностям» с фокусом на важнейшие функции системы. «Тур по неблагополучному району» с фокусом на области, в которых раньше находили баги, и области, к которым относились последние баг-репорты. Эти три оказались самыми эффективными в выявлении багов. Невероятно полезным оказалось рассмотреть заведенные друг другом баги и обсудить, как мы их искали. Концепция туров помогла нам выстроить стратегию исследовательского тестирования. Мы постоянно подшучивали над «антисоциальным туром» (ввод наименее вероятных данных при каждом удобном случае), «туром навязчивого невроза» (повторение одного действия) и «ленивым туром» (ввод минимума входных данных и выбор значений по умолчанию везде, где только можно). Туры не только помогли нам направлять наше тестирование, но и сплотили команду.
— Насколько мы знаем, вы много тестируете YouTube с помощью Selenium. Что тебе нравится и не нравится в автоматизации с использованием Selenium?
Эппл: Нравится простота API, то, что можно писать код тестов на любимом языке программирования, будь то Python, Java или Ruby, возможность прямого вызова кода JavaScript из приложения — потрясающая, суперполезная функция.
Не нравится то, что технология так и осталась браузерным тестированием. Она медленно работает, нужно встраивать точки входа в API, а тесты работают далеко от тестируемого кода. Selenium помогает при автоматизации сценариев, которые человеку особенно трудно проверять, например при вызовах к рекламной подсистеме. У нас есть тесты, которые запускают видеоролики и перехватывают вызовы Ad с помощью Banana Proxy (внутренняя программа проверки безопасности веб-приложений, которая логирует запросы и ответы HTTP). В двух словах: мы перехватываем запросы из браузера и направляем их на Banana Proxy, который их логирует и передает в Selenium. Так мы можем убедиться в том, что исходящие запросы содержат правильные URL-параметры, а содержимое входящих ответов соответствует ожиданиям. Тесты пользовательского интерфейса работают медленно, менее надежны и дороже в сопровождении. Мы пришли к выводу, что следует оставить несколько больших высокоуровневых смоук-тестов для проверки сквозных интеграционных сценариев, а остальные тесты должны быть как можно меньшего размера.
— Большая часть контента и пользовательский интерфейс YouTube работают на Flash. Как вы это тестируете? У вас есть волшебные приемы, позволяющие делать это через Selenium?
Эппл: Никакой магии, к сожалению. Если не считать огромное количество проделанной работы волшебством. Наши JavaScript API торчат наружу, и мы можем использовать Selenium для их тестирования. Еще есть программа определения различий pdiff, которая помогает в тестировании отображения превью, определения границ экрана и прочего. Мы делаем серьезную промежуточную обработку потока HTTP для прослушивания трафика, чтобы больше знать об изменениях на странице. Фреймворки As3Unit и FlexUnit помогают нам проверять различные состояния приложения и сравнивать графические изображения. Я бы хотела назвать это магией, но чтобы все это стало реальным, написано очень много кода.
— Какой самый серьезный баг нашла и не пустила к пользователям твоя команда?
Эппл: Самые серьезные баги обычно не так интересны. Был забавный баг в CSS, из-за которого браузер IE вылетал. До этого мы еще никогда не видели, чтобы баги CSS приводили к аварийному завершению браузера.
Нам запомнился один коварный баг, который поймали во время запуска новой страницы просмотра в 2010 году. Когда пользователь в IE7 выводил курсор за пределы области воспроизведения, проигрыватель через какое-то время зависал. Это интересный случай, потому что пользователи столкнулись бы с этим, только если бы долго смотрели один видеоролик и двигали курсором. Тогда все постепенно начинало тормозить, пока проигрыватель не зависал окончательно. Оказалось, что проблемы возникали из-за обработчиков событий и ресурсов, которые не освобождались, многократно выполняя одни и те же вычисления. Если пользователь смотрел короткие ролики или сидел спокойно и не двигал мышкой, баг не проявлялся.
— Расскажи о самом успешным и самом неуспешном моментах тестирования YouTube.
Эппл: Самым успешным был инструмент для получения и проверки проблемных URL-адресов. Эти простые тесты очень сильно помогли нам быстро отлавливать критические баги. Мы добавили фичу, которая упрощала отладку тем, что выдавала данные трассировки стека. Разработчикам стало проще выявлять причины проблем и исправлять их. Этот инструмент стал нашим первым флангом защиты при развертывании и сэкономил тестировщикам очень много времени. После небольшой доработки мы настроили его для самых популярных URL-адресов из наших логов и для добавочного списка URL-адресов, отобранных вручную. Это принесло много пользы.
Пожалуй, наименее успешным аспектом было то, что мы полагались на ручное тестирование во время наших еженедельных авралов. Учитывая то, что времени для тестирование мало, код замораживается и выкатывается на бой в тот же день, многие изменения в пользовательском интерфейсе очень трудно автоматизировать, ручное тестирование все еще играет важную роль в нашем процессе выпуска. Это серьезная проблема, и я хотела бы найти для нее достойное решение.
— Сайт YouTube управляется данными, а большая часть контента определяется алгоритмами. Как вы следите за тем, чтобы правильные видеоролики отображались вовремя и в нужном месте? Твоя команда проверяет качество видеоматериала? Если проверяет, то как вы это делаете?