Уиттакер . - Как тестируют в Google
Рабочая команда много сделала для определения роли инженера по тестированию. Например, мы переписали рекомендации по карьерному продвижению. Мы выдвинули новый вариант карьерной лестницы на открытое голосование всего сообщества инженеров по тестированию в Google, и ее приняли. Это было здорово — я даже выписал премию всей рабочей группе, чтобы отпраздновать это событие. Наши идеи исходили «снизу», от людей, работающих в специальности, и поэтому принимались легко. Мы написали рекомендации по проведению интервью и разослали их рекрутерам и инженерам, участвующим в собеседованиях. Я думаю, что сейчас роль инженеров по тестированию определена так же четко, как и роль разработчика в тестировании.
— Ты уже достаточно давно работаешь в Google и знаешь всю подноготную. Можешь выдать нам секретный ингредиент Google? Что делает наше тестирование магическим?
Джеймс: Рецепт такой: возьмите высокую квалификацию тестировщиков, добавьте дефицит человеческого ресурса (который заставляет разработчиков помогать, а тестировщиков — оптимизировать), первым делом автоматизируйте (чтобы люди делали только то, в чем компьютеры не сильны), введите способность работать итеративно и быстро внедрять изменения после обратной связи от пользователей. Смешать, но не взбалтывать! Любая компания, которая захочет воспроизвести нашу организацию тестирования, должна начать с этих четырех ингредиентов.
— Как насчет другой книги? У тебя уже задумана следующая книга по тестированию?
Джеймс: Не знаю, я ведь никогда не планирую книги заранее. Моя первая книга родилась из курсовых заметок, которые я использовал для преподавания тестирования в Политехническом университете Флориды. Однажды после презентации на конференции STAR ко мне подошла женщина и спросила, не думал ли я о написании книги. Вопрос оказался с подвохом, так как она была книгоиздателем. Так родилась серия «How to Break Software». Я написал первую книгу сам до последнего слова и был сильно утомлен процессом, поэтому решил больше не писать в одиночку. Над следующими двумя книгами я работал с соавторами. Хью Томпсон написал книгу «How to Break Software Security», Майк Эндрюс написал «How to Break Web Software», а я помогал им обоим. Это действительно их книги. Я всего лишь написал часть материалов и управлял процессом. Мне нравится писать, но ни Хью, ни Майк не стали бы смущать меня, утверждая, что я пишу лучше, чем они. А вы двое? Я так не думаю. Но факт в том, что без меня никто бы не решился писать. В конечном итоге все, что происходит в моей карьере, заканчивается книгой, а окружающие меня люди становятся соавторами. Будете отрицать?
— Вообще-то читатель сейчас держит в руках доказательство твоих слов. Как тут поспоришь!
Джеймс: Не буду говорить, что я совсем не могу писать в одиночку. «Exploratory Testing» — книга, которая была написана без соавторов. Она появилась из презентаций, которые я проводил на конференциях. Я создал тонну материалов, и со временем их накопилось достаточно на книгу.
А за эту книгу я бы вряд ли взялся, если бы вы двое не согласились помочь. Впрочем, это моя первая книга, которая по-настоящему писалась коллективно. На мой взгляд, каждый из нас внес равный вклад.
— Да, это так, и мы были очень рады возможности поучаствовать. Возможно, в программировании мы сильнее тебя, а Джефф вообще круче всех на этой планете, но ты умеешь создавать легко читаемый текст! Скажи, какая часть книги тебе нравится больше всего?
Джеймс: Мне нравится вся книга. Писать ее было очень интересно. Дело даже не в поиске материала — он у нас уже был. Нам оставалось только записать его. Наверное, если все-таки выбирать любимые части книги, то я выберу интервью. Их было интересно и проводить, и записывать. Надо было с них начинать работу. Беседа с Хун Даном стала для меня настоящим откровением. Он провел для меня экскурсию по своей лаборатории Android, где мы обсуждали философию тестирования, и интервью получилось крайне насыщенным. Я так быстро не записывал со времен аспирантуры. Это было самое ценное время, которое я когда-либо проводил с ним. Я узнал о людях и процессах то, чего не знал раньше. Наверное, это особенность работы журналиста — удается по-настоящему узнать тему.
— А чем бы ты занимался, если бы не попал в тестирование?
Джеймс: В технологической области я, наверное, занимался бы инструментами для разработки и стал бы евангелистом. Мне нравится упрощать создание программного кода. Не все программисты так хороши, как Джефф Каролло! Не могу поверить, что мы до сих пор пишем приложения вручную. Навыки разработчика, которые я освоил в 80-е годы, до сих пор востребованы. Это какое-то безумие. Весь технологический мир изменился, а мы все еще пишем на C++. Почему разработка не упрощается? Почему написание ужасного, ненадежного кода до сих пор остается нормой? Писать хороший код должно быть проще, чем плохой. Я бы работал над этой проблемой.
Евангелизм — тоже очень важная штука. Я, например, люблю выступать перед людьми, мне нравится рассказывать инженерам про технологии. Я думаю, что если кто-то захочет нанять меня, чтобы я весь рабочий день общался с разработчиками, то это может быть даже круче, чем тестирование. Если найдете что-нибудь такое, дайте знать.
— А если бы пришлось работать за пределами технологической области?
Джеймс: С этим сложнее, потому что пока я не вижу для себя иной специальности — я все еще горю этой. Думаю, я мог бы вести курсы менеджмента. Вы, парни, часто говорите мне, что я неплохой менеджер; когда-нибудь я сяду и подумаю над тем, как мне удается не лажать. Может, это станет темой моей следующей книги — «Как быть менеджером и не лажать». Также мне хотелось бы поработать на пользу окружающей среде. Мне нравится эта планета, и я думаю, ее стоит держать в порядке.
Да, и я люблю пиво. Я очень люблю пиво. Когда-нибудь я бы мог сыграть Норма из сериала «Cheers». Могу себе представить: я вхожу в бар, все кричат: «Джеймс!», а тот, кто занимает мой табурет, уступает мне место.
Вот это я называю хорошо сделанной работой. Пожалуй, я бы выписал премию Норму из чистого уважения.
65 Когда мы писали книгу, в Google было шесть директоров по тестированию, у каждого в подчинении находилась небольшая группа тест-менеджеров. Последние обычно руководят рядовыми сотрудниками, но ведущие инженеры часто подчиняются непосредственно своему директору. Такая иерархия должна упрощать совместную работу. Кроме того, многие директора Google (а может, и все) иногда выполняют задачи как рядовые участники проектов.
66 В этом может помочь концепция «20%», о которой мы говорили ранее. Переходя из проекта A в проект Б, инженер занимается проектом Б в свое «двадцатипроцентное» время около квартала, а в следующем квартале меняет пропорции: 80% времени отводится проекту B, а 20% — проекту A.
67 TiVo — компания, которая разработала цифровое устройство для записи видео — TiVo. Устройство по сети связывается с сервером и записывает выбранные пользователем телепередачи или сериалы, которые он может просмотреть в любое время на своем телевизоре.
68 Почитать подробнее о PyAuto можно по адресу: http://www.chromium.org/developers/testing/pyauto
69 Про Autotest можно почитать по адресу http://autotest.kernel.org/
70 Песочница (от англ. sandbox) — отдельное пространство для тестирования программ или приложений. Любые игры в ней не повредят ОС, так как песочница изолирована от системы.
71 The Web Works (you’re welcome) — с английского можно перевести как «Интернет работает (не стоит благодарности)». — Примеч. перев.
72 «Следуй за солнцем» (от англ. — follow the sun) — модель рабочего графика межнациональных компаний, при котором руководитель, находящийся на одном континенте, в конце своего рабочего дня связывается с руководителем на другом континенте (где день только начинается) и передает ему дела, а тот в конце своего рабочего дня передает ему их обратно. Таким образом работа не прерывается, а просто двигается «вслед за солнцем».
73 NeXT — американская компания, основанная в 1985 году Стивом Джобсом. Занималась разработкой платформ для вузов и бизнеса. В 1996 году была куплена Apple.
74 Как оказалось, это неправда: http://ru.wikipedia.org/wiki/Эскимосские_названия_снега.
Глава 5. Как мы улучшали тестирование в Google
Все тестирование в Google можно описать одной фразой: забота о качестве — это ежедневная обязанность каждого инженера. Если это делается на совесть — уровень качества растет. Новый код становится чище, ранние сборки — устойчивее. Критичность интеграционного тестирования падает, а системное тестирование фокусируется на проблемах пользователей. Проекты и инженеры спасены от растущего снежного кома багов.
Если ваша компания достигла такого уровня качества, встает вопрос: «А что дальше?».
Google уже столкнулся с этим «дальше». Пока мы совершенствовали роль тестирования, мы встретились с немалым количеством побочных проблем. В этой главе мы расскажем о наших ошибках и разберем, как тестирование помогает (или мешает) их исправлять. В конце концов, наше тестирование ушло от централизованного управления, повышение продуктивности разработки перестало управляться из одной точки и разошлось по командам. Мы думаем, что когда уровень тестирования достигает зрелости, такая перестановка сил неизбежна. Модель, в которой разработка отделена от тестирования, больше не жизнеспособна в Google.