Как тестируют в Google - Каролло Джефф


В 2001 году я присоединился к Google в качестве директора по разработке. Тогда у нас было около двухсот разработчиков и целых три тестировщика! Мои разработчики уже тестировали свой код сами, но метод TDD (Test-Driven Development, разработка через тестирование[2]) и средства автоматизации тестирования (такие как JUnit) только делали свои первые шаги. Поэтому наше тестирование было по большей части случайным и зависело от добросовестности разработчика, написавшего код. Но это нормальная ситуация для стартапа. Нам нужно было двигаться быстро и не бояться рисковать, иначе мы бы не смогли конкурировать с матерыми игроками нашей отрасли.

Однако компания росла, и наши продукты становились все более значимыми для пользователей и клиентов. Возьмем хотя бы AdWords: один из сервисов, за которые я отвечал, он быстро превращался в основной источник монетизации веб-сайтов. Пришло время пересмотреть свой подход к тестированию и увеличить инвестиции в эту область. Имея в арсенале только трех тестировщиков, мы не нашли других вариантов, кроме как попытаться вовлечь в тестирование разработчиков. Я и еще несколько сотрудников Google продвигали, развивали и обучали юнит-тестированию. Мы агитировали разработчиков начать писать тесты и использовать хотя бы JUnit для их автоматизации. Переход шел со скрипом. Идея тестирования собственного кода не вызывала у разработчиков ажиотажа. Для стимулирования сотрудников каждую пятницу на наших пивных вечеринках с говорящим названием «Thanks God, It's Friday!» я награждал разработчиков, которые писали тесты. Я напоминал дрессировщика, который дает собачкам лакомство за выполненный трюк, но, по крайней мере, это привлекало внимание к тестированию. Неужели мне повезло, и я смог заманить разработчиков в тестирование конфетками?

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

К чему такая спешка? Я не верю, что даже самое изощренное тестирование может привести к успеху изначально неудачную идею или непродуманный продукт. Но я верю, что плохое тестирование может загубить хороший продукт, компанию или, по меньшей мере, сможет замедлить ее рост и предоставит фору конкурентам. Это как раз портрет Google того времени. Мы были на пути к успеху, и только проблемы в тестировании удерживали компанию от решающего шага в светлое будущее. Нужно было выработать верные стратегии тестирования, адекватные нашим сверхзвуковым скоростям роста числа пользователей, продуктов и сотрудников. Мы вовсю применяли инновационные решения, нестандартные подходы и уникальные инструменты нам нельзя было замедляться. Конечно, не все работало. Но в процессе мы получили ценные уроки и научились практикам, которые теперь может применить любая компания, желающая развиваться со скоростью Google. Мы поняли, как сохранить баланс между качеством продукта и скоростью разработки, не теряя ни в чем. Эта книга рассказывает о процессе, к которому мы пришли, о том, какие идеи лежат в его основе, и почему он работает. Если вы хотите понять, как Google справляется с проблемами тестирования в XXI веке, в среде современных интернет-, мобильных и клиентских приложений вы обратились по адресу. Конечно, я хотел бы оказаться тем человеком, который рассказал бы вам все это, но Джеймс и его соавторы уже сделали это за меня. Главное, что им удалось передать суть тестирования в Google.

И последняя ремарка: Джеймс Уиттакер человек, благодаря которому эта книга написана. Он пришел в Google, проникся нашей культурой, взялся за большие и важные проекты, выпустил такие громкие продукты, как браузер Chrome, операционная система Chrome OS и десятки других поменьше. В какой-то момент он стал лицом тестирования в Google. В отличие от его других книг, в этой большая часть материала не его авторства, он скорее выступил в роли корреспондента с места события и представил свой репортаж об эволюции тестирования ПО в Google. Помните об этом, читая книгу, потому что Джеймс наверняка постарается прибрать всю славу себе!

Пока население Google росло с 200 до 20 000 сотрудников, было немало людей, которые оставили свой след в разработке и благодаря которым наши идеи тестирования живут. Джеймс благодарит многих из них. Они появляются на страницах книги в отступлениях и интервью. Тем не менее ни я, ни Джеймс не сделали так много, как Патрик Коупленд архитектор нашей текущей организационной структуры и руководитель направления продуктивности разработки Google. Все тестировщики Google подотчетны Патрику. Это его видение реализовалось в наших подходах и вот теперь описано в этой книге Джеймсом. Если есть человек, благодаря которому тестирование ПО в Google организовано именно так, то это Патрик Я говорю это не просто потому, что он мой начальник. Я говорю это потому, что он мой начальник, а еще он приказал мне это сказать!


Альберто Савоя директор по разработке и популяризатор инноваций в Google. Он пришел в компанию в 2001 году и возглавил выпуск Google AdWords, а кроме того, сыграл ключевую роль в развитии культуры разработки и юнит-тестирования в компании. Он написал книгу «The Way of Testivus» и раздел «Beautiful Tests» в книге издательства OReilly «Beautiful Code».


Примечание от Джеймса Уиттакера: Согласен на все сто! Я ничего не придумывал, просто пересказал схему организации, которую создал Патрик. И я говорю это не потому, что он разрешил мне написать эту книгу. Как мой начальник, он заставил меня написать ее!

Вступление от Патрика Коупленда

Мое приключение в Google началось в марте 2005 года. Если вы прочитали вступление Альберто, то вы уже примерно представляете, что тогда происходило в компании. Google был еще маленький, но в нем уже начали проявляться признаки болезни роста. Это было время стремительных технологических изменений: на замену клиент-серверной модели приходили динамический контент и облачные технологии.

В первую неделю я, как и остальные новички, сидел в фирменной трехцветной кепке с пропеллером, слушая, как основатели компании обсуждают корпоративную стратегию на еженедельном собрании «Thanks God, Its Friday». Тогда я еще не понимал, во что влип. Я был наивен настолько, чтобы испытывать энтузиазм, и достаточно опытен, чтобы начать подозревать неладное. Мой предыдущий опыт с пятилетними циклами разработки продукта выглядел не очень убедительно по сравнению со скоростью роста и масштабами Google. Что еще хуже, я был единственным тестировщиком в кепке новичка. Я надеялся, что где-то есть и другие!

Когда я пришел в Google, там было не больше тысячи инженеров. В команду тестирования входили 50 штатных сотрудников и несколько временных, которых я никогда не мог запомнить. Все это называлось «Службой тестирования». Она занималась тестированием пользовательского интерфейса и прыгала с проекта на проект по мере надобности. Как можно догадаться, это была не самая популярная команда Google.

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

Воспитание Адольфуса не было похоже на мое воспитание. Счастливый малый! он обедал с обожавшими его родителями и его угощали, как принца Уэльского. Ему всегда предлагали тот именно кусок, к которому я всей душой тщетно стремился, и если он просил вторую порцию вишневого пирожного, его мамаша приходила в восторг, и восклицала: "милый крошка! какой у него аппетит!" Когда он являлся, разгоряченный беганьем, его так поливали одеколоном, что его приятно было понюхать; когда ночь была холодная, в его спальне разводили такой огонь, что он мог в одном белье танцевать пред камином. Иногда родители его находили, что Адольфусу полезно будет выпить полстакана портвейну и ломтики хлеба с маслом, равно как и поджаренные гренки, всегда были готовы к его услугам. Однако, сколько я знаю, здоровье его от этого ни мало не страдало. Я видал, правда, как он отпускает пояс после обеда, но он делал это не потому, что его схватывали судороги, а потому, что пояс становился немножко уже и несколько теснил его.

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

Я уже предавался более серьезным наукам ходил по больницам и обкуривал новые трубки, изучал анатомию и совершенствовался по части питья пунша когда мой старый товарищ, Адольфус Икль, прибыл в Лондон. Оба его родители умерли, завещав всё дорогому детищу, и обещав не упускать его из виду, и покровительствовать ему, и беречь его с того света.

Несмотря на это, он впал в совершеннейшее уныние и отчаяние. Мать умерла в его объятиях. Он, плача, говорил мне, что чувствует её последнее дыхание на своей щеке, и даже показал мне местечко, где именно. Никогда, кажется, не бывало такого согласного, друг друга любящаго семейства, и, проведя шесть лет в Лондоне, я с отрадным изумлением замечал подобную нежность и мягкость чувств.

Таким образом, Адольфус Икль, богатый нежными чувствами и звонкою монетой, был брошен в житейский водоворот. Добродетельный молодой человек, однако, не устоял на ногах. Я, со всеми своими испытаниями и неприятностями по части медицины и хирургии, я, который никогда не имел пенни до тех пор, пока случайно не поднял одного на Оксфордской улице я в конце-концов гораздо успешнее и лучше справился с своими делами. Я могу теперь звонить в свой собственный колокольчик так громко, как мне угодно, могу давать щелчки и толчки своему рассыльному мальчику, когда нахожусь в дурном расположении духа, или куражиться над кухаркой, заставляя ее по нескольку раз в день отчищать медную дощечку на двери медную дощечку, на которой вырезано изящнейшим образом: "Джон Тодд, лекарь. Прививание оспы бесплатно".

Но теперь не время распространяться о настоящем блогополучии, а надо возвратиться к эпохе голода, холода и всяких бедствий, к той эпохе, когда Адольфус впервые прибыл в Лондон.

Мне стоило несказанных трудов и изворотливости пропитаться, прикрыть кое-как грешное тело и заплатить за квартиру. В те дни я полагал, что невозможно быть несчастным, имея пятьдесят фунтов в неделю. В моих глазах, Адольфус был счастливейшим из смертных. Он жил в изобилии и роскоши,  я же был по уши в долгу, и моя хозяйка вечно следила, не несу ли я, выходя из дому, узелка; она даже бежала за мной вдогонку, если ей представлялось, что карманы у меня подозрительно оттопыривались.

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

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

Однажды я прихожу к нему (у него были четыре великолепнейшие комнаты, а я, увы! мостился на чердаке!) и застаю его за завтраком (паштет из дичи, ветчина, яйца и у него ни капли апетита, а я ничего не ел с утра, кроме мерзкого, грошового кусочка колбасы!)

 Что, Долли? Еще не завтракал?  крикнул я.  Я, пожалуй, составлю тебе компанию,  прибавил я, направляясь к паштету.  Был на танцевальном вечере?  спросил с полным ртом.

 Да,  ответил он.  Я приехал от леди Лобстервиль в пять часов утра. Не хотите ли шэрри?

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

 На этом вечере, я думаю, были прелестные женщины, Долли?

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

Вот что значит иметь тысячу-двести фунтов годового доходу! Для бедных парней, перебивающихся фунтом в неделю, не затевают пикников!

Грум вошел с почтительным вопросом, когда подавать экипаж.

 Хотите, поедемте верхом в Ричмонд?  спросил Долли.

Я называю подобные вопросы оскорблением. Он должен был бы видеть, что на мне ветхие ботинки и мои колени должны были достаточно показать ему, что, если я только попытаюсь занести ногу в стремя, то панталоны мои лопнут и расползутся, как мокрая оберточная бумага. Грум (бесподобно одетый негодяй, розовый и пухлый, как принц) непременно оскалил бы зубы при моем ответе: "не могу, любезный друг; у меня есть спешное дело", если бы я не посмотрел на него многозначительным взглядом.

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

Да, все льстили ему, все преклонялись перед его богатством!

A ведь, собственно говоря, что такое деньги? Разве после того, как вы насытились простою бараниной, вы станете завидовать какому-нибудь жареному лебедю, приготовленному для богача? Заплатив всё золото Ломбард-Стрит, разве вы можете прибавить себе вершок росту? Всё богатство барона Ротшильда разве может преобразить курносый нос в греческий? Нет; и вот тут-то мы, высокие, рослые, стройные парни, превосходим вас, богатых, слабосильных карликов.

Маленький Долли Икль, как он ни вытягивался, имел, в двадцать-три года, всего четыре фута десять вершков. Это было его проклятием. Я столько раз замечал, как он взглядывал на мои великолепные ноги и вздыхал; потом печально подымал глаза на мою величественную грудь, и вздыхал опять; наконец, устремлял взоры на мой внушающий почтение нос, и думал, с какою радостью он отдал бы половину своего состояние за такие члены и черты!

Дальше