Как тестируют в google
Дж. Уиттакер, Дж. Арбон, Дж. Каролло
Как тестируют в Google
Всем тестировщикам из Google, Microsoft и всех остальных компаний, которые заставили меня мыслить нестандартно.
Джеймс А. Уиттакер
Моей жене Хизер и моим детям Луке, Матео, Данте и Одессе, которые думали, что я все это время работал в Starbucks.
Джейсон Арбон
Маме, папе, Лорен и Алексу.
Джефф Каролло
Предисловие к русскому изданию
Я пришла в тестирование в 2006 году маленьким тестировщиком на большой аутсорсный проект. Сначала я научилась тестировать, заводить баги и общаться с разработчиками и менеджерами. Со временем я стала писать тесты, научилась планировать и управлять тестированием. У меня появилась своя команда.
И чем дальше, тем больше мне становилось понятно, что тестировщики только находят проблемы, но не могут их исправить. Они не могут сделать так, чтобы проблема больше не повторилась. И я чувствовала, что тестирование может приносить больше пользы.
Я начала ездить на конференции, читала книги и статьи по тестированию, общалась с коллегами по индустрии. Везде учили, как лучше тестировать, как находить больше ошибок, как быстрее находить ошибки. Тестировщики не хотели выходить за рамки своей профессии. Им как будто нравилось чувствовать собственную важность от того, что они нашли много багов.
Ответы на свои вопросы я нашла в статьях и докладах Джеймса Уиттакера. Его основная идея в том, что тестирование должно перестать просто предоставлять информацию и начать влиять на качество. Главная задача тестирования, говорил Уиттакер, — это уменьшение количества ошибок в процессах разработки. Тогда улучшится качество выпускаемого продукта.
Создать процесс, в котором сложно допустить ошибку, — вот настоящая цель тестирования. Мы не можем полностью избавиться от ошибок, но можем построить работу так, что сделать сразу правильно будет легче, чем ошибиться.
В Google пошли именно в эту сторону, отказавшись от тестирования, которое просто сообщало об ошибках. «Служба тестирования» трансформировалась в «Направление продуктивности разработки», которое помогает разработчикам и менеджерам делать меньше ошибок и получать обратную связь как можно раньше. Тестировщики в Google влияют на качество, потому что встраивают его на всех этапах разработки программных продуктов.
Книга «Как тестируют в Google» рассказывает, как тестировщики в Google пришли к пониманию, что нужно меняться, как строили новые процессы, каких результатов достигли и как видят дальнейшее развитие тестирования. Очень здорово, что компания Google настолько открыта и делится своим опытом. Но все же, я думаю, что именно приход Уиттакера в Google послужил катализатором процесса написания этой книги. Слишком уж много у него энергии и желания делиться знаниями с внешним миром.
Я начала переписываться с Уиттакером в 2009 году, а в марте 2010-го познакомилась с ним лично на конференции Swiss Testing Day. Он оказался очень простым в общении. С ним можно было обсудить тренды мирового тестирования и посмеяться над тестировщиками-консерваторами. Джеймс очень остроумный и харизматичный оратор. В 2011-м я слушала его мастер-класс «Как тестируют в Google» на конференции EuroSTAR. Он легко парировал реплики из зала вроде «в авиационном софте не получится сделать так, как в Google» простой фразой «так вы даже не пробовали».
Эта книга повторяет легкий и остроумный стиль общения Джеймса. Вы почувствуете характер Уиттакера, читая ее. Мы очень старались сохранить в переводе эту легкость и живость. Я хотела, чтобы текст получился таким, как будто его написал кто-то очень знакомый: наш коллега, который говорит на том же языке, что и мы. В итоге книга получилась не похожей на большинство технических книг на русском языке, переведенных сухо и формально.
Если вы начинающий тестировщик — прочитайте книгу сейчас, а потом еще раз через год. Если вы опытный тестировщик — дайте ее почитать вашим разработчикам и менеджерам. Если они не загорятся идеей сделать тестирование «как в Google», задумайтесь, стоит ли с ними работать. Если вы менеджер или разработчик — прочитайте и сравните с тем, как работает тестирование в вашей компании.
Пожалуйста, будьте осторожны. Не нужно следовать советам ребят из Google вслепую: то, как у них реализованы процессы, лишь частный случай. Вычлените из книги главное: тестирование как выделенная проверка не работает, тестировать должен каждый участник проекта, качество нужно встраивать на все уровни разработки. Если применить эти принципы в вашей компании, скорее всего, вы получите совершенно другую реализацию.
Как тестируют в гугл
Сегодня в #mustreadfortesters книга авторов Джефф Каролло, Джеймс Уиттакер, Джейсон Арбой «Как тестируют в Google»
Возможно, эту книгу не отнести к списку книг, которые обязательно нужно прочитать. Но довольно интересно читать как же устроено тестирование в таких огромных компаниям, как Google.
В книге много интересного — про ошибки и победы, про проблемы, с которыми встречались, а также про то, как их решали, про изменения в структуре, которые были необходимы и многое другое.
Одна из таких проблем — это автоматизация тестирования и получение быстрой информации о работоспособности влитого в ветку кода и общей ответственности за результат. Авторы приводят пример того, как они повесили у столов каждой команды лампы, которые меняли свет в зависимости от результатов прогонов. Если тесты падали на влитом коде, все знали (в том числе ребята из других команд), что что-то сломано и надо идти и исправлять.
Довольно простой язык, не очень много технической информации. Возможно не зайдет совсем новичкам, так как авторы не тратят много времени на объяснение базы.
Как тестируют в Google

В книге описано тестирование программных продуктов в Google: как устроены процессы, как организованы команды, какие техники используются, кто ответственен за качество. Принципы, на которых построено тестирование в Google, применимы в проектах и компаниях любого размера. Авторы книги сами работали над продуктами Google, создавая инструменты тестирования, настраивая процессы и занимаясь непосредственно тестированием. Книга рассчитана на профессионалов из индустрии разработки программного обеспечения: специалистов по тестированию, программистов, менеджеров.
Жанры и теги
Редактировать
Отзывы 7
Смотреть все отзывы
Сначала популярные

7 марта 2015
Полезная и легко читаемая книга об автоматизированном тестировании в Google
Книга представляет собой компиляцию множества интервью и сообщений в блогах, посвящённую подходам к тестированию ПО в Google. Из изложенных в книге идей можно выделить следующие:
Автоматизируйте всё, что подлежит автоматизации.
Не молитесь на программу-методику испытаний, она – фальшивая библия тестировщика
Тестировщик и программист – по сути, одна и та же специальность, требующая постоянной работы с кодом
В книге описано очень интересных технологий, в частности, описан BITE – встроенный в Chrome компонент помогающий сформировать обращение в bugtracking-систему.
Из не имеющей непосредственного к теме книги, но занятной информации, я бы отметил описание роли и места Индии (Хайдарабада) в успехе Google. Так же пикантным моментом, связанным с автором книги является факт его ухода из Google в 2012 году (вернулся в Microsoft) из-за конфликта с руководством по поводу Google+.
Я бы рекомендовал эту книгу как обязательную к прочтению всем, кто серьёзно озабочен проблемой обеспечения качества программного обеспечения. Лично меня эта книга вдохновила на автоматизацию тестирования ПО с использованием Python в нашей компании.
Блог

На прошлой неделе, специалист по тестированию компании «Ардекс», выступил с докладом на тему: «Как тестирует в Google?», основываясь на материале книги «How Google Tests Software» 2014г.
Книга «How Google Tests Software» (Как тестируют в Google) рассказывает, как тестировщики в Google пришли к пониманию, что нужно меняться, как строили новые процессы, каких результатов достигли и как видят дальнейшее развитие тестирования.
Подход Google к тестированию на первый взгляд парадоксален: во всей компании меньше выделенных тестировщиков, чем у многих конкурентов в одной команде разработки. В Google вся ответственность за качество лежит на тех, кто пишет код. Каждый, кто пишет код в Google, — уже немного тестировщик, а качество — это проблема всего коллектива. Каждый инженер является и тестировщиком. С одной стороны, качество и не создается тестированием, с другой — без тестирования сделать качественный продукт невозможно. Нужно перестать рассматривать разработку и тестирование по отдельности. Тестирование и разработка идут рука об руку. Тестирование не отдельная практика, это часть самого процесса разработки. Одним только тестированием качества не добиться. Рецепт получения высокого качества: смешивать разработку и тестирование, пока они не станут единой субстанцией.
Тестировщиков в классическом понимании в Google мало. В Google считают, что лучше всего протестирует свой код тот, кто его написал, т.е. разработчик. Разработчики больше всех заинтересованы в коде без багов. Вот почему Google обходится таким небольшим числом тестировщиков — за качество отвечают разработчики. В итоге качество достигается предотвращением, а не выявлением багов. Качество — часть разработки, а не тестирования. В Google тестирование определяет, насколько хорошо они предотвращают ошибки. Подход Google к созданию продуктов подразумевает слияние разработки и тестирования.
Google выделили три основных роли команды:
- Разработчик (Software Engineer, SWE) — пишет код функциональности приложений, создает проектную документацию, определяет структуры данных и общую архитектуру, большую часть времени пишет код и проводит код-ревью. Разработчик пишет много тестового кода, например во время юнит-тестирования, отвечает за качество всего кода, к которому он прикасается: пишет, исправляет или вносит изменения.
- Разработчик в тестировании (Software Engineer in Test, SET) — фокусируется на тестируемости кода и создании инфраструктуры тестирования, анализирует архитектуру, уделяет особое внимание качеству кода и рискам проекта, выполняет рефакторинг, чтобы сделать код тестируемым, пишет фреймворки юнит-тестирования и средства автоматизации.
- Инженер по тестированию (Test Engineer, TE) — на первом месте находятся пользователи и только на втором — разработчики. Инженеры по тестированию ориентированы на «человеческую сторону»: как пользователи будут взаимодействовать с приложением и какие проблемы при этом могут возникнуть.
В Google вместо того чтобы разделять тестирование на модульное, интеграционное и системное, делят все тесты на малые, средние и большие, исходя из их охвата, а не размера.
- Малые тесты — проверяют работу каждой единицы кода независимо от ее окружения: отдельные классы или небольшие группы связанных функций. У малых тестов не должно быть внешних зависимостей и они чаще всего автоматизируются. Выполняются быстро, за несколько секунд и меньше.
- Средние тесты — проверяют взаимодействие между двумя или более модулями приложения. Такие тесты обычно автоматизируются и запускаются реже. Фокусируются на том, чтобы проверить взаимодействие между функциями, которые вызывают друг друга или контактируют напрямую.
- Большие тесты — покрывают не меньше трех функций. Это реальные пользовательские сценарии, которые используют реальные источники данных, а их выполнение может занять несколько часов и даже больше.
Google определяет, в каком объеме проводить тестирование и что именно тестировать, по-разному для каждого конкретного продукта.
Следует сделать вывод, что Google предпочитает выпускать часто и стремится как можно раньше передать продукт пользователям, чтобы быстрее получить обратную связь и внести необходимые изменения.
