Игорь Борисович Бурдонов Александр Сергеевич Косачев ТЕСТИРОВАНИЕ КОМПОНЕНТОВ И ВЕРИФИКАЦИЯ КОМПОЗИЦИИ РАСПРЕДЕЛЁННОЙ СИСТЕМЫ Институт Системного Программирования РАН RedVerst 1 Институт Системного Программирования РАН Группа RedVerst = REsearch and Development: VERification, Specification, Testing. Методология и технология верификации программ UniTesK 2 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst ОСНОВНАЯ ПРОБЛЕМА КОМПОЗИЦИИ СИСТЕМЫ Если компоненты работают правильно, почему система работает неправильно? Кто виноват? И что делать? 1 Ошибка реализации: на самом деле компоненты Виноваты разработчики компонентов. Нужно тестировать компоненты. р а б о т а ю т н е п р а в и л ь н о . 2 Ошибка композиции – требования к системе Если Нужно к пуговицам верифицировать и рукавам композицию. претензий нет, не согласованы с требованиями к компонентам ивиноват / и л и закройщик со схе= м архитектор о й к о м псистемы. оновки. 3 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Что такое правильность? правильность реализации определяется в сравнении с эталоном (спецификацией) более общее определение: правильность = соответствие требованиям спецификация = описание требований требования функциональные 4 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Что такое функциональность? функциональная спецификация отвечает на вопро с «ЧТО?», но не отвечает на вопрос «КАК?». С п е ц и ф и ка ц и я о п и с ы ва е т « фу н к ц и ю » , а н е а л г о р и т м в ы ч и с л е н и я фу н к ц и и . Р е а л и з а ц и я – н а о б о р о т . функциональность относительна: зависит от того, что для нас важно (ЧТО), а что – второстепенно (КАК). 5 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Формализация реализации, спецификации и соответствия: математическая модель математическая модель MModel модель спецификации известна – задана спецификацией SSpecModel тестовая гипотеза (G. Bernot ): модель реализации м.б. IImpl Model неизвестна, но существует соответствие: rel ImplSpec 6 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Компоновка системы Composition : Model … Model Model Спецификация системы корректна = композиция любых конформных реализаций конформна: ( n In rel Sn ) Composition(I1,I2,…) rel S Задача: найти самую сильную корректную спецификацию S: S` - корректная S rel S` NEW Проблема: Composition(S1,S2,…) м.б. некорректна. Решение: найти каноническое преобразование F спецификаций, чтобы Composition(F(S1),F(S2),…) была самой сильной корректной спецификацией. NEW 7 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Функциональность и взаимодействие Мы ограничимся такой функциональностью, когда всё «важное» относится к внешнему, н а бл ю д а ем ом у п о в ед е н и ю р е а л и з а ц и и . Реализация правильная, если она правильно взаимодействует с окружением. Реализация соответствует спецификации, если взаимодействие реализации с окружением «похоже» (соответствует) на взаимодействие спецификации с окружением. Становится возможным тестирование = проверка правильно сти в эксперименте, когда те ст подменяет собой окружение. 8 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Что нужно для тестирования? Те с т о в ы е в о з м о ж н о с т и : • ч то м ож н о н а бл юд ат ь ? • как можно управлять? Реализационные гипотезы : • что может быть и чего не может быть в реализации? 9 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Формализация эксперимента: Машина тестирования Модели с одним множеством наблюдаемых можетдействия разрушиться! N E W реализация наблюдение: (внешние) zZ трасс, эквивалентны = неразличимы в любом эксперименте, N E W + разрушение () + из отказы (refusal sets) Отказ C = действия C не наблюдаются Разрушение можно понимать как то есть при любом взаимодействии с окружением. РАЗВИТИЕ + внутренняя активность () и неб будут сколько ни ждать. “A” , “B” , “C” , где A ,B луправление: ю оТрассовая е н енаблюдаться, ж екнопки л ат е л ь н о е п о в е д е н,CZ ие. модель = множе ство трасс кнопка “A” разрешает выполнять действиямашины. zA сПосле ограничениями, диктуемыми разрушения нетустройством наблюдений. РАЗВИТИЕ - возможностей отказвыполнить трасса разрушение “A” a1“B”b1“A”a2тестовых “C” C “A”a Формализация 2 наблюдений действия из C ... b a z21 чёрный A Bящик,Cв котором реализация 10 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Работа машины тестирования В каждый момент времени может наблюдаться действие или разрушение, если оно возможно в машине и разрешено оператором. Д ей ст в ие разр ешает ся наж ат ием кн опки , а разрушение всегда разрешено. Если есть -активность, действия и разрушение могут не наблюдаться: «машина думает». Если нет -активности, то должно наблюдаться возможное и разрешённое действие или разрушение, если такие есть. Если таких нет, возникает deadlock: машина «стоит в стабильном состоянии». Deadlock может быть снят нажатием другой кнопки. 11 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Отказы и дивергенция. Реализационная гипотеза. Отказ C = действия из C не наблюдаются и не будут наблюдаться, сколько ни ждать. Реализационная гипотеза: Ограничим по времени каждое действие и каждую конечную -активность. КАК ВОЗМОЖНО НАБЛЮДЕНИЕ ОТКАЗА? Б е с ко н е ч н а я - а к т и в н о с т ь ( д и в е р г е н ц и я , С кол ь ко ж д ат ь , ч то б ы убед и т ь с я , ч то «зацикливание») внешне не отличима от deadlock`а. б о л ь дивергенция ш е ж д а- тнежелательное ь н е н уповедение, ж н о ? Поэтому NEW т.е. дивергенция рассматривается как разрушение . = истечение тайм-аута Отказ C = при нажатой кнопке “C”. Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН 12 RedVerst NEW Безопасность тестирования Тест не должен разрушать реализацию: нельзя наблюдать трассу с разрушением . Реализация безопасна, если она не разрушается после включения машины до нажатия кнопок. Кнопка безопасна после трассы, если её нажатие не может вызвать разрушение (после любого возможного действия, разрешаемого кнопкой). Трасса безопасна, если каждая её кнопка б е з о п а с н а п о с л е п р е д ш е с т ву ю щ е г о е й начального отрезка трассы. 13 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Обобщённое соответствие iocoмашина Гипотеза о безопасности для iocoмашина : Хорошо отвечает интуитивному пониманию в«правильности» с е б е з о п а с н ыклассическое е т р а с с ы с псоответствие ецификации, имеющиеся в реализации, безопасны в ней. ioco – Input-Output COnformance [Jan Tretmans]. NEW Соответствие iocoмашина: Предлагается обобщение этого соответствия Еслипроизвольной после общей трассы, безопасной в реализации для машины тестирования : и с п ец и ф и кац и и , к н о п ка “ A ” бе зо п а сн а в машина. после нажатия “A” спецификации, то вioco реализации РАЗВИТИЕ может наблюдаться действие aA или отказ A только, если это возможно и в спецификации. 14 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst ТЕСТЫ Конечный тест (test case). Конечное число нажатий кнопок и наблюдений. В конце работы выносится вердикт: fail или pass. Реализация проходит тест, если эксперимент при любой погоде заканчивается с вердиктом pass. Набор тестов (test suite). Sound : Р соответствует спецификации Р проходит тест Exhaustive : Р соответствует спецификации Р проходит тест Complete = Sound + Exhaustive Игорь Борисович Бурдонов & Александр Сергеевич Косачев 15 ИСП РАН RedVerst Генерация полного тестового набора безопасная трасса спецификации “A”, A, “B”, b К сожалению, полный тестовый набор почти всегда бесконечен, каждый fail pass aплохойA aахороший A тест “A” нужно прогонять неопределённо долго Отказ A – это тайм-аут В спецификации нет трассы В спецификации ( д л я р а з н ы х п о г од нпри ы хнажатии у с лкнопки оесть в и трасса й“A” ). РАЗВИТИЕ “A”aa“B” “A” B плохой fail bплохойB “B” “A” aхороший “B” B bхорошийB pass Поэтому почти всегда компоненты В спецификации нет трассы b В спецификации есть трасса р “A” а с aп“B” р еb д е л ё н н о й “A”сa и“B”с bт е м ы плохой хороший Такая безопасная трасса fail н е п ол н о с т ь ю pass п р о т е сесть т иврспецификации о в а н pass ы . Тест как инструкция оператору машины тестирования Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН 16 RedVerst Отсутствие приоритетов. Реализационная гипотеза. Реализация без приоритетов: Н а б л юд е н и е д е й с т в и я a н е з а в и с и т от того, какая нажата кнопка A, разрешающая это действие: aA. Иными словами, действия, разрешённые нажатой кнопкой, равноприори тетн ы . можно удалить кнопки из трассы – failure traces: “A”,a1,”B”,b1,”A”,a2,”C”,C a1,b1,a2,C Если каждое действие разрешается н е б о л е е ч е м од н о й к н о п ко й , т о безопасность кнопки = безопасность действия. Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН 17 RedVerst Взаимодействие: стимулы и реакции В з аи мод ей ст в и е ка к обм ен дискретной информацией между реализацией и тестом. Два вида атомарного взаимодействия: Тест Стимул ?x Реализация, Тест Реакция !y Реализация. 18 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Ограниченные тестовые возможности 1.Можно послать в реализацию один стимул: н е п р е д л а г а я е й д р у г и х с т и м ул о в и не предлагая приёма реакций. 2.Можно только принимать от реализации реакции: не предлагая ей стимулов. 3.Нельзя «выбирать», какую реакцию принять от реализации, а какую нет: тест либо принимает любую реакцию, л и б о н и ч е го н е п р и н и м а е т. 19 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst -машина тестирования управление: NEW для каждого ?x кнопка “?x”, Реализация может разрушиться! для всех !y общая кнопка “!” Реализация может не принимать Ре а лизация может не выдавать Разрушение можно понимать как наблюдения: стимулы ?x и реакции !y + разрушение отказы: (отсутствие л ю б о е н- стационарность еникаких ж е л ат е лреакций! ь н о е преакций) оведение, стимул! в т {?x} ом ч и с л стимула е д идляв каждого е р г е?xн - блокировка цию. трассы с задержками стационарность (обычные) трассы = нет -стимула реакций - блокировка -трассы - разрушение - traces traces ?a ?a ?b !y !u {?a} ?b – Suspension traces ... ?b ?a !u !y чёрный ящик, ?a ?b ?cв котором ! реализация 20 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst ioco и классическое ioco для каждого ?x кнопка “?x”, всех !y общая кнопка “!” ioco-спецификации = iocoдля -спецификации без разрушение наблюдения: стимулы ?x и -реализации реакции !y +без ioco-реализации = ioco {?x} и отказы: - стационарность (отсутствие реакций) на общем : I ioco S = I ioco?x Gamma (S) {?x}домене - блокировка стимула для каждого Два допущения полноты трассы с задержками: ioco -трассы: ioco (как понимать неспецифицированный стимул): I ioco S В I и S нет разрушения. В реализации I нет блокировок. Demonic стимул принимается, а дальше всё, что Не–проверяется стимул, если его нет в спецификации S. угодно, кроме блокировок и разрушения; I ioco Demonic (S) Стимул есть в S с любым продолжением без {} и – демоническое пополнение. Gamma – всё, что угодно, включая разрушение. S всегда естьистимул ioco ioco I ioco Demonic (S) Вблокировки Используются допущения полноты. . Для ioco I ioco Gamma (S) и другие можно продолжить 21 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Асинхронный автомат Трассовая модель – «минимальная» модель, до статочная для генерации тестов. Но она недостаточна для описания ко м п о з и ц и и с и с т е м ы и з ко м п о н е н т о в . Теперь переходим к более «детальной» модели, в ко т о р о й я в н о в в од я т с я со с т о я н и я . IOA - Input-Output Automaton IOLTS - Input-Output Labelled Transition System IOTS - Input-Output Transition System IOSM - Input-Output State Machine IOFSM - Input-Output Finite State Machine АА - Асинхронный автомат 22 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Асинхронный автомат Z – алфавит стимулов и реакций. S = ( V, Z, E, s0 ) Непустое множество V состояний с выделенным начальным состоянием s0. Наблюдаемый переход szs` E из состояния s в состояние s` по действию zZ или z=. Внутренний переход ss` E из состояния s в состояние s` по -активности. Внутренняя активность = цепочка -переходов. Дивергенция = бесконечная цепочка -переходов. Стабильное состояние: s & s . Стационарное состояние: стабильное и нет реакций: s!y для всех реакций !y. Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН 23 RedVerst -трассы асинхронного автомата -трасса автомата = последовательность символов (кроме символа ), которыми раскрашены переходы маршрута. Множество -трасс асинхронного В стабильных состояниях добавляются петли отказов: автомата является трассовой моделью. • петля • петля {?x} в стабильном состоянии s?x автоматная модель , в стационарном состоянии. трассовая модель ................................. Для финальности разрушения : автоматная модель • все -переходы перенаправляются в терминальное -состояние. Для каждой трассовой модели можно Для моделирования дивергенции разрушением : построить много автоматов с тем же • туда м же н ведём о ж еновые с т в-переходы о м из дивергентных - т р а ссостояний с. ( в которых начинаются бесконечные цепочки -переходов ). 24 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst оператор параллельной композиции S T в алфавите S в а лфавите A T в алфавите B (A \ B) (B \ A) szs` tzt` sts`t` синхронно 1 sas` & ( a= a= aB ) stas`t 2 ( b= b= bA ) & tbt` stbst` 3 T - тест: deadlock и tt` stst` 4 Противоположное действие: ?x = !x, !y = ?y. Внутренние : AB, для : AB) , deadlock = алфавиты: zABдля S( sz Ttz & алфавит: s для & t & \s Внешний S T : (A B) (B&\ t A) Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН 25 RedVerst Композиция системы Компоненты - асинхронные автоматы без -переходов. Для них оператор коммутативен, но не ассоциативен. Схема компоновки = последовательность композиции : Composition(A,B,C,D,E) = A ( (B C) (D E) ) ОСНОВНАЯ ПРОБЛЕМА КОМПОЗИЦИИ СИСТЕМЫ: Композиция компонентов, конформных своим спецификациям, может быть не конформна композиции спецификаций : A ioco SA & B ioco SB (A B) ioco (SA SB) или A ioco SA & B ioco SB (A B) ioco (SA SB) 26 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Асинхронное тестирование как частный случай тестирования кАсинхронное о м п о з и ц и и Синхронное тестирование тестирование Test Пример: Impl тест Очереди стимулов и реакций Context: ImplImpl очередь среда очередь стимуловпередачи реакций Test ( Media Impl ) Context(Impl) Impl тестовый контекст реализация Spec ioco Context(Impl) ioco Context(Spec) (Media Impl) ioco(Queue (Media Spec) (Queue Impl) ioco = Impl iocoQueue Spec Media Spec 27 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst 2 проблемы асинхронного тестирования Реализация I1 Реализация I2 Спецификация Для моделей без блокировокSканоническое преобразование не нужно. s0 !a s1 i0 !a i1 i0 !a i1 Поэтому стремятся пополнить спецификацию: … ?x ?x ?x доопределить неспецифицированные стимулы, используя то или иное допущение полноты. s2 !b s3 i2 !a i2 !b i3 i3 Гамма-пополнение лучше демонического, так как оно Дем о«помнит», ни ч еск о е какие по полстимулы не ние : были ?z ?z ?z доопределены Г а м м а п о п о л н е н и е : П е т л и п о в с е м по всем недостающим стимулам переходы по всем недостающим (разрушающие стимулы), избежать недостающим стимулам переходы в состояние с любымчтоs4позволяет i4 i5 !c с т и м у л а м в с о с т о я н и е лишних проверок при асинхронном тестировании. дальнейшим поведением без {} и DEMON ( I1 ioco S ) I1 iocoQueue S I2 ioco S Gamma(S) Demon(S) ( I2 iocoQueue S ) Вседозволенность Несохранение Сохранение соответствия Ничего не поделаешь... Это Это нехорошо! хорошо! Игорь Борисович Бурдонов & Александр Сергеевич Косачев 28 ИСП РАН RedVerst Н е с о х р а н е н и е с о от в ет с т в и я д л я моделей с блокировками алфавит A = { ?x, !y, !u } спецификация !y 1 реализация !y 1 0 A ioco 0 !u B = { ?u } A 2 Для моделей с блокировками требуется каноническое преобразование. B B ioco 0 ?u !y A B = { ?x, !y } 0 0 2 2 A B ( B 0 = 2 1 0 A ?u !y 0 0 A B 2 1 0 ioco после общей трассы {?x} в реализации системы есть !y Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН A B) 29 RedVerst Каноническое преобразование F:AAAA Спецификация системы корректна = композиция любых конформных реализаций конформна: S1,S2AA : Corr(S1,S2) =def { SAA | I1,I2AA ( I1 ioco S1 & I2 ioco S2 ) I1 I2 ioco S }. Каноническая спецификация эквивалентна исходной: SAA S ioco F(S) & F(S) ioco S. Косая композиция = композиция канонических спецификаций S1 S2 =def F(S1) F(S2) Косая композиция спецификаций - самая сильная корректная спецификация системы: S1 S2 Corr(S1,S2) & S Corr(S1,S2) S1 S2 ioco S. 30 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Существование канонического преобразования Каноническое преобразование эквивалентно о бъ ед и н е н и ю ко н ф о рм н ых р е а ли з а ц и й : U(S) =def { IAA | I ioco S } F(S) ioco U(S) & U(S) ioco F(S) ... ... конформные 1 алгоритм 2 построения 3 Нужен асинхронного автомата р е азаданному лизации канонической спецификации F(S) по асинхронному исходной спецификации S. автомату новое начальное состояние Такой алгоритм есть, но времени рассказывать его нет. 31 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Использование косой композиции 1. Верификация заданной спецификации системы = проверка корректности спецификации системы = косая композиция спецификаций компонентов должна быть конформна спецификации системы. 2. Ге н е р а ц и я с п е ц и ф и к а ц и и с и с т е м ы п о спецификациям компонентов, е сли н ет з аданной сп ец иф и кац ии си ст емы . 32 ИСП РАН RedVerst Смежные нерешённые проблемы 1. Канонические спецификации и косая композиция для машины тестирования общего вида: с приоритетами и произвольным набором кнопок. ПРИ ЗАДАННОЙ СХЕМЕ КОМПОНОВКИ: 2. О с л а б л е н и е т р е б о в а н и й к к о м п о н е н т а м : по спецификациям компонентов и корректной (в частности, самой сильной) спецификации с и с т е м ы с г е н е р и р о в а т ь о с л а бл е н н ы е с п е ц и ф и ка ц и и ком п о н е н т о в . 3. У с и л е н и е т р е б о в а н и й к к о м п о н е н т а м (декомпозиция системных требований): по спецификации системы и о слабленным (в частности, пустым) спецификациям компонентов сгенерировать полные спецификации компонентов. 33 ИСП РАН RedVerst продолжение следует... 34 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst Асинхронное тестирование как частный случай тестирования к о м п о з и ц и и тест алфавит теста среда передачи переименование алфавит реализации реализация 35 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst 2 проблемы асинхронного тестирования Реализация I2 Спецификация S s0 !a ?x s2 s1 DEMON !b … i0 !a i1 !b !c i3 ?x s3 i2 ?z ?z s4 i5 ?z !c i4 Для реализаций без блокировок и разрушения асинхронное тестирование при демоническом пополнении ловит больше ошибок, чем при гамма-пополнении. Например, ловится ошибочная реакция !c после стимула ?x, а при гаммапополнении стимул ?x не проверяется. Причина: домен гамма-пополнения шире, и допускается разрушение после ?x. Если отсутствие блокировок и разрушения в реализации специфицировать явно, то гамма-пополнение сведётся к демоническому пополнению. 36 Игорь Борисович Бурдонов & Александр Сергеевич Косачев ИСП РАН RedVerst