Архитектура автоматизации: Программирование на основе тестов (test-first programming)

Проблема: Как можно быть уверенным что разрабатываемый код работает правильно, при этом создавая регрессионные тесты для последующего рефакторинга кода?

Решение: Пишите тесты до создания кода. Они будут способствовать созданию правильного дизайна и мотивировать в процессе кодирования.

Контекст:

  • Участники: Эту технику применяют программисты или автоматизаторы, которые разрабатывают код.
  • Продукт: Обычно используется для тестирования интерфейсов, которые вызываются внутри разрабатываемого кода.
  • Цели: Протестировать код до того, как он будет поставлен в использование. А также, предоставить автоматизированные тесты для разработанного кода.

Стратегия тестирования:

  • Создание тестов: Тесты пишутся на том же языке/в том же окружении, на котором пишется продукт (для большей переиспользуемости).
  • Выполнение тестов: Тесты выполняются в среде для модульного тестирования.
  • Оценка результатов тестов: Ожидаемые результаты определены заблаговременно.

Атрибуты качества:

  • Сопровождение и поддержка: Средняя. Тесты сопровождаются одновременно с основным кодом. Существование модульных тестов помогает проводить рефакторинг и другие изменения в коде.
  • Проверка: Средняя. Тесты могут быть проанализированы другими программистами. 
  • Целостность и зависимость: Средняя. Данная техника побуждает сначала разработать тесты, запустить, проверить ошибки, и только потом создавать код, который сможет пройти эти тесты. Это предупреждает возникновение серъезных проблем, которые могли случайно оказаться в коде.
  • Возможность повторного использования: Низкая.

Следующий шаг:
Ограниченное использование графического интерфейса может быть использован для тестирования графического интерфейса пользователя.