Здесь Майк Клифтон описывает 24 тестовых шаблона 2004 года. Это полезная эвристика при разработке модульных тестов.
http://www.codeproject.com/Articles/5772/Advanced-Unit-Test-Part-V-Unit-Test-Patterns
Паттерны Pass / Fail
Эти шаблоны - ваша первая линия защиты (или атаки, в зависимости от вашей перспективы), чтобы гарантировать хороший код. Но будьте осторожны, они вводят вас в заблуждение в том, что говорят вам о коде.
- Шаблон простого теста
- Шаблон кода-пути
- Шаблон диапазона параметров
Шаблоны транзакций данных
Шаблоны транзакций данных - это начало решения проблем сохранения данных и обмена данными. Больше на эту тему обсуждается в разделе «Модели симуляции». Также в этих шаблонах намеренно пропускаются стресс-тесты, например, загрузка на сервер. Это будет обсуждаться в разделе «Образцы стресс-теста».
- Шаблон Simple-Data-I / O
- Шаблон ограничения данных
- Шаблон отката
Шаблоны управления коллекцией
Многое из того, что делают приложения, - это управление коллекциями информации. Хотя программисту доступно множество коллекций, важно проверить (и, таким образом, документально подтвердить), что код использует правильную коллекцию. Это влияет на порядок и ограничения.
- Шаблон заказа-коллекции
- Шаблон перечисления
- Образец коллекции-ограничения
- Шаблон индексации коллекции
Образцы исполнения
Модульное тестирование должно касаться не только функции, но и формы. Насколько эффективно тестируемый код выполняет свою функцию? Как быстро? Сколько памяти он использует? Эффективно ли компенсируется вставка данных для извлечения данных? Правильно ли высвобождает ресурсы? Все это входит в сферу юнит-тестирования. Включая шаблоны производительности в модульное тестирование, разработчик имеет цель достичь, что приводит к улучшению кода, улучшению приложения и более счастливому клиенту.
- Образец теста производительности
Шаблоны процессов
Юнит-тестирование предназначено для проверки, ну, в общем, юнитов ... основных функций приложения. Можно утверждать, что процессы тестирования должны быть отнесены к процедурам приемочных испытаний, однако я не согласен с этим аргументом. Процесс - это просто другой тип устройства. Процессы тестирования с помощью модульного тестера предоставляют те же преимущества, что и другие модульные тесты - в нем документируется способ, которым должен работать процесс, и тестировщик может помочь исполнителю, выполняя также последовательное тестирование процесса, быстро выявляя потенциальные проблемы пользовательского интерфейса, такие как Что ж. Термин «процесс» также включает переходы состояний и бизнес-правила, которые должны быть проверены.
- Шаблон последовательности процессов
- Шаблон состояния процесса
- Шаблон правил процесса
Моделирование
Транзакции данных сложно проверить, потому что они часто требуют предустановленной конфигурации, открытого соединения и / или онлайн-устройства (и многие другие). Поддельные объекты могут прийти на помощь, имитируя базу данных, веб-службу, пользовательское событие, соединение и / или аппаратное обеспечение, с которым выполняется код. У фиктивных объектов также есть возможность создавать условия отказа, которые очень трудно воспроизвести в реальном мире - соединение с потерями, медленный сервер, неисправный сетевой концентратор и т. Д.
- Шаблон макета объекта
- Шаблон сервис-симуляции
- Шаблон симуляции битовых ошибок
- Шаблон моделирования компонентов
Многопоточность
Модульное тестирование многопоточных приложений, вероятно, является одной из самых трудных задач, потому что вы должны установить условие, которое по своей природе должно быть асинхронным и, следовательно, недетерминированным. Эта тема, вероятно, сама по себе является основной статьей, поэтому я приведу здесь только очень общий шаблон. Кроме того, для правильного выполнения многих тестов многопоточности приложение тестера модулей должно само выполнять тесты как отдельные потоки, чтобы тестер модулей не отключался, когда один поток переходит в состояние ожидания
- Сигнальный паттерн
- Шаблон разрешения тупиковых ситуаций
Шаблоны для стресс-теста
Большинство приложений тестируются в идеальных средах - программист использует быстрый компьютер с небольшим сетевым трафиком, используя небольшие наборы данных. Реальный мир совсем другой. До того, как что-то полностью сломается, приложение может испытывать ухудшение качества и плохо реагировать или с ошибками для пользователя. Модульные тесты, которые проверяют производительность кода в условиях стресса, должны встречаться с таким же рвением (если не больше), чем модульные тесты в идеальной среде.
- Шаблон для массовых данных-стресс-тестов
- Шаблон Resource-Stress-Test
- Шаблон теста на нагрузку
Шаблоны слоев презентации
Одним из наиболее сложных аспектов модульного тестирования является проверка того, что информация поступает к пользователю прямо на самом уровне представления и что внутренняя работа приложения правильно устанавливает состояние уровня представления. Часто уровни представления связаны с бизнес-объектами, объектами данных и логикой управления. Если вы планируете модульное тестирование уровня представления, вы должны понимать, что четкое разделение задач является обязательным. Частью решения является разработка соответствующей архитектуры Model-View-Controller (MVC). Архитектура MVC предоставляет средства для разработки хороших методов проектирования при работе с уровнем представления. Однако этим легко злоупотреблять. Требуется определенная дисциплина, чтобы убедиться, что вы действительно правильно реализуете архитектуру MVC, а не просто одним словом.
- Тестовый шаблон состояния просмотра
- Тестовая таблица состояния модели