Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://old.hcs.cmc.msu.ru/lectures/AnalizeIT/Ch7_5.html
Дата изменения: Thu Jan 15 23:15:52 2004 Дата индексирования: Mon Oct 1 23:21:46 2012 Кодировка: Windows-1251 |
Часть VII7.5 Синтаксис, типы, конструкции утверждений конформностиКак следует из рассмотренных выше определений системы понятий, важное место в методологии тестирования конформности POSIX отводится понятиям "спецификация метода тестирования" (test method specification) и "утверждение" (assertion). Под утверждением понимается некоторое предписание заданных функциональных или поведенческих свойств одному или нескольким элементам стандарта (определяемой им системы ИТ), описанных некоторым стандартным способом. При этом уровень детализации описания этих свойств должен быть достаточным для того, чтобы разработчики тестовых методов могли непосредственно по тексту утверждений создавать программные коды тестов, проверяющих соответствующие свойства реализации. Источником информации для написания утверждений служат фрагменты текста стандарта, в которых явно или неявно определяются требования конформности реализаций. Утверждение конформности формулируется таким образом, чтобы код результата тестирования PASS ("тест прошел") указывал на конформность стандарту. Набор утверждений составляет спецификацию метода тестирования. При этом формулируются некоторые общие требования к разработке такой спецификации. В частности:
Для вывода утверждений из фрагментов текста стандарта, определяющих требования конформности, в методологии POSIX также предусмотрена некоторая методика. Она основывается на ручной разметке исходного текста и семантическом анализе выделенных фрагментов на предмет их возможной идентификации в качестве требований конформности. Данная методика рассматривается в этой главы ниже. Собственно тексты утверждений могут быть представлены как на естественном языке, так и на специальных формальных языках, некоторые из которых мы также кратко рассмотрим в конце главы. В системе стандартов POSIX для записи самих утверждений конформности используется стандартная синтаксическая нотация. Если разработчиками утверждений используется нотация, имеющая отличия по сравнению со стандартной, все эти отличия должны документироваться. Познакомимся со стандартным синтаксисом записи утверждений детальнее. В этой нотации все утверждения должны иметь, по меньшей мере, три связанные с ними компоненты:
Общая синтаксическая модель утверждения, названная структурой родового (Generic Assertion) утверждения изображается на Рис. 7.3. Рис. 7.3 - Структура Родового Утверждения (Generic Assertion Structure) Квадратные скобки на рис. 7.3 означают, что заключенные в них элементы родового утверждения (вложенные в скобки "If" и "Else") необязательны. Таким образом, единственным элементом, присутствие которого обязательно, является Test_Text. Как видно из рисунка, для описания утверждения может потребоваться использование ряда предусловий. Состав и упорядоченность возможных предусловий отражены в структуре родового утверждения. В зависимости от конкретного случая для определения утверждения могут использоваться все из показанных на рисунке предусловий или только некоторые из них. Также возможно, что все предусловия будут опущены. Исполнение текста утверждений тестирующей системой SUT предполагается сверху вниз. Имена в скобках "<" и ">" называются символьными именами (symbolic names). Они определяют элементы синтаксического определения утверждений. Рассмотрим назначение основных синтаксических элементов родового утверждения.
В методологии POSIX используются следующие типы утверждений:
Заметим, что состав типов может быть расширен. Каждое утверждение имеет идентификатор. Идентификатор утверждения может предваряться заключенным в круглые скобки списком стандартов, определяющих семантический контекст для текста утверждения. Кроме этого, сам идентификатор может иметь префикс, указывающий на тип утверждения. Для обозначения типа утверждения используются следующие соглашения:
Примерами идентификаторов утверждений являются:
Синтаксическая структура утверждений почти всех типов формируется композицией идентификатора утверждений соответствующего типа и родового утверждения. Для обозначения идентификаторов утверждений конкретных типов используются следующие метапеременные или символьные имена:
Тогда синтаксическая структура утверждений с учетом введенных выше соглашений принимает следующий вид:
В рассматриваемую нотацию для записи утверждений конформности введены макросредства, позволяющие группировать общие фрагменты текста базовых стандартов, а затем, используя аппарат макровызовов, продуцировать утверждения по единому макрошаблону (макроопределению), изменяя при необходимости параметризуемые части макроопределения. Все макроимена имеют префикс "M_". Имена макросам должны присваиваться так, чтобы они отражали назначение макросов и, возможно, их область действия (например, имя функции, для тестирования которой они определены). Например, M_GA_stdC_proto_decl - имя макроса, который содержит текст утверждения общего типа, относящегося к объявлению прототипа функции из стандарта для языка С. Макроопределение для такого макроса могло бы выглядеть следующим образом: M_GA_stdC_proto_decl(hdr,proto)=
Используя введенный макрос, можно было бы определить следующее общее утверждение, покрывающее различные объявления прототипов стандарта языка С. GA_stdC_proto_decl M_GA_stdC_proto_decl(header,synopsis_prototype) Введенный макрос может быть использован для введения утверждения с идентификатором 1, относящимся к конкретному элементу интерфейса, следующим способом: 1 M_GA_stdC_proto_decl(semaphore.h,"int sem_init(sem_t *sem, int pshared, unsigned int value);") |