Тестирование софта - статьи

       

Понятие паттерна


Паттерны представляют собой удачные решения часто встречающихся задач. Там, где использование процесса разработки тестового сценария приводит к хорошему результату, паттерны позволяют повторно использовать полученные результаты. Там, где использование процесса затруднительно, знание паттернов позволяет выделить части, к которым они применимы. Паттерны позволяют использовать инструментальную поддержку.

Паттерны, описываемые в данной статье, получены на основе анализа более чем десятилетнего опыта разработки тестов ИСП РАН [] в различных проектах:

  • 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. Паттерны проектирования

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

  1. название;
  2. краткое описание;
  3. область применения;
  4. обобщенное состояние;
  5. итерация параметров методов;
  6. примеры;
  7. совместное использование;
  8. использование в проектах.
Название служит для краткого именования паттерна. Область применения описывает ситуации, в которых применим описываемый паттерн, а также известные расширения паттерна. В части примеров приводятся простые и наглядные примеры применения паттернов; в данной статье примеры приводятся на расширении языка Java []. В части совместного использования приводятся паттерны, с которыми можно удачно использовать описываемый паттерн. Примеры использования паттерна в проанализированных проектах описанываются в части использования в проектах.

Содержание раздела