Понятие паттерна
Паттерны представляют собой удачные решения часто встречающихся задач. Там, где использование процесса разработки тестового сценария приводит к хорошему результату, паттерны позволяют повторно использовать полученные результаты. Там, где использование процесса затруднительно, знание паттернов позволяет выделить части, к которым они применимы. Паттерны позволяют использовать инструментальную поддержку.
Паттерны, описываемые в данной статье, получены на основе анализа более чем десятилетнего опыта разработки тестов ИСП РАН [] в различных проектах:
- Nortel Networks (ядро ОС);
- Luxoft (банковское приложение);
- Intel (стандартная библиотека Java);
- Microsoft Research (протокол IPv6);
- Вымпелком (детализация по счетам);
- НИИ системных исследований РАН (ОС 2000);
- Persistent (Service Data Objects, реализация BEA).
Было проанализировано около трехсот тестовых сценариев. В результате анализа проектов выделено десять наиболее распространенных паттернов. Названия выделенных паттернов, их краткая характеристика и статистика использования показаны в таблице 1.
Длина списка | В качестве обобщенного состояния выбирается длина списка | 13% | 41% |
Размер множества | В качестве обобщенного состояния выбирается размер множества | 17% | |
Размер отображения | В качестве обобщенного состояния выбирается размер отображения | 8% | |
Число вершин дерева | В качестве обобщенного состояния выбирается число элементов дерева | 3% | |
Декартово произведение | В качестве обобщенного состояния выбирается декартово произведение других обобщенных состояний | 18% | 39% |
Выделение элементов | Паттерн основан на выделении элементов обладающих некоторыми свойствами | 5% | |
Единственное состояние | В качестве обобщенного состояния выбирается одно единственное состояние | 10% | |
Мультимножество чисел детей | В качестве обобщенного состояния выбирается мультимножество, элементами которого являются числа - количество непосредственных детей для каждой вершины дерева | 3% | |
Код дерева | В качестве обобщенного состояния выбирается код дерева, однозначно определяющий его структуру | 2% | |
Среднее состояние | Все промежуточные состояния объединяются в одно обобщенное состояние | 1% | |
? (без паттерна) | 20% |
Таблица 1. Паттерны проектирования
Наиболее широкое применение имеет группа паттернов с размером структуры данных в качестве обобщенного состояния: длина списка, размер множества, размер отображения, число вершин дерева.
Эти паттерны используются в более чем половине случаев применения паттернов. В большой части паттернов явным образом определяется обобщенное состояние; это такие паттерны, как длина списка, размер множества, размер отображения, число вершин дерева, единственное состояние, мультимножество чисел детей, код дерева, среднее состояние. Оставшиеся два паттерна декартово произведение и выделение элементов явным образом состояние не определяют, а используются совместно с другими паттернами. Паттерны покрывают большинство распространенных структур данных: списки, множества, отображения, деревья. Для объединения нескольких обобщенных состояний, соответствующих разным структурам данных, используется паттерн декартово произведение. В паттерне выделение элементов учитываются свойства элементов, так как в остальных паттернах при выборе обобщенного состояния предполагается, что тестовые ситуации от свойств элементов не зависят. Описание каждого паттерна состоит из следующих частей:
- название;
- краткое описание;
- область применения;
- обобщенное состояние;
- итерация параметров методов;
- примеры;
- совместное использование;
- использование в проектах.