Аннотация
Книга "Как тестируют в Google" начинается с предисловия, в котором автор, начавший работу в тестировании в 2006 году, делится своим опытом и прогрессом в области тестирования. Он подчеркивает, что цель тестирования не только в нахождении проблем, но и в их предотвращении, улучшая качество продукта. Основной идеей работы тестирования является уменьшение ошибок в процессах разработки и создание системы, которая предотвращает их возникновение.
Автор рассказывает о том, как в Google тестирование стало частью "Процесса повышения производительности разработки", помогая разработчикам и менеджерам совершать меньше ошибок. Тестировщики в компании активно влияют на качество продукта, работая на всех этапах создания продукта. Благодаря визиту Джеймса Уиттакера в Google были внесены изменения в процессы работы, что послужило стимулом для написания книги.
В тексте отмечается, что качественное тестирование зависит от всего коллектива, а сама формула Google для обеспечения качества может быть применена и в других компаниях. Важно, чтобы каждый участник проекта занимался тестированием, а качество встраивалось на всех уровнях разработки. Предисловие завершается благодарностями за поддержку в проекте и обращением к Джеймсу Уиттакеру от автора.
Далее в книге описывается, как происходит тестирование в Google. Тестирование тесно взаимодействует с разработкой и работает независимо от нее. Компания сохраняет стартап-темпы в работе, несмотря на масштаб проектов. Google выпускает разнообразные программы, применяет открытый и устаревший код, работает с огромными пользовательскими базами и высоким уровнем безопасности. Особенностью тестирования в Google является то, что ответственность за качество лежит на всех сотрудниках, кто пишет код, и каждый инженер также выступает в роли тестировщика.
Отмечается, что в Google нет большой армии тестировщиков, а есть ограниченный элитный отряд, следующий стратегии ограниченности ресурсов для оценки приоритетов и обеспечения высокого качества продукта. Важно, чтобы качественное тестирование зависело от всего коллектива, а качество продукции было свидетельством работы формулы Google. Предлагается, что некоторые части этой формулы могут быть полезны и для других компаний, несмотря на различия. Обсуждается необходимость организации процессов тестирования в условиях активной разработки и обеспечения высокого уровня качества продукта.
Другой отрывок из книги подробно описывает процесс разработки и тестирования веб-обработчика HandleAddUrlFrontendRequest в Google. Разработчик разгружает функцию HandleAddUrlFrontendRequest, выделяя часть ее функциональности во вспомогательные функции. Он пишет юнит-тесты для AddUrlFrontend, используя имитации для бэкенд-системы AddUrlService и тестируя их во время тестирования. Тесты проверяют обработку URL и комментариев, причем имитация может внедрять ошибки и ожидать определенного поведения.
Разработчик обновляет определение сборки, включает новое тестовое правило и запускает тесты. После успешного прохождения всех тестов он отправляет список изменений на рецензирование. После возможного дополнительного рецензирования он отправляет изменения в систему контроля версий. Тест addurl_frontend_test является страховкой для разработчиков, помогая им проверить, не нарушают ли новые изменения существующий функционал веб-обработчика.
В последнем отрывке книги автор рассматривает процесс автоматизации тестирования в больших IT-компаниях, на примере Google. Автоматизация тестирования включает в себя написание, компиляцию, выполнение тестов, анализ результатов и создание отчетов. Важно интегрировать код тестов в процесс разработки основного продукта. В Google была создана общая инфраструктура для компиляции, прогона и отчетности тестов.
Текст также описывает различные типы тестов - малые, средние, большие и громадные. Малые тесты проверяют работу отдельных единиц кода без внешних зависимостей, большие тесты охватывают работу системы в целом, а средние тесты находятся между ними. Важно управлять тестами через тестовую инфраструктуру и определять их размеры для эффективного планирования. Разработчики используют различные сценарии тестирования и выбирают соответствующий размер тестов в зависимости от целей испытаний.