Книга: Как тестируют в Google
Требования к выполнению тестов
Требования к выполнению тестов
У системы выполнения тестов в Google одинаковые требования ко всем тестам.
— Каждый тест должен быть независим от других, чтобы тесты могли выполняться в любом порядке.
— Тесты не должны иметь долгосрочных последствий. После их завершения среда должна возвращаться в то же состояние, в котором она находилась при запуске.
Требования простые и понятные, но выполнить их оказывается не так просто. Даже если сам тест отвечает требованиям, тестируемая программа может их нарушать, сохраняя файлы данных или изменяя конфигурацию. К счастью, сама среда выполнения тестов Google упрощает соблюдение этих требований.
Что касается требования независимости, инженер во время прогона может установить флаг выполнения тестов в случайном порядке. Эта фича помогает выявить зависимости, связанные с порядком выполнения. Впрочем, случайный порядок может означать, что тесты запускаются параллельно. Система может отправить выполнять два теста на одной машине. Если каждый тест требует единоличного доступа к ресурсам системы, один из них упадет. Например:
— оба теста пытаются подключиться к одному порту для единоличного получения сетевого трафика;
— оба теста пытаются создать каталог, используя один путь;
— один тест создает и заполняет таблицу базы данных, а другой пытается удалить ту же таблицу.
Такие конфликты могут вызывать сбои не только в самих тестах, но и в соседних тестах, которые выполняются в той же системе, даже если эти другие тесты соблюдают правила. Наша система умеет выявлять такие ситуации и оповещать владельцев тестов-бунтарей.
Если установить специальный флаг, тест будет выполняться единолично на выделенной машине. Но это лишь временное решение. Все равно придется переписать тесты и удалить зависимости от критических ресурсов. Например, эти проблемы можно решить так:
— каждый тест запрашивает свободный порт у системы выполнения тестов, а тестируемая программа динамически к нему подключается;
— каждый тест создает все папки и файлы во временной директории, созданной и выделенной системой специально для него перед выполнением тестов;
— каждый тест работает со своим экземпляром базы данных в изолированной среде с выделенными системой выполнения тестов директориями и портами.
Ребята, ответственные за сопровождение системы выполнения тестов Google, довольно подробно описали свою среду выполнения тестов. Их документ называется «Энциклопедией тестирования Google», и он отвечает на все вопросы о том, какие ресурсы доступны тестам во время выполнения. «Энциклопедия тестирования» составлена как стандартизированный документ, где у терминов «должен» и «будет» однозначное значение. В энциклопедии подробно объясняются роли и обязанности тестов, исполнителей тестов, систем хостинга, рантайм-библиотек, файловых систем и т.д.
Вряд ли все инженеры Google читали «Энциклопедию тестирования». Скорее всего, большинство предпочитает учиться у других, или испытывать метод проб и ошибок, или постоянно натыкаться на комментарии рецензентов их кода. Они и не подозревают, что общая среда выполнения тестов может обслужить все проекты по тестированию Google. Чтобы это узнать, достаточно заглянуть в энциклопедию. Им неизвестно, что этот документ — главная причина того, что тесты ведут себя в общей среде ровно так же, как и на личной машине написавшего тест инженера. Технические детали даже самых сложных систем остаются незамеченными теми, кто их использует. Все же работает, зачем читать.
- Жизнь разработчика в тестировании
- Как организованы процессы разработки и тестирования
- Кто такие разработчики в тестировании на самом деле?
- Ранняя стадия проекта
- Структура команды
- Проектная документация
- Интерфейсы и протоколы
- Планирование автоматизации
- Тестируемость
- Как появились очереди на отправку и непрерывная сборка Джефф Карролло
- Пример работы разработчика в тестировании
- Выполнение тестов
- Определения размеров тестов
- Как мы используем размеры тестов в общей инфраструктуре
- Преимущества разных размеров тестов
- Требования к выполнению тестов
- Тестирование на скоростях и в масштабах Google Пуджа Гупта, Марк Айви и Джон Пеникс
- Тест-сертификация
- Как мы собеседуем на позицию разработчиков в тестировании
- Как мы используем размеры тестов в общей инфраструктуре
- 1. Требования к табличной форме представления отношений
- Часть III Конструктор речевых модулей для скриптов и стандартов продаж Изменения в продажах и требования к речевым модул...
- 2.3. Общие требования к рекламе
- Глава 2 Выбираем рассылочный сервис (требования, обзор существующих решений и личные рекомендации)
- Три силы и четыре требования
- ГЛАВА 3 СПЕЦИАЛЬНЫЕ ТРЕБОВАНИЯ К ОТДЕЛЬНЫМ ВИДАМ РЕКЛАМЫ
- Тестовые данные (Test Data)
- Листинг 8.2. Общий код, используемый во всех приведенных ниже вариантах тестов
- Обязательства по выполнению
- Обязательные требования
- Требования к серверу Kerberos