|
| ||||||||||||||||||||||
| ||||||||||||||||||||||
|
2006 г.
СПЕЦИФИКАЦИЯ И ТЕСТИРОВАНИЕ СИСТЕМ С АСИНХРОННЫМ ИНТЕРФЕЙСОМА.В. Хорошилов,Институт системного программирования Российской академии наук Продолжение
Оценка качества тестированияМы рассмотрели, как работает тестовая система в масштабе одного взаимодействия с целевой системой и как организуется последовательность таких взаимодействий. При этом в тени осталась одна очень важная проблема, имеющая место в любом процессе тестирования - проблема оценка качества тестирования. В подавляющем большинстве случаев проверить целевую систему на всех допустимых тестовых данных невозможно. Поэтому приходится ограничиваться некоторым конечным набором тестов. В такой ситуации неизбежно встает вопрос о качестве тестирования, проведенного посредством данного тестового набора. Существует несколько подходов к решению этой задачи. Наиболее распространенный из них использует оценку качества на основе исходного кода целевой системы. Например, оценивается процент инструкций выполненных во время тестирования или процент покрытия возможных ветвлений потока управления. Этот подход доказал свою важность и значимость. Однако, использование только оценки покрытия исходного кода применительно к функциональному тестированию часто оказывается недостаточным. Например, стопроцентное покрытие тестами исходного кода не гарантирует, что все требования к функциональности системы были надлежащим образом реализованы. Если какое-то требование было упущено и не нашло своего отражения в исходном коде, то тесты могут показывать идеальный процент покрытия, хотя в системе присутствует серьезный изъян. С другой стороны, функциональное тестирование имеет своей целью проверить выполнение целевой системой требований, предъявляемых к ее функциональности. Поэтому измерение качества тестов, сформулированное в терминах этих требований, также является необходимым для получения адекватной оценки. Технология UniTesK предлагает именно такой подход, измерение качества тестирования в котором основывается на требованиях к функциональности системы. Модель требований представляет собой абстрактный автомат A = Метрики покрытия модели требованийМетрикой покрытия модели требований A =Будем говорить, что тест Таким образом, метрика покрытия определяет конечный набор элементов, в терминах которых осуществляется оценка качества тестирования. В технологии UniTesK некоторые метрики генерируются автоматически на основе структуры постусловий интерфейсных функций. В дополнение к этим метрикам, разработчик тестов может определять свои собственные метрики покрытия. Тестовая система автоматически оценивает качество тестирования в терминах всех доступных метрик и по результатам теста генерирует отчеты о покрытии элементов каждой метрики. Метрика покрытия M называется управляемой, если для любых двух взаимодействий I1 = Для управляемых метрик характерно то, что принадлежность взаимодействия к тому или иному элементу покрытия зависит только от той части взаимодействия, которая управляется тестовой системой, то есть от пресостояния и стимула. Работая с управляемыми метриками, тестовая система может не только автоматически подсчитывать их покрытие, но и оптимизировать генерацию тестовых данных для достижения определенного покрытия по некоторой управляемой метрике. Описание метрик покрытияМетрики покрытия в технологии UniTesK описываются совместно с описанием предусловий и постусловий интерфейсных операций целевой системы. Это позволяет локализовать описание требований и выделение элементов покрытия на основе этих требований. Элементы покрытия, как правило, соответствуют ветвям функциональности в поведении интерфейсной операции или ситуациям, интересным с точки зрения тестирования, таким как граничные условия. Определение метрик только для интерфейсных операций не позволяет описывать произвольные метрики покрытия модели требований. Но практический опыт показал, что имеющихся возможностей более чем достаточно для измерения качества тестирования приложений любых типов. Определим способ описания метрик формально. Предположим, что в целевой системе выделено k интерфейсных операций: I = Тогда сюрьективная функция μ : VI x XI x YI x VI M[μ] = Лемма. Метрика покрытия M[μ] является управляемой тогда и только тогда, когда третий и четвертый аргументы функции μ являются несущественными. Кроме того, в технологии UniTesK поддерживается другой вариант описания метрик покрытия. В этом варианте каждый элемент покрытия описывается предикатом, определяющим принадлежность взаимодействия через определенную интерфейсную операцию Конечный набор предикатов μ' = M[μ'] = Лемма. Метрика покрытия M[μ'] является управляемой тогда и только тогда, когда третий и четвертый аргументы всех предикатов ci являются несущественными. Метрики покрытия в унифицированной архитектуре тестаВ процессе тестирования, при вызове интерфейсной операции, тестовая система вычисляет для каждой метрики, заданной для данной операции, все элементы покрытия, покрытые данным вызовом. Информация о покрытых элементах попадает в трассу теста. По трассе одного или нескольких тестов генерируются отчеты о покрытии интерфейсных операций, согласно определенным для них метрикам покрытия.
Рисунок 8. Универсальная архитектура теста с учетом оценки качества тестирования Компонент тестовой системы, который отвечает за вычисление покрытых элементов в рамках одного вызова интерфейсной операции, - оракул. Он обладает всей информацией, необходимой для выполнения этого действия. Для известных ему пресостояния, стимула, реакции и постсостояния оракул вычисляет покрытые элементы и помещает результат вычисления в трассу. Для метрики покрытия, описанной функцией μ, оракул вычисляет значение этой функции, которое однозначно характеризует покрытый элемент. Для расширенной метрики покрытия оракул вычисляет значения всех предикатов ci и индексы предикатов, принявших положительное значение, помещаются в трассу в качестве описания покрытых элементов. Помимо информации о покрытых элементах в трассу попадает информация о вызовах интерфейсных операций, значениях их параметров, вердиктах оракула, а также о других событиях, произошедших в процессе тестирования. По завершении процесса тестирования трасса используется для анализа результатов тестирования. На ее основе генерируются отчеты о покрытии, отчеты о найденных несоответствиях между поведением целевой системы и требованиями к нему, а также отчеты об ошибках, имевших место в тестовой системе. Архитектура тестовой системы, дополненная работой с метриками покрытия, представлена на рисунке 8. Управляемые метрики покрытия и оптимизация тестового набораПомимо статической оценки качества тестирования управляемые метрики покрытия используются для оптимизации генерации тестовых данных непосредственно во время тестирования. Технология UniTesK предоставляет возможность не только складывать информацию о покрытии в трассу, но и использовать ее в процессе работы теста. Предположим, что перед тестом стоит задача достичь определенного уровня покрытия по некоторому набору метрик. В этом случае тесту не имеет смысла подавать целевой системе стимулы, которые не приводят к улучшению покрытия. Чтобы оптимизировать таким образом тестовый набор, достаточно собирать в глобальном состоянии сценария информацию о покрытых элементах и отбрасывать в сценарных функциях те стимулы, которые не приводят к улучшению покрытия. Унифицированная архитектура тестаВ предыдущих разделах мы определили математические модели, используемые в технологии UniTesK. Также мы рассмотрели, как эти модели отражаются в унифицированной архитектуре теста. А теперь мы взглянем на унифицированную архитектуру в целом, соединив все разрозненные описания в единое целое. Унифицированная архитектура теста в целом представлена на рисунке 9. Она определяет набор компонентов теста, составляющих ядро тестовой системы. Помимо тестовой системы, на диаграмме представлены:
Тестовая система содержит четыре компонента. Тестовый сценарий управляет всем процессом тестирования. Он интерактивно, в ходе взаимодействия с целевой системой, генерирует последовательность воздействий на целевую систему. Для этого автоматный механизм осуществляет обход графа, заданного в описании сценария. Прохождение по дуге этого графа сопровождается выполнением сценарного воздействия, приписанного данной дуге. Сценарное воздействие, которое является "компактным" тестовым сценарием, управляет последовательностью взаимодействий с целевой системой. По завершению работы сценарного воздействия автоматный механизм либо принимает решение о завершении тестирования, либо выбирает следующую дугу и инициирует следующее сценарное воздействие. Все воздействия на целевую систему генерируемые тестовым сценарием осуществляется через оракул. Оракул
Медиатор получает от оракула указание осуществить тестовое воздействие, заданное стимулом x
Единственный пассивный компонент тестовой системы - это модельное состояние. Основная задача модельного состояния заключается в хранении текущих значений переменных состояния, определенных в спецификации целевой системы. Эти значения составляют модельное представление внутреннего состояния целевой системы. Поэтому только медиатор, который непосредственно работает с целевой системой, может изменять модельное состояние. Все остальные компоненты могут только читать модельное состояние. 3. Тестирование систем с асинхронным интерфейсомНастоящая глава начинается с определение систем с асинхронным интерфейсом и выделения ограничений рассмотренных методов и моделей, которые не позволяют использовать их для проведения полноценного тестирования систем с асинхронным интерфейсом. Далее будут определены математические модели, которые позволяют корректным образом сформулировать основные задачи тестирования для систем с асинхронным интерфейсом, и рассмотрены алгоритмы, решающие эти задачи. На основе предложенных моделей и алгоритмов будет построена унифицированная архитектура асинхронной тестовой системы, определяющая архитектуру всех тестовых систем, предназначенных для тестирования систем с асинхронным интерфейсом рассматриваемым методом.Системы с асинхронным интерфейсомОсновополагающим камнем в математических моделях технологии UniTesK являются понятия взаимодействия и модели поведения целевой системы. Именно в этих терминах описывается процесс тестирования и на их основе строятся все остальные модели. Однако, у данных моделей есть несколько ограничений. Во-первых, в них предполагается, что любое взаимодействие между целевой системой и ее окружением может инициироваться только окружением. Во-вторых, предполагается, что все взаимодействия происходят строго последовательно, то есть следующее взаимодействие начинается только после завершения предыдущего. Примером целевой системы, для которой эти предположения нарушаются, является подсистема, реализующая стек протоколов. Она получает пакеты от вышестоящего уровня, формирует из них пакеты нижележащего уровня и посылает по сети. С другой стороны, эта подсистема получает пакеты из сети, преобразует их и передает вышестоящему приложению. Передача пакетов в сеть и приложению являются примерами взаимодействий, которые инициируются не окружением, а самой целевой системой. Конечно, эти взаимодействия можно моделировать как часть взаимодействий, инициированных окружением. То есть можно рассматривать пакет, отправленный в сеть, как часть реакции на просьбу послать сообщение от приложения или как часть реакции на пришедший пакет из сети.
Рисунок 10. Стек протоколов Но в этом случае особенно критичными становится второе ограничение. Рассмотрим взаимодействие, которое инициируется приложением вышестоящего уровня. Приложение просит стек протоколов послать сообщение. Завершением этого взаимодействия будем считать передачу в сеть всех пакетов, необходимых для посылки данного сообщения. Предположение о последовательности взаимодействий не позволяет тестовой системе инициировать следующее взаимодействие до завершения предыдущего. Таким образом, рассмотренная выше архитектура будет ограничена тестированием только тех ситуаций, в которых стек протоколов в каждый момент времени обрабатывает только один запрос о посылке сообщения. Программные системы, для которых нарушаются вышеприведенные ограничения, наиболее часто встречаются среди драйверов устройств, телекоммуникационных приложений, подсистем, реализующих межпроцессное или межпотоковое взаимодействие, и других программ системного уровня. Такого рода программы характеризуются асинхронными взаимодействиями с окружением. Программные системы, которые
мы будем называть системами с асинхронным интерфейсом. Технология UniTesK в рамках подхода классических программных контрактов может быть применима для тестирования систем с асинхронным интерфейсом, однако качество разработанных тестов будет ограничиваться тестированием только в последовательном, синхронном режиме. В следующих разделах настоящей главы мы рассмотрим решения, которые предлагает технология UniTesK для обеспечения полноценного тестирования систем с асинхронным интерфейсом. Оценка корректности поведения тестируемой системыМодель поведенияОсновной задачей модели поведения целевой системы является адекватное описание поведения целевой системы с тем, чтобы тестовая система имела возможность оценить корректность этого поведения относительно требований, предъявляемых к нему. Основным отличием систем с асинхронным интерфейсом являются
Чтобы учесть взаимодействия, инициируемые целевой системой, мы расширим понятие интерфейса целевой системы. Асинхронным интерфейсом целевой системы называется тройка
Каждое из этих множеств может быть бесконечным. Множество отложенных реакций Z предназначено для описания взаимодействий, инициируемых целевой системой. Другое отличие в определении асинхронного интерфейса, по сравнению с синхронным, заключается в отсутствии множества состояний. Причина этого состоит в том, что при асинхронных взаимодействиях состояние целевой системы в общем случае является недоступным для внешнего наблюдения, так как оно может изменяться в любой момент ввиду участия в целевой системы в параллельных взаимодействиях. Асинхронным воздействием на целевую систему, обладающую интерфейсом Асинхронной реакцией целевой системы, обладающей интерфейсом Асинхронные воздействия и асинхронные реакции будем называть асинхронными взаимодействиями с целевой системой. Асинхронные взаимодействия с целевой системой разбиваются на два класса. Первый класс составляют взаимодействия, инициируемые тестовой системой. Их мы называем асинхронными воздействиями. Асинхронное воздействие состоит из стимула, моделирующего данные передаваемые от тестовой системе к целевой, и непосредственной реакции, содержащей данные передаваемые в обратном направлении в рамках того же взаимодействия. Второй класс асинхронных взаимодействий содержит взаимодействия, инициируемые целевой системой. Такие взаимодействия мы называем асинхронными реакциями (или отложенными реакциями). Асинхронные реакции используются для моделирования данных передаваемых только в направлении от целевой системы. Таким образом, моделировать взаимодействия с целевой системой предлагается следующим способом. Если взаимодействие инициируется окружением целевой системы, то для его описания используются асинхронные воздействия. При этом данные, передаваемые в направлении к целевой системе, описываются стимулом, а данные, передаваемые от целевой системы, описываются непосредственной реакцией. Если взаимодействие инициируется целевой системой и данные в рамках этого взаимодействия передаются только в направлении от целевой системы, то такие взаимодействия моделируются асинхронными реакциями. Если же взаимодействие инициируется целевой системой, но данные в рамках этого взаимодействия передаются и от целевой системы, и к ней, то при моделировании таких взаимодействий предлагается разбивать их на меньшие составляющие, которые описываются посредством асинхронных воздействий и асинхронных реакций. Например, такое взаимодействие можно разбить на асинхронную реакцию, инициируемую целевой системой, и на набор последующих асинхронных воздействий, включающих в себя данные, передаваемые к целевой системе.
Таблица 1. Виды взаимодействий с целевой системой. Суммарная информация по предлагаемым способам моделирования взаимодействий целевой системы с ее окружением представлена в таблице 1. Определение 7. Асинхронной моделью поведения целевой системы с интерфейсом Модель поведения состоит из, возможно, бесконечного набора асинхронных взаимодействий, имевших место в процессе тестирования. Частичный порядок, заданный на этом наборе, определяет, в каком порядке происходили взаимодействия. p1 Множество всех асинхронных моделей поведения целевой системы с интерфейсом Модель требованийАвтоматом с отложенными реакциями [28] называется пятёрка
Множества V, X, Y, Z и E могут быть бесконечными. Переходы автомата с отложенными реакциями делятся на два класса. В первый класс входят переходы Последовательность переходов Бесконечным путем мы будем называть бесконечную последовательность переходов, любой префикс которой является конечным путем. Определение 8. Асинхронной моделью требований к целевой системе с интерфейсом Будем говорить, что асинхронное взаимодействие p Определение 9. Будем говорить, что асинхронная модель поведения целевой системы
Другими словами, асинхронная модель поведения удовлетворяет модели требований с данным начальным состоянием, если взаимодействия из мультимножества P можно упорядочить, не вступая в противоречие с частичным порядком Важно отметить, что асинхронная модель требований предполагают, что для любого набора взаимодействий, осуществлявшихся параллельно, существует эквивалентное с точки зрения конечного результата последовательное выполнение этих взаимодействий. Если данная гипотеза, называемая гипотезой простого параллелизма [20], не выполняется, то необходимо разбить взаимодействия на более мелкие, для которых гипотеза будет верна. Если никакое разбиение не позволяет добиться выполнения данной гипотезы, то рассматриваемый метод является неприменимым для тестирования такой системы. На настоящий момент автору неизвестен пример программной системы, для которой невозможно выбрать асинхронный интерфейс, удовлетворяющий гипотезе простого параллелизма. Проверка наличия отношения "удовлетворяет" для асинхронных моделей значительно сложнее, по сравнению с синхронным случаем. Поэтому необходимо провести дополнительный анализ алгоритма этой проверки. Но прежде чем рассматривать этот алгоритм, мы остановимся на способах описания модели требований и модели поведения, так как способы задания моделей оказывают существенное влияния на алгоритмы работы с ними. Описание асинхронной модели требованийДля описания асинхронных моделей требований используется немного модифицированный подход программных контрактов. Основные идеи этого способа состоят в следующем. Для целевой системы проводится анализ ее интерфейса. В ходе анализа выявляются виды взаимодействий, в которых целевая система может принимать участие, и их параметры. Для каждого вида определяется, кто является инициатором взаимодействия данного вида, и какие данные передаются в ходе взаимодействия по направлению к целевой системе, а какие - от нее. При этом накладывается ограничение на взаимодействия, инициируемые целевой системой. В процессе таких взаимодействий данные должны передаваться только от целевой системы. Если это ограничение не выполняется, то необходимо разбить проблемные взаимодействия на меньшие составляющие. В результате мы получим набор взаимодействий, инициируемых окружением целевой системы, и набор взаимодействий, инициируемых целевой системой. Взаимодействия первого типа имеют данные, передаваемые к целевой системе, мы будем называть их входными, и данные, передаваемые от целевой системы, мы будем называть их выходными. Взаимодействия второго типа содержат только данные, передаваемые от целевой системы, которые мы также будем называть выходными. Каждому виду взаимодействий ставится в соответствие интерфейсная операция. Для взаимодействий первого типа интерфейсная операция имеет набор входных параметров, описывающих входные данные, и набор выходных параметров, описывающих выходные данные. Такие интерфейсные операции мы будем называть интерфейсными операциями-стимулами. Для взаимодействий второго типа интерфейсная операция имеет только выходные параметры, описывающие выходные данные. Интерфейсные операции такого типа мы будем называть интерфейсными операциями-реакциями. Для описания требований к поведению целевой системы в рамках асинхронных взаимодействий используется спецификации соответствующих интерфейсных операций. Предусловие операции определяет, какие значения входных параметров являются допустимыми для передачи целевой системе, а постусловие операции определяет какие выходные значения параметров являются корректными для данных значений входных параметров. Таким образом, постусловие описывает требования к поведению целевой системы в ходе взаимодействий данного вида. Для описания зависимости поведения в рамках данного взаимодействия от предыдущих взаимодействий используется модельное состояние. Модельное состояние образуется набором переменных, хранящих все необходимые для этого данные об истории взаимодействий с целевой системой. Предположим, что для целевой системы были выделены k видов взаимодействий, инициируемых окружением, и m видов взаимодействий, инициируемых целевой системой. Тогда асинхронной спецификацией целевой системы называется набор спецификаций интерфейсных операций, соответствующих каждому выделенному виду взаимодействий: Асинхронная модель требований MRA[Spec] =
Описание асинхронных взаимодействий в модели поведенияКак и в синхронном случае, модель поведения целевой системы не может быть описана статическим образом. Только динамически, во время тестирования, тестовая система наблюдает за поведением целевой системы и строит модель этого поведения.Чтобы модель поведения была согласована с моделью требований, необходимо чтобы она была построена на основе единого интерфейса целевой системы В этом случае асинхронная модель поведения целевой системы определяется в терминах заданной спецификации. Асинхронная модель поведения состоит из набора асинхронных взаимодействий и частичного порядка над ним. Набор взаимодействий определяется посредством регистрации всех зафиксированных взаимодействий в специальном компоненте тестовой системы - регистраторе взаимодействий. А частичный порядок над этим набором задается посредством комбинации двух моделей: модели каналов и модели временных меток. Асинхронные взаимодействия, инициированные тестовой системой, регистрируются после получения непосредственной реакции от целевой системы. Такие взаимодействия характеризуются:
Асинхронные взаимодействия, инициированные целевой системой, регистрируются после их завершения. Такие взаимодействия характеризуются:
Способы задания частичного порядка над мультимножеством асинхронных взаимодействий мы рассмотрим в следующих двух разделах. Модель каналовМодель каналов предназначена для задания частичного порядка на наборе асинхронных взаимодействий.Определение 10. Пусть D - конечное или бесконечное множество. Моделью каналов на множестве D мы будем называть конечное или бесконечное множество упорядоченных подмножеств множества D Ch =
Модель каналов задает частичный порядок на множестве D, определяемый следующим образом: d1 Множества Di модели каналов мы будем называть каналами. Модель каналов во многих случаях является удобным механизмом для задания частичного порядка, так как она позволяет описывать наиболее естественным способом порядок взаимодействий, происходивших в одном "канале". Например, если сетевой протокол, с помощью которого осуществляется взаимодействие, обеспечивает сохранение порядка сообщений, то все сообщения посылаемые через один "сокет" на другой "сокет" между собой строго упорядочены. Тем не менее, никакой информации о порядке доставки этих сообщений относительно сообщений, посылаемых по другим парам "сокетов", не известно. В таких ситуациях, модель каналов позволяет отнести все упорядоченные сообщения к одному каналу и задать для этого канала соответствующий порядок. Чтобы сделать это, при регистрации каждого взаимодействия в тестовой системе предлагается указывать в качестве одной из характеристик взаимодействия - идентификатор канала, к которому относится данное взаимодействие. Порядок взаимодействий в рамках одного канала задается порядком регистрации взаимодействий. Считается, что взаимодействие, которое было зарегистрировано раньше другого, относящегося к тому же каналу, произошло раньше, чем второе. Но одной модели каналов оказывается недостаточно для описания произвольного частичного порядка. Поэтому существует еще один механизм для определения частичного порядка на асинхронной модели поведения целевой системы. Модель временных метокМодель временных меток предназначена для возможности задания дополнительных ограничений на порядок взаимодействий в асинхронной модели поведения целевой системы.Пусть Множество всех временных интервалов будет обозначаться TI(TM). Определим на нем частичный порядок
Определение 11. Пусть D - конечное или бесконечное множество, а Модель временных меток задает на множестве D частичный порядок d1 В качестве множества временных меток TM в технологии UniTesK используется множество (F x Nat) Для описания частичного порядка
Для установки зависимостей последнего типа тестовая система предоставляет специальную функцию, с помощью которой в процессе тестирования можно зафиксировать зависимости между временными метками. Множество систем координат F также определяется динамически, в процессе тестирования. Модель временных меток предоставляет удобный способ для описания частичного порядка на множестве взаимодействий при использовании в следующей интерпретации. Временная метка рассматривается как идентификатор некоторого момента времени. Каждый момент времени описывается натуральным числом в некоторой системе временных координат. В рамках одной системы координат все моменты времени упорядочены. А про моменты времени, принадлежащие различным системам координат, заранее ничего не известно. Но если какая-нибудь информация появляется, то она фиксируется согласно четвертому правилу. Каждому взаимодействию ставится в соответствие временной интервал, первая временная метка, которого описывает момент начала взаимодействия, а вторая - момент его завершения. Таким образом, считается, что одно взаимодействие достоверно произошло раньше другого, если временная метка завершения первого взаимодействия меньше временной метки начала второго. В качестве концов интервала допускается использование специальных значений -∞ и +∞, предназначенных для описания открытых интервалов. Способ выделения натуральных чисел, используемых для описания момента времени, может варьироваться. Это может быть текущее значение системного таймера или просто некоторое абстрактное число. Различные системы временных координат, например, могут соответствовать различным машинам в сети. Определять модель временных меток предлагается следующим образом. Во-первых, в процессе тестирования фиксируется информация об отношении порядка между временными метками, принадлежащими различным системам координат. А во-вторых, при регистрации взаимодействий указывается временной интервал, соответствующий данному взаимодействию. Описание асинхронной модели поведенияСуммируя информацию о построении асинхронной модели поведения целевой системы в процессе тестирования, можно сказать, что этот процесс состоит из решения двух задач:
Регистрация взаимодействий осуществляется в специальном компоненте тестовой системы - регистраторе взаимодействий. А для решения второй задачи предлагается при регистрации взаимодействий указывать идентификатор канала, к которому относится данное взаимодействие, и временной интервал, в котором оно происходило. Кроме того, требуется фиксировать известные ограничения на порядок временных меток, принадлежащих различным системам координат. В результате этого тестовая система будет иметь набор асинхронных взаимодействий D, модель каналов Ch и модель временных меток τ. На основе этой информации будет построена асинхронная модель поведения
Алгоритм проверки корректности поведенияПредположим, что нам даны конечная асинхронная модель поведения целевой системыДля этого необходимо проверить существование пути Асинхронная модель требований A = В данном разделе мы не будем рассматривать пути решения этой проблемы. Здесь мы будем считать, что нам задана вспомогательная функция γ : V x γ Но даже в этом случае для проверки корректности поведения требуется рассмотреть все возможные линеаризации асинхронной модели поведения и для каждой из них проверить существование соответствующего пути в автомате A. Определение 12. Линейный порядок < на частично-упорядоченном множестве
Для последующего рассмотрения введем вспомогательную функцию Г*, вычисляющую по состоянию в автомате и последовательности асинхронных взаимодействий, множество состояний автомата, достижимых из данного по последовательности дуг, помеченных данной последовательностью взаимодействий. Формальное определение функции Г* следующее: Г* Г Лемма. Для последовательности асинхронных взаимодействий Доказательство. Действительно, пусть существует путь v0 Базис индукции. (n = 1) Итак, пусть v0 Шаг индукции. Предположим, что мы доказали утверждение для путей длины n-1. Докажем его для n. Пусть существует путь v0 В обратную сторону. Пусть Г* Базис индукции. (n = 1) Пусть Г* Шаг индукции. Предположим, что мы доказали утверждение для n-1. Докажем его для n. Пусть Г* Тогда Предположим, что это не так. То есть Тогда Г* Данное утверждение верно и для k = 1. То есть найдется такое состояние v1 Так как v1 Как следует из леммы, проверка существования пути в автомате сводится к последовательному применению функции Г, вычислительная сложность которого сильно зависит от числа состояний, допускаемых моделью требований в качестве постсостояния перехода с заданными пресостоянием и асинхронным взаимодействием. В дальнейших оценках мы будем считать, что асинхронная модель требований допускает не более одного такого состояния, то есть модель является детерминированной. Асинхронная модель требований A = Для детерминированных моделей проверка существования пути, начинающегося в заданном состоянии v0 и помеченного заданной последовательностью взаимодействий Для оценки корректности асинхронной модели поведения такую проверку необходимо выполнить для каждой возможной линеаризации мультимножества асинхронных взаимодействий. А в худшем случае число линеаризаций составляет n!, где n - мощность множества P. То есть общая оценка сложности составляет n · n!. Заметим, что многие линеаризации имеют общее начало. Этим свойством можно воспользоваться, чтобы не дублировать проверку существования путей, соответствующих общему началу линеаризаций. Определим для множества P дерево возможных линеаризаций, как дерево, в котором
Пример дерева возможных линеаризаций для P =
Рисунок 11. Дерево возможных линеаризаций для Р = Заметим, что пути, ведущие из корня в листья, помечены последовательностями элементов из P, каждая из которых является линеаризацией множества P, а все вместе они образуют множество всех возможных линеаризаций. Припишем к каждой вершине дерева возможных линеаризаций подмножество P, составленное из элементов Деревом возможных линеаризаций частично-упорядоченного множества Идеалами частично-упорядоченного множества Лемма. Пути из корня в листья дерева возможных линеаризаций частично-упорядоченного множества Доказательство. Покажем, что любой путь из корня в лист помечен последовательностью являющейся линеаризаций. Действительно, по построению дерева, любая такая последовательность является упорядочиванием всех элементов P. Покажем, что определяемый ею линейный порядок сохраняет исходный частичный порядок Предположим, что это не так. То есть Из того, что p2 < p1 следует, что дуга, помеченная p2, встречается в пути раньше, чем дуга, помеченная p1. Следовательно, к вершине, в которую ведет дуга, помеченная p2, приписано множество, содержащее p2 и не содержащее p1. Такое множество не является идеалом, то есть рассматриваемые дуги не могут принадлежать дереву возможных линеаризаций. Противоречие показывает, что наше предположение не верно и любая последовательность на пути из корня в лист является линеаризаций. Докажем, что для любой линеаризации Для этого мы рассмотрим путь в дереве возможных линеаризаций множества P, помеченный соответствующей последовательностью элементов Предположим, что это не так и одна из вершин этого пути была удалена из дерева. Это могло произойти только в случае, когда данная вершина принадлежит поддереву, к корню которого приписано множество, не являющееся идеалом Это множество состоит из элементов, приписанных к пути из корня дерева в эту вершину. Так как такой путь в дереве единственен, то он совпадает с началом пути Отсюда, i ≤ k < j Если не дублировать проверку существования путей, соответствующих общему началу линеаризаций, то число необходимых вычислений функции γ будет совпадать с числом дуг в дереве возможных линеаризаций. Число дуг в дереве для множества размерностью n составляет: n + n·(n-1) + … + n·(n-1)· … ·1 = Основной сложностью в реализации этого алгоритма является организация перебора возможных линеаризаций асинхронной модели поведения С другой стороны, существуют другие алгоритмы перебора перестановок, которые позволяют сократить затраты на проверку того, является ли очередная перестановка линеаризацией или нет. Но применение нетривиального перебора линеаризаций должно обеспечивать не только сложность O(n!), но и избегать перебора k! заведомо неподходящих перестановок, в тех случаях, когда известно, что (n-k)-ый элемент в какой-то перестановке нарушает условия линеаризации. Алгоритм перебора линеаризаций, удовлетворяющий всем этим требованиям, был построен на основе алгоритма перебора перестановок 1.11, описанного в [29]. Этот алгоритм обеспечивает перебор перестановок таким образом, что каждая последующая перестановка отличается от предыдущей транспозицией одной пары элементов. В результате, проверка соответствия очередной перестановки условиям линеаризации требует в большинстве случаев константного времени. И в то же время, данный алгоритм позволяет избежать перебора k! заведомо неподходящих перестановок. Алгоритм проверки корректности поведения, представленный ниже, основан на обходе дерева возможных линеаризаций в глубину. В нем используется следующая вспомогательная функция int B(int m, int i) Сам алгоритм представлен далее. Алгоритм проверки корректности поведения. Входные данные. Асинхронная модель поведения
Асинхронная модель требований A = Начальное состояние v0 Данные алгоритма. bound : Nat[n] := perm : Nat[n] := current : Nat := 0
path : (V-set)[n+1] := processed : Nat := 0
order_failed : Bool := false
current2 : Nat := 0
tmp : Nat := 0
j : Nat := 0
Алгоритм.
Доказательство корректности данного алгоритма представлено в [30]. Частичный порядок Обратим внимание на тот факт, что оценка сложности алгоритма O(n!) получена для класса детерминированных моделей поведения, для недетерминированных моделей сложность становится еще больше. Но даже при использовании детерминированных моделей требования применимость алгоритма сильно ограничена: при числе взаимодействий, превышающем несколько десятков время работы становится неприемлемо большим. Поэтому при применении рассматриваемого метода необходимо учитывать имеющиеся ограничения на размерность модели поведения, участвующей в задаче оценки корректности. Требования к полноте набора асинхронных реакцийАсинхронная модель требований позволяет оценить являются ли корректными взаимодействия с целевой системой, произошедшие в процессе тестирования. В то же время, для асинхронных систем существуют требования другого вида, которые также необходимо проверять. Это требования к полноте набора асинхронных реакций. Например, рассмотрим ситуацию, когда в ответ на некоторое воздействие целевая система должна выдать две асинхронных реакции, но выдает только одну. В этом случае, асинхронная модель поведения всегда будет удовлетворять модели требований, так как все взаимодействия по отдельности являются корректными. В то же время, набор всех взаимодействий с точки зрения пользователя является некорректным, так как в нем отсутствует часть необходимых асинхронных реакций. Такого рода несоответствие между формальной оценкой корректности поведения и ожиданиями пользователя происходит по двум причинам:
В результате этого, при отсутствии одной из ожидаемых асинхронных реакций оценка корректности дает положительный вердикт, так как считается, что данная реакция еще может быть получена позднее. Для выявления такого рода некорректностей можно предложить следующий подход. К множеству асинхронных реакций асинхронного интерфейса
Для использования псевдо реакции done тестовая система должна при завершении тестирования выждать время, необходимое для получения всех асинхронных реакций, и добавить в построенную асинхронную модель поведения псевдо реакцию done таким образом, чтобы согласно частичному порядку эта псевдо реакция была больше всех остальных взаимодействий. При таком подходе удается разрешить рассмотренную выше проблему с проверкой неполноты набора асинхронных реакций. Заметим, что это возможно только тогда, когда время получения всех асинхронных реакций ограничено, так как в противном случае появление псевдо реакции done в асинхронной модели поведения становится невозможным. Данное ограничение может быть ослаблено, до требования ограниченности времени получения всех обязательных асинхронных реакций, где под обязательными реакциями понимаются реакции, которые являются обязательными хотя бы в одном состоянии модели требований. Для описания более детальных ограничений, таких как требования вида "асинхронная реакция должна появиться не позже, чем" и " асинхронная реакция должна появиться не раньше, чем" необходимо отражение выделенных моментов времени как в модели требований, так и в модели поведения. Для решения этой задачи можно предложить два подхода. Первый подход предполагает введение псевдо асинхронных реакций, предназначенных для симулирования наступления временных границ (нижний или верхней) для каждой конкретной асинхронной реакции. В модели требований такие псевдо реакции должны использоваться для описания соответствующих ограничений на момент появления реакции, а в модели поведения они должны отражать соответствующие моменты времени. Второй подход основывается на использовании модели временных меток. Для этого к каждому асинхронному взаимодействию приписывается временной интервал, то есть в асинхронном интерфейсе целевой системы множества Y и Z заменяются на Y x TI(TM) и Z x TI(TM) соответственно. В этом случае, в спецификациях интерфейсных операций временные метки учитываются при описании требований ко времени получения реакций, посредством сохранения в модельном состоянии информации о времени осуществления соответствующих асинхронных воздействий. Во втором подходе также может потребоваться использование множества псевдо асинхронных реакций Следует также отметить, что работа с временными свойствами обладает целым рядом проблем, связанных со сложностью отслеживания временных характеристик работы целевой системы. Поэтому такая работа должна проводиться с учетом возможных неточностей в измерении. Для этого основным инструментом работы со временем сделан временной интервал, описывающий не единственный момент во времени, а целый интервал, ограниченный минимальной и максимальной временными метками. Рассмотренные методы организации проверки дополнительных требований к полноте набора асинхронных реакций и времени их появления построены на использовании ранее определенных моделей поведения и требований. Изменения касались только технологии использования этих моделей. Поэтому для реализации дополнительных проверок никаких изменений в моделях поведения и требований и алгоритмах работы с ними не требуется. Модели требований и поведения в унифицированной архитектуре асинхронного тестаКомпонент тестовой системы, ответственный за взаимодействие с целевой системой и построение модели ее поведения, мы, как и ранее, будем называть медиатором. Компонент, решающий задачу оценки корректности поведения тестируемой системы в ходе работы теста, мы будем называть оракулом. Рассмотрим более детально их внутреннее устройство и способ взаимосвязи. Отличия в архитектуре тестовой системы для асинхронных систем диктуются основными особенностями этих систем:
При тестировании асинхронных систем их поведение уже не может рассматриваться как набор отдельных, не связанных между собой взаимодействий. Между этими взаимодействиями существуют зависимости, которые необходимо учитывать и при построении модели поведения, и при оценке ее корректности. Отсюда появляется необходимость в компоненте, в котором будет собираться информация обо всех взаимодействиях с тестируемой системой и зависимостях между ними. Этот компонент называется регистратором взаимодействий. Информация, собираемая в нем, представляет собой модель поведения целевой системы в процессе работы теста. В дальнейшем она будет использоваться для оценки корректности поведения. Информация о взаимодействиях попадает в регистратор взаимодействий двумя путями. Взаимодействия, инициируемые тестовой системой, регистрируются медиаторами воздействий. Помимо регистрации взаимодействий эти медиаторы ответственны за осуществление воздействия на тестируемую систему. Работа медиатора воздействия строится по следующему алгоритму. Получив указание подать стимул x Взаимодействия, инициируемые целевой системой, регистрируются кетчерами, задачей которых является получении информации обо всех таких взаимодействиях, преобразование каждого взаимодействия в модельное представление z Для передачи тестовой системе известной информации о последовательности, в которой происходили взаимодействия, используются модель каналов и модель временных меток. Модель каналов строится следующим образом. При регистрации каждого взаимодействия указывается идентификатор канала, к которому оно относится. При этом считается, что все взаимодействия, зарегистрированные с одинаковым идентификатором канала, образуют один канал. Линейный порядок в рамках этого канала определяется последовательностью регистрации взаимодействий: если из двух взаимодействий, зарегистрированных с одним идентификатором канала, одно было зарегистрировано раньше другого, то первое меньше второго в линейном порядке соответствующего канала. Модель временных меток определяется похожим способом. При регистрации каждого взаимодействия ему приписывается временной интервал. Кроме того, в процессе работы теста имеющаяся информация о взаимном порядке временных меток, принадлежащих различным системам координат, должна быть передана регистратору взаимодействий. Таким образом, в регистраторе взаимодействий будет собрано все необходимое для определения модели временных меток. У медиатора, использовавшегося для тестирования синхронных систем, была еще одна важная функция - синхронизация модельного состояния с состоянием реализации. При тестировании с открытым состоянием синхронизация осуществлялась посредством чтения внутреннего состояния целевой системы и преобразования его в модельное представление. При тестировании с закрытым состоянием синхронизация проводилась путем вычисления модельного состояния, удовлетворяющего модели требований, с учетом дополнительных знаний медиатора о деталях поведения тестируемой реализации. Тестирование асинхронных систем, как правило, можно проводить только с закрытым состоянием, так как из-за асинхронности поведения не представляется возможным прочитать состояние целевой системы, в котором она находилась после определенного взаимодействия. Поэтому при тестировании асинхронных систем модельное состояние не рассматривается как часть модели поведения целевой системы. Оно используется только в модели требований для определения корректности поведения. В алгоритме оценки корректности поведения функция γ описывает множество допустимых модельных состояний после данного взаимодействия при заданном начальном состоянии системы. Модель требований может допускать большое количество таких состояний, абстрагируясь от деталей реализации описываемых требований. Анализ всех этих состояний может требовать большого количества ресурсов. В то же время, при тестировании конкретной целевой системы может быть известно о деталях поведения данной реализации, на основе которых можно ограничить множество допустимых модельных состояний только теми состояниями, которые будут соответствовать корректному поведению данной реализации. Так как такое ограничение является реализационнозависимым, то оно описывается в медиаторе, а именно в специальном компоненте медиатора, называемом медиатором состояния. Подробнее, назначение медиатора состояния будет рассмотрено при обсуждении работы оракула.
Рисунок 12. Медиатор в универсальной архитектуре асинхронного теста Устройство медиатора, предназначенного для тестирования асинхронных систем, представлено на рисунке 12. Как и ранее, стрелками здесь обозначены направления передачи данных между компонентами тестовой системы. Оракул решает задачу оценки корректности поведения тестируемой системы в ходе работы теста. Алгоритм решения этой задачи был представлен в предыдущем разделе. Он учитывает в своей работе все имевшие место взаимодействия с тестируемой системой и связи между ними. Поэтому компонент оракула, реализующий этот алгоритм, мы будем называть гипероракулом. Гипероракул получает от регистратора взаимодействий информацию обо всех взаимодействиях, зарегистрированных в процессе работы теста, и дальше действует согласно алгоритму оценки корректности поведения. Алгоритм оценки корректности поведения предполагает, что модель требований задана посредством функции γ : V x Вычисление функции γ на основе асинхронной спецификации является задачей эквивалентной решению системы уравнений произвольной сложности. И так как автоматически решить эту задачу не представляется возможным, то тестовая система полагается в этом случае на подсказку пользователя. В качестве такой подсказки предлагается использовать функцию γ' : V x
Обладая такой подсказкой, тестовая система получает возможность рассмотреть конечное множество потенциальных решений и вычислить искомое множество γ Заметим, что определение функции γ' очень близко к описанию ограничения на множество допустимых модельных состояний, осуществляемое в медиаторе состояния. Действительно, в медиаторе состояния в целях оптимизации предполагается ограничить множество допустимых состояний, что соответствует определению дополнительной функции γ'' : V x
Предполагается, что подмножество γ'' В унифицированной архитектуре асинхронного теста предлагается совместить определения уточнения требований и подсказки путем описания в медиаторе состояния функции γ* : V x
В простейшем случае, при отсутствии уточнения требований, функция γ* совпадает с функцией подсказки γ'. Далее мы будем считать, что размерность множества γ* Итак, гипероракул вычисляет вместо функции γ ее модификацию γ''
Диаграмма последовательности взаимодействия, описывающая успешное вычисление функции γ'' представлена на рисунке 13. Такая архитектура вычисления функции γ'' позволяет без изменений использовать оракулы воздействий для тестирования как синхронных, так и асинхронных систем. Схема работы асинхронного теста по оценке корректности поведения целевой системы представлена на рисунке 14. Как и ранее, стрелками здесь обозначены направления передачи данных между компонентами тестовой системы.
Рисунок 14. Схема работы асинхронного теста по оценке корректности поведения целевой системы
|
|
CITForum © 1997–2025