Часть 1. Люди, организация и методы
Глава 6. Основы системы контроля качества
чали писать автоматизированные регрессивные тесты для
ключевых функций, запускать их каждый день и немед-
ленно устранять серьезные неполадки.
Чаще всего автоматизацию критикуют из-за времени,
необходимого для создания хороших тестовых заданий. Да,
тестовые задания требуют материальных и трудовых затрат,
но, созданные на совесть, они приносят большие дивиден-
ды. Я рекомендую выделить нескольких специалистов по
автоматизации, чьей задачей в цикле разработки будет
только написание автоматизированных тестовых заданий.
Время, необходимое для поддержания адекватности те-
стов будущим выпускам, также является объектом нападок.
Особенно это относится к автоматизации тестирования
пользовательского интерфейса. Если между выпусками в
вашем пользовательском интерфейсе происходят серьез-
ные изменения, то тестовые сценарии могут не работать и
потребовать больших усилий для их совершенствования.
По этой причине при автоматическом тестировании сле-
дует сосредоточиться на функциях, не относящихся к
пользовательскому интерфейсу. Автоматизируйте тестиро-
вание ключевых функций, а не деталей пользовательского
интерфейса.
Отличная идея — строить продукт, изначально рассчи-
танный на тестирование. Если вы минимизируете свою за-
висимость от пользовательского интерфейса и создадите
альтернативные способы ввода данных и просмотра выход-
ных данных, то будете защищены от изменений в интер-
фейсе. Например, рассмотрите возможность использова-
ния файлов, записей реестра, параметров командной стро-
ки и СОМ-интерфейсов передачи входных данных. Для
вывода данных вы можете использовать текстовые файлы,
распечатку значений переменных или готовые компонен-
ты, специально предназначенные для этой цели. Я не гово-
рю о том, что пользовательский интерфейс не должен быть
протестирован, — просто приоритетным должно быть
автоматизированное тестирование ключевых функций
продукта. Однако если вы решили автоматизировать тести-
рование пользовательского интерфейса, начните с «контакт-
ного» тестирования. При этом, чтобы проверить функцио-
нальность всего интерфейса, вызываются и закрываются
все диалоговые окна.
Из собственного опыта
Работая в NuMega над BoundsChecker 5, мы знали, что
команда, создающая внутренние компоненты, значитель-
но опережает команду, занятую пользовательским интер-
фейсом. И мы должны были быть уверены в том, что смо-
жем тестировать продукт, даже если у нас не будет пользо-
вательского интерфейса месяц или больше. Команда,
отвечающая за внутренние компоненты, разрабатывала
простые драйверы, вызывавшие подсистему с данными,
необходимыми для работы. Используя эти драйверы, мы
могли тестировать продукт и убедиться, что он тверд, как
скала, задолго до того, как пользовательский интерфейс
был готов. Помимо раннего тестирования продукта, эти
драйверы предоставляли надежный и простой способ ав-
томатизированного тестирования подсистем разных вы-
пусков.
Команды, процессы и культура
У вас есть опыт создания качественного ПО? Ваши техно-
логические процессы производительны и эффективны или
они обычно занимают кучу времени и ресурсов? Учитыва-
ется ли вопрос качества каждым человеком, участвующим
в разработке ПО? Как далеко вы готовы пойти, чтобы обес-
печить качество? О качестве заботится каждый или есть та-
кие, которые говорят: «это не мой участок»?
128
129