Основы тестирования программного обеспечения

Описание автоматической генерации MSC тестов

Разбить на страницы
Показывать лекцию целиком

Как создать свой тест?

В данном случае под тестом мы будем понимать его представление в виде MSC-диаграммы. В качестве объектов мы будем рассматривать тест (Test) и тестируемую систему (Model). Обмен сообщениями между тестом и моделью показан на рис. 10.1.

Когда в системе происходит определенное событие, она запрашивает состояние окружения, посылая сигнал тестовому окружению.

Тест возвращает состояние окружения ( StoreStat, AxlePar, RollerPar, StoreMessage, CommandStatus ), посылая модели сигнал с параметрами в соответствии с запросом.

(рис 10.1) Взаимодействие теста и модели

Структура и описание содержимого каталогов

В папке Documents находится:

  • FDS;
  • HLD;
  • Практикум (этот документ).
  • Папка IntegrationTesting содержит проект Visual Studio .NET с примером интеграционного теста.

    Папка ModuleTesting содержит проект Visual Studio .NET с примером модульного теста.

    В папке SystemTesting\ManualTests содержится проект Visual Studio .NET с примерами системных ручных тестов.

    В папке SystemTesting\ScriptsTests содержатся примеры тестов с использованием скриптов:

    \bin - содержит программу launcher.exe, файл srv.tcl и вспомогательные скрипты header.tcl и footer.tcl, используемые для формирования структуры html-отчета. Программа launcher.exe запускает тестируемую систему и тестовый скрипт на выполнение, а после завершения теста завершает выполнение системы.

    \logs - log-файлы пройденных тестов ( *.log ), log-файлы тестируемой системы ( *.txt ) и общий отчет summary.html.

    \model - исполнимые файлы тестируемой системы.

    \sql - SQL скрипты для установки заданного состояния базы данных.

    \tests - тестовые скрипты на языке TCL.

    Папка SystemTesting\TATTests содержит:

    \ConfigTAT - программа ConfigTAT для настройки и запуска тестов TAT:

    \tat - система автоматизации тестирования TAT.

    \Tests\config\config.xml - xml файл, описывающий тестируемую систему (AUT), тестовое окружение и сигналы между ними.

    \Tests\Model - тестируемая система application under test.

    \Tests\mpr - mpr-файлы, описывающие тесты.

    \Tests\SQLScripts - sql-скрипты для подготовки базы данных к конкретному тесту.

    \Tests\Tests - stencil для Visio и MSC-диаграммы тестов в Visio.

    \Tests\WareHouseTest№ - рабочие папки тестов.

    \Tests\ *.tcf, tests.ltc - сохраненные конфигурации тестов и Testsuite- а для ConfigTAT.

    Папка SysLogAnimator содержит основные файлы: библиотека DirectX, запускаемый файл LogAnimator.exe и конфигурационный файл LogAnimator.cfg.

    Папка SysLogAnimator\Data содержит необходимые для работы аниматора графические файлы.

    Описание MSC

    Язык диаграмм взаимодействия (Message Sequence Charts, MSC) - это язык описания поведения системы в виде последовательности событий. События могут относиться к отдельным компонентам системы, к взаимодействиям между компонентами системы либо к взаимодействию между системой и ее окружением. Основное назначение диаграмм взаимодействия - описание последовательностей допустимых взаимодействий между компонентами системы и системой и ее окружением. Диаграммы изображаются в графическом виде, но существует также текстовая форма MSC-диаграмм. Обе формы переводятся взаимно однозначно друг в друга.

    Разновидности диаграмм взаимодействия используются при разработке систем реального времени с 1960-х годов. Особое распространение диаграммы взаимодействия получили в области разработки телекоммуникационных систем. Язык диаграмм взаимодействия стандартизован в 1992 году Международным Телекоммуникационным Союзом (ITU-T) (Рекомендация Z.120 1992). В настоящее время принята новая, значительно расширенная версия стандарта (Рекомендация Z.120 1996.).

    Основные понятия

    Диаграмма взаимодействия описывает последовательности событий, происходящих с набором объектов (системой взаимосвязанных компонентов). Дополнительно каждая система рассматривается как открытая, т.е. подразумевается наличие некоторого окружения системы, с которым система взаимодействует. Окружение также может задаваться в виде отдельного объекта.

    Основным понятием диаграммы взаимодействий является трасса объекта. Для каждого объекта на диаграмме имеется отдельная вертикальная ось. На этой оси откладываются события, имеющие отношение к данному объекту. Считается, что все объекты существуют одновременно, и последовательности событий объектов развиваются параллельно. При описании объекта используются стартовый (прозрачный прямоугольник) и конечный (черный прямоугольник) символы объекта, обозначающие соответственно начало и конец описания объекта в данной MSC-диаграмме.

    Взаимодействие между объектами (а также между объектом и окружением системы) осуществляется только при помощи обмена сообщениями (рис. 10.2).

    Сообщение моделирует взаимодействие (т.е. обмен информацией) между двумя объектами системы или между объектом и окружением системы. С точки зрения системы, взаимодействие между двумя объектами разбивается на два сопряженных события: посылка сообщения одним объектом и прием сообщения другим объектом (рис. 10.2). Сообщения, приходящие из окружения системы, моделируются одним событием приема сообщения, а события, посылаемые в окружение, моделируются одним событием посылки сообщения. Сообщение имеет имя. Имя сообщения задает тип взаимодействия. Диаграмма может описывать несколько обменов сообщениями с одинаковым именем. Для уникальной идентификации конкретного обмена предусмотрен так называемый уникальный идентификатор обмена (message instance name), однако он используется только в текстовом представлении для снятия неоднозначности в описании сопряженных событий у различных объектов. В графическом представлении такой проблемы не возникает, так как сопряженные события представляются различными концами одного и того же графического объекта (стрелки от трассы одного объекта к трассе другого).

    (рис 10.2) Пример взаимодействия между объектами в MSC

    Дополнительно, язык диаграмм взаимодействия позволяет описывать передачу информации в сообщении (рис. 10.3). С сообщением может быть связан список параметров. Каждый параметр моделирует передачу конкретной информации от одного объекта к другому. Язык диаграмм взаимодействия не определяет семантику параметров сообщения.

    (рис 10.3) Передача параметров сообщений

    MSC-диаграммы позволяют создавать более сложные описания поведения системы с помощью специальных операторов. В MSC'96 используется четыре типа операторов: alt - альтернативный оператор, par - параллельный оператор, loop - итерация, opt - опциональная область.

    Графически операторные конструкции изображаются в виде прямоугольника с пунктирными линиями в качестве разделителей. Ключевое слово оператора располагается в левом верхнем углу.

    Альтернативная композиция (рис. 10.4) позволяет задавать альтернативное выполнение секций MSC-диаграммы. Только одна альтернатива может быть реализована.

    (рис 10.4) Альтернатива

    Операция par имеет структуру, аналогичную конструкции alt (рис. 10.3), и определяет параллельное выполнение секций. Это означает, что все события внутри параллельных секций будут выполнены. Единственным ограничением является то, что порядок событий в каждой секции будет сохранен.

    Конструкция loop (рис. 10.5) имеет несколько форм. Наиболее общая форма - loop <n, m>, где n и m - натуральные числа. Это означает, что конструкция может быть выполнена от n до m раз. Вместо натурального числа может использоваться ключевое слово inf, обозначающее бесконечность.

    (рис 10.5) Цикл

    Оператор opt имеет структуру, аналогичную loop, но без операндов, и обозначает то же, что и оператор alt с пустой MSC в качестве второго операнда.

    Одним из важных понятий в MSC является условие или состояние. Состояние - это особое событие на трассе объекта. В отличие от прочих событий, одно и то же состояние может разделяться одним, двумя и более объектами. По числу объектов на диаграмме, разделяющих некоторое состояние, различают глобальные состояния (общее для всех объектов), разделяемые состояния (разделяемые несколькими, но не всеми объектами) и локальные состояния (разделяемые единственным объектом). Если два объекта разделяют одно и то же состояние, то сопряженные события приема и посылки сообщений должны происходить либо оба до соответствующего состояния, либо оба после соответствующего состояния.

    (рис 10.6) Состояние (условие)

    Основной недостаток стандартной MSC - невозможность описать отношения данных в параметрах сообщения. Эта проблема решается с использованием некоторого расширения стандартного MSC - mMSC (macro MSC). Основные из этих расширений включают в себя:

    Макроподстановки (рис. 10.7). Они позволяют создавать множество MSC-диаграмм с одинаковой структурой и разными параметрами сообщения, циклами и т. п. Макроподстановки начинаются с символа # и могут быть константами или функциями. Функции, кроме названия, содержат параметры, заключенные в скобки.

    (рис 10.7) Макроподстановки

    Типы макроподстановок описываются в определенном файле, и на основе этой информации вместо них подставляются конкретные значения.

    Временные ограничения служат для указания времени посылки/приема сообщения, его длительности и типа (синхронное с явно заданным моментом выполнения, асинхронное). Время может задаваться относительно начала работы (абсолютное), относительно предыдущего сообщения (относительное) или относительно метки. На рис. 10.8 сообщение M01 должно отправиться через 5 единиц времени, в течение 5 единиц после получения сообщения M00 (указано с помощью метки).

    (рис 10.8) Использование времени

    Применение MSC-диаграмм для описания поведения моделей

    Благодаря своему главному преимуществу - ясному графическому представлению, которое дает интуитивное понимание поведения описываемой системы, MSC-диаграммы широко применяются для различных целей:

  • для определения требований;
  • как спецификация интерфейсов;
  • как спецификация взаимодействия процессов;
  • как базис для генерации тестов;
  • для документации;
  • для объектно-ориентированного анализа и разработки.
  • Хотя изначально MSC-диаграммы предназначались для описания телекоммуникационных систем, сейчас они с успехом применяются и в других областях.

    Обработка MSC-диаграмм

    В случае достаточно сложных систем могут быть обнаружены ошибки, возникшие как при создании диаграммы, так и при проектировании тестируемой системы. Исправление тех же ошибок, если они будут обнаружены на более позднем этапе жизненного цикла продукта, потребует гораздо больших затрат.

    Проверка MSC-диаграммы на полноту

    Большинство систем или их частей можно в том или ином виде представить с помощью механизма state-машин. Тогда каждому состоянию системы на диаграмме будет соответствовать условие - конструкция condition. Для каждого события диаграммы (под событием будем понимать сообщение или действие - action) можно составить множество всех состояний, которые могут непосредственно предшествовать ему (предусловия). В этом случае проверка на полноту MSC-диаграммы будет заключаться в проверке того, все ли возможные случаи предусловий для каждого события представлены в ней. Если это не так, то, возможно, диаграмма не описывает полностью все возможные сценарии работы системы, и множество тестов, сгенерированных по этой диаграмме, будет неполным.

    Страницы:

    Как создать свой тест?

    В данном случае под тестом мы будем понимать его представление в виде MSC-диаграммы. В качестве объектов мы будем рассматривать тест (Test) и тестируемую систему (Model). Обмен сообщениями между тестом и моделью показан на рис. 10.1.

    Когда в системе происходит определенное событие, она запрашивает состояние окружения, посылая сигнал тестовому окружению.

    Тест возвращает состояние окружения ( StoreStat, AxlePar, RollerPar, StoreMessage, CommandStatus ), посылая модели сигнал с параметрами в соответствии с запросом.

    (рис 10.1) Взаимодействие теста и модели

    Структура и описание содержимого каталогов

    В папке Documents находится:

  • FDS;
  • HLD;
  • Практикум (этот документ).
  • Папка IntegrationTesting содержит проект Visual Studio .NET с примером интеграционного теста.

    Папка ModuleTesting содержит проект Visual Studio .NET с примером модульного теста.

    В папке SystemTesting\ManualTests содержится проект Visual Studio .NET с примерами системных ручных тестов.

    В папке SystemTesting\ScriptsTests содержатся примеры тестов с использованием скриптов:

    \bin - содержит программу launcher.exe, файл srv.tcl и вспомогательные скрипты header.tcl и footer.tcl, используемые для формирования структуры html-отчета. Программа launcher.exe запускает тестируемую систему и тестовый скрипт на выполнение, а после завершения теста завершает выполнение системы.

    \logs - log-файлы пройденных тестов ( *.log ), log-файлы тестируемой системы ( *.txt ) и общий отчет summary.html.

    \model - исполнимые файлы тестируемой системы.

    \sql - SQL скрипты для установки заданного состояния базы данных.

    \tests - тестовые скрипты на языке TCL.

    Папка SystemTesting\TATTests содержит:

    \ConfigTAT - программа ConfigTAT для настройки и запуска тестов TAT:

    \tat - система автоматизации тестирования TAT.

    \Tests\config\config.xml - xml файл, описывающий тестируемую систему (AUT), тестовое окружение и сигналы между ними.

    \Tests\Model - тестируемая система application under test.

    \Tests\mpr - mpr-файлы, описывающие тесты.

    \Tests\SQLScripts - sql-скрипты для подготовки базы данных к конкретному тесту.

    \Tests\Tests - stencil для Visio и MSC-диаграммы тестов в Visio.

    \Tests\WareHouseTest№ - рабочие папки тестов.

    \Tests\ *.tcf, tests.ltc - сохраненные конфигурации тестов и Testsuite- а для ConfigTAT.

    Папка SysLogAnimator содержит основные файлы: библиотека DirectX, запускаемый файл LogAnimator.exe и конфигурационный файл LogAnimator.cfg.

    Папка SysLogAnimator\Data содержит необходимые для работы аниматора графические файлы.

    Описание MSC

    Язык диаграмм взаимодействия (Message Sequence Charts, MSC) - это язык описания поведения системы в виде последовательности событий. События могут относиться к отдельным компонентам системы, к взаимодействиям между компонентами системы либо к взаимодействию между системой и ее окружением. Основное назначение диаграмм взаимодействия - описание последовательностей допустимых взаимодействий между компонентами системы и системой и ее окружением. Диаграммы изображаются в графическом виде, но существует также текстовая форма MSC-диаграмм. Обе формы переводятся взаимно однозначно друг в друга.

    Разновидности диаграмм взаимодействия используются при разработке систем реального времени с 1960-х годов. Особое распространение диаграммы взаимодействия получили в области разработки телекоммуникационных систем. Язык диаграмм взаимодействия стандартизован в 1992 году Международным Телекоммуникационным Союзом (ITU-T) (Рекомендация Z.120 1992). В настоящее время принята новая, значительно расширенная версия стандарта (Рекомендация Z.120 1996.).

    Основные понятия

    Диаграмма взаимодействия описывает последовательности событий, происходящих с набором объектов (системой взаимосвязанных компонентов). Дополнительно каждая система рассматривается как открытая, т.е. подразумевается наличие некоторого окружения системы, с которым система взаимодействует. Окружение также может задаваться в виде отдельного объекта.

    Основным понятием диаграммы взаимодействий является трасса объекта. Для каждого объекта на диаграмме имеется отдельная вертикальная ось. На этой оси откладываются события, имеющие отношение к данному объекту. Считается, что все объекты существуют одновременно, и последовательности событий объектов развиваются параллельно. При описании объекта используются стартовый (прозрачный прямоугольник) и конечный (черный прямоугольник) символы объекта, обозначающие соответственно начало и конец описания объекта в данной MSC-диаграмме.

    Взаимодействие между объектами (а также между объектом и окружением системы) осуществляется только при помощи обмена сообщениями (рис. 10.2).

    Сообщение моделирует взаимодействие (т.е. обмен информацией) между двумя объектами системы или между объектом и окружением системы. С точки зрения системы, взаимодействие между двумя объектами разбивается на два сопряженных события: посылка сообщения одним объектом и прием сообщения другим объектом (рис. 10.2). Сообщения, приходящие из окружения системы, моделируются одним событием приема сообщения, а события, посылаемые в окружение, моделируются одним событием посылки сообщения. Сообщение имеет имя. Имя сообщения задает тип взаимодействия. Диаграмма может описывать несколько обменов сообщениями с одинаковым именем. Для уникальной идентификации конкретного обмена предусмотрен так называемый уникальный идентификатор обмена (message instance name), однако он используется только в текстовом представлении для снятия неоднозначности в описании сопряженных событий у различных объектов. В графическом представлении такой проблемы не возникает, так как сопряженные события представляются различными концами одного и того же графического объекта (стрелки от трассы одного объекта к трассе другого).

    (рис 10.2) Пример взаимодействия между объектами в MSC

    Дополнительно, язык диаграмм взаимодействия позволяет описывать передачу информации в сообщении (рис. 10.3). С сообщением может быть связан список параметров. Каждый параметр моделирует передачу конкретной информации от одного объекта к другому. Язык диаграмм взаимодействия не определяет семантику параметров сообщения.

    (рис 10.3) Передача параметров сообщений

    MSC-диаграммы позволяют создавать более сложные описания поведения системы с помощью специальных операторов. В MSC'96 используется четыре типа операторов: alt - альтернативный оператор, par - параллельный оператор, loop - итерация, opt - опциональная область.

    Графически операторные конструкции изображаются в виде прямоугольника с пунктирными линиями в качестве разделителей. Ключевое слово оператора располагается в левом верхнем углу.

    Альтернативная композиция (рис. 10.4) позволяет задавать альтернативное выполнение секций MSC-диаграммы. Только одна альтернатива может быть реализована.

    (рис 10.4) Альтернатива

    Операция par имеет структуру, аналогичную конструкции alt (рис. 10.3), и определяет параллельное выполнение секций. Это означает, что все события внутри параллельных секций будут выполнены. Единственным ограничением является то, что порядок событий в каждой секции будет сохранен.

    Конструкция loop (рис. 10.5) имеет несколько форм. Наиболее общая форма - loop <n, m>, где n и m - натуральные числа. Это означает, что конструкция может быть выполнена от n до m раз. Вместо натурального числа может использоваться ключевое слово inf, обозначающее бесконечность.

    (рис 10.5) Цикл

    Оператор opt имеет структуру, аналогичную loop, но без операндов, и обозначает то же, что и оператор alt с пустой MSC в качестве второго операнда.

    Одним из важных понятий в MSC является условие или состояние. Состояние - это особое событие на трассе объекта. В отличие от прочих событий, одно и то же состояние может разделяться одним, двумя и более объектами. По числу объектов на диаграмме, разделяющих некоторое состояние, различают глобальные состояния (общее для всех объектов), разделяемые состояния (разделяемые несколькими, но не всеми объектами) и локальные состояния (разделяемые единственным объектом). Если два объекта разделяют одно и то же состояние, то сопряженные события приема и посылки сообщений должны происходить либо оба до соответствующего состояния, либо оба после соответствующего состояния.

    (рис 10.6) Состояние (условие)

    Основной недостаток стандартной MSC - невозможность описать отношения данных в параметрах сообщения. Эта проблема решается с использованием некоторого расширения стандартного MSC - mMSC (macro MSC). Основные из этих расширений включают в себя:

    Макроподстановки (рис. 10.7). Они позволяют создавать множество MSC-диаграмм с одинаковой структурой и разными параметрами сообщения, циклами и т. п. Макроподстановки начинаются с символа # и могут быть константами или функциями. Функции, кроме названия, содержат параметры, заключенные в скобки.

    (рис 10.7) Макроподстановки

    Типы макроподстановок описываются в определенном файле, и на основе этой информации вместо них подставляются конкретные значения.

    Временные ограничения служат для указания времени посылки/приема сообщения, его длительности и типа (синхронное с явно заданным моментом выполнения, асинхронное). Время может задаваться относительно начала работы (абсолютное), относительно предыдущего сообщения (относительное) или относительно метки. На рис. 10.8 сообщение M01 должно отправиться через 5 единиц времени, в течение 5 единиц после получения сообщения M00 (указано с помощью метки).

    (рис 10.8) Использование времени

    Применение MSC-диаграмм для описания поведения моделей

    Благодаря своему главному преимуществу - ясному графическому представлению, которое дает интуитивное понимание поведения описываемой системы, MSC-диаграммы широко применяются для различных целей:

  • для определения требований;
  • как спецификация интерфейсов;
  • как спецификация взаимодействия процессов;
  • как базис для генерации тестов;
  • для документации;
  • для объектно-ориентированного анализа и разработки.
  • Хотя изначально MSC-диаграммы предназначались для описания телекоммуникационных систем, сейчас они с успехом применяются и в других областях.

    Обработка MSC-диаграмм

    В случае достаточно сложных систем могут быть обнаружены ошибки, возникшие как при создании диаграммы, так и при проектировании тестируемой системы. Исправление тех же ошибок, если они будут обнаружены на более позднем этапе жизненного цикла продукта, потребует гораздо больших затрат.

    Проверка MSC-диаграммы на полноту

    Большинство систем или их частей можно в том или ином виде представить с помощью механизма state-машин. Тогда каждому состоянию системы на диаграмме будет соответствовать условие - конструкция condition. Для каждого события диаграммы (под событием будем понимать сообщение или действие - action) можно составить множество всех состояний, которые могут непосредственно предшествовать ему (предусловия). В этом случае проверка на полноту MSC-диаграммы будет заключаться в проверке того, все ли возможные случаи предусловий для каждого события представлены в ней. Если это не так, то, возможно, диаграмма не описывает полностью все возможные сценарии работы системы, и множество тестов, сгенерированных по этой диаграмме, будет неполным.

    Вернуться к учебному плану