Автоматизированного тестирования свойств математических моделей судов

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Математико-механический факультетКафедра системного программированияСИСТЕМА АВТОМАТИЗИРОВАННОГО ТЕСТИРОВАНИЯ СВОЙСТВ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ СУДОВДипломная работа студентки 545 группыСмирновой Ольги Юрьевны Научный руководитель ………………/ подпись / К. ф.-м.н., Григорьев В. Н. Рецензент ………………/ подпись / Ст. преп. Каф. Системного программированияГубанов Ю.А. “Допустить к защите”заведующий кафедрой, ……………… / подпись / д.ф.-м.н., проф. Терехов А.Н. Санкт-Петербург^ SAINT PETERSBURG STATE UNIVERSITY Mathematics & Mechanics FacultySoftware Engineering ChairAUTOMATED TESTING SYSTEM OF PROPERTIES OF MATHEMATICAL SHIP MODELSbySmirnova Olga YurievnaMaster’s thesis Supervisor ……………… PhD, Grigoriev V. N. Reviewer ……………… Senior Lecturer of Software Engineering Chair,Gubanov Y.A. “Approved by”Head of Department ……………… Professor A. N. Terekhov Saint Petersburg Оглавление Оглавление 3 Введение 4 Тренажёрные системы 4 Модели судов. Математические модели. 5 Программное обеспечение для создания моделей 6 Редактор моделей (Model Editor) 6 Ручное тестирование моделей в VSY 8 Параметры мира 9 Управление моделью 10 Отслеживание результатов 10 Постановка и актуальность задачи. 12 Реализация 14 Система автоматизированного тестирования (Autotester) 14 Архитектура системы 15 Использование возможностей приложения Scene в тестах. 16 Параметризация тестов 18 Обработка ошибок 19 Обработка результатов 19 Структура автоматизированного теста 22 Примеры тестов 24 Таблица скоростей (Speed Table) 24 Устойчивость (Pullout) 25 Интерфейс пользователя 27 Заключение 29 Список литературы 30 Введение Современный уровень развития техники и технологии в области судостроения и навигации позволяет создавать целый ряд сложных механизмов, дающих возможность проводить комплекс различных операций с невиданной ранее скоростью, легкостью, экономичностью. Вместе с тем, возникает проблема освоения и безопасной эксплуатации подобных систем, поскольку управление ими является достаточно ответственным делом, а любая ошибка может привести к необратимым последствиям. Таким образом, подготовка персонала для эксплуатации сложных систем становится первоочередной задачей. Использование тренажеров – наиболее оптимальный путь для решения этой задачи. Современные морские тренажёры позволяют обучать специалистов как выполнению стандартных процедур, так и действию в нештатных ситуациях, развивая и укрепляя полученные теоретические знания и навыки.^ Тренажёрные системы Современные тренажёрные системы позволяют реалистично смоделировать поведение судов и управление ими в различных условиях. На Рис.1 изображена визуализация движения судна в тренажере NaviSailor.^ Рис. 1 Тренажёр NaviSailorНавигационный тренажёр включает в себя: Инструкторские станции для обучающих (инструкторы создают упражнения, управляют количеством и расположением судов, начальными данными, внешними условиями и т.п.). Станции операторов для обучаемых (обучаемый видит перед собой панель, повторяющую реальную приборную панель судна, может управлять заданным судном с этой панели). 3D-визуализацию движения судна. Инструктору предоставляется широкий спектр возможностей для моделирования различных возможных ситуаций в каждом упражнении. Управление погодными условиями (ветер, течение, волнение, прилив и т.п.). Условия могут комбинироваться и устанавливаться на ограниченные зоны. Управление начальными условиями (начальная скорость судна, курс, осадка и т.п.). Также инструктор может задать маршрут следования судна или включить автопилот. Добавление на карту дополнительных статических или движущихся объектов (суда, вертолёты, животные, маяки и многие другие) Выбор области действия из большой коллекции карт. Карты могут быть как искусственные, так и повторяющие рельеф реальной местности. Выбор модели судна. Инструктор может выбирать различные суда, каждое из которых будет иметь характеристики и свойства, аналогичные реальным судам. На данный момент создано более 200 различных моделей (от небольших рыбацких лодок и катеров до огромных нефтяных танкеров), и они продолжают непрерывно разрабатываться.^ Модели судов. Математические модели. Программное обеспечение математической модели движения судна обеспечивает моделирование пространственного движения судна. Моделируется влияние действия ветра, течения, волнения, взаимодействия с другими судами, стенками и грунтом. Модель судна представляет собой хранилище данных с иерархической структурой файлов и папок. Архив с моделью хранит в себе множество информации, полностью описывающей поведение модели: Визуальная информация (3D-модель, текстуры, информация о точках расположения устройств и др.) Звуки (спецсигналы, предупреждения и т.п.) Математическая модель состоит из двух отдельных частей: Настройки модели (наличие устройств, их количество и характеристики, параметры корпуса, размеры, водоизмещение и многое другое) Расчёт модели (набор уравнений и логических правил поведения в тех или иных ситуациях)Математическая модель полностью описывает логику поведения судна и его реакцию на различные внешние условия. Она позволяет рассчитывать силы, действующие на судно в каждый момент времени, вычислять его траекторию, крен, положение в воде, относительные скорости и другие параметры, дающие возможность реалистично моделировать поведение судна. Расчёт математической модели представляет собой отдельный программный модуль (библиотеку), разрабатываемый независимо от остального ПО. Этот модуль не связан с конкретной моделью, его цель – моделирование физики поведения судна. Одна и та же модель судна с различными библиотеками может вести себя по-разному.^ Программное обеспечение для создания моделей Редактор моделей (Model Editor) Инструмент Model Editor (Рис. 2) входит в состав системы подготовки данных (Model Wizard), которая позволяет создавать модели и районы плавания судов. Model Editor позволяет создавать модели «с нуля» или на базе уже существующих моделей.^ Рис. 2 Окно Model EditorСоздание модели в Model Wizard включает в себя редактирование всех её составляющих частей: визуальной модели, звуков и сигналов, математической модели. Для создания каждого из этих элементов предусмотрен отдельный компонент. В частности, создание математической модели судна происходит в среде Virtual Ship Yard.^ Virtual Ship Yard Редактор математических моделей (Virtual Ship Yard, далее VSY) является частью инструмента Model Editor и служит для создания математических моделей судов и барж. VSY позволяет вручную или с помощью автоматической настройки задавать параметры судна (Рис. 3), а затем объединяет комплекс настроек с текущей версией расчёта модели.^ Рис. 3 Диалог редактирования настроек математической моделиПредоставляется возможность редактирования следующих параметров судна: Общая информация: год и страна постройки, IMO номер и т.п. Параметры корпуса: неизменные параметры судна (водоизмещение, высота, длина и ширина и т.п.) в зависимости от осадки. Коэффициенты модели: коэффициент ватерлинии, призматический коэффициент и др. Аэродинамические свойства. Настройки двигателей: тип двигателей и их количество, мощность, обороты при движении вперёд и назад, минимальные стабильные обороты. Таблица зависимости оборотов и мощности двигателя от задания в процентах. Аналогично настраиваются другие приборы: пропеллеры, рули и т.п. Кроме непосредственно инструмента настройки модели, VSY обладает широким спектром возможностей. Существуют инструменты для автоматической настройки некоторых важных параметров в соответствии с задаваемыми условиями и графиками, система предупреждения и исправления ошибок настройки. В VSY создаются специальные стандартизированные документы, прилагаемые к модели – pilot card, full booklet, wheelhouse poster, содержащие важную информацию о модели. Обеспечивается автоматическая настройка: ходкости водоизмещающих судов (Engine Telegraph Autotune). посадки быстроходных судов (Planing Effect Autotune). поворотливости (Controllability Autotune). инерционно-тормозных характеристик (Stoppings Autotune). Специальное приложение позволяет контролировать результаты работы автоматической настройки модели. Предоставляется список всех параметров модели, изменённых в результате автоматической настройки модели, приводятся графики этих параметров до настройки модели и после неё. Важной частью системы VSY является приложение Сцена (Scene), предназначенное для тестирования созданной модели в условиях, аналогичных условиям её будущего использования. ^ Ручное тестирование моделей в VSY Модели, создаваемые в приложении VSY, могут иметь различные параметры, в том числе и далёкие от реальности. После создания необходимо проверить, как будет вести себя модель в тех или иных ситуациях. Для этих целей предусмотрены инструменты тестирования модели. Ручное тестирование выполняется в специальном приложении Сцена (Рис. 4). Сцена состоит из «мира» и моделей, участвующих в ней (участвовать могут несколько моделей для сравнения поведения). Мир – это искусственная среда, в которой можно проверить, как ведёт себя созданная модель в различных условиях. В ней есть возможность задавать глубину воды, течение, погодные условия. Предусмотрено управление всеми приборами (рулями, подруливающими устройствами, двигателями, автопилотом и т.п.). В этой среде можно наблюдать за движением модели в тех или иных условиях, отслеживать различные показатели во время движения (силы, действующие на судно, скорость, кривизна поворота, расход топлива и многие другие). Есть возможность строить графики различных показателей, управлять временем, менять осадки судна, наблюдать за его положением в воде и множество других возможностей.Рис. 4 Окно сцены^ Параметры мира Тестирование может проводиться при различных параметрах окружающей среды и с различными начальными данными. Среда Scene – это упрощённая версия инструкторской станции тренажёра с дополнительными средствами отслеживания поведения модели. В отличие от тренажёра, в Scene отсутствует выбор карты, возможность задания локальных условий и другие возможности, не являющиеся необходимыми для проверки. Тем не менее, приложение обладает достаточным количеством возможностей для полноценной проверки математических свойств модели. В частности, на панели настроек можно задавать следующие параметры: Начальную скорость, курс, начальную позицию судна. Осадку судна. Течение, ветер, волнение (силу и направление). Глубину. Лёд (тип льда и его толщина).Также есть возможность фиксации одной или нескольких степеней свободы (kinematic freezer), управление устойчивостью судна и другие параметры.^ Управление моделью Управление моделью осуществляется с помощью специальных элементов управления, относящихся к различным устройствам модели (Рис. 5). Есть возможность управления двигателем (задание процента использования, старт/стоп), рулями, подруливающими устройствами, автопилотом и др. Панель является упрощённым аналогом приборной панели, которую видит обучаемый в тренажёре. Рис. 5 Панель управления^ Отслеживание результатов Приложение Scene содержит в себе множество возможностей для отслеживания результатов тестирования. На различных панелях (Рис. 6) выводятся в реальном времени показатели модели (скорости и ускорения по различным осям, кривизна поворота, показатели различных приборов и многие другие). Пользователю предоставлена возможность создавать, сохранять и загружать собственные панели, комбинируя необходимые ему показатели.^ Рис. 6 Различные панели с показателямиВ связи с большим количеством настроек и наблюдаемых параметров, тестирование модели является сложным и трудоёмким процессом, требующим специальных знаний и предельной внимательности.^ Постановка и актуальность задачи. Перед тем, как созданная в VSY модель начнёт использоваться в тренажёрной системе, она должна пройти процедуру подробного тестирования. Необходимо проверить адекватность поведения модели в различных условиях внешней среды и условиях эксплуатации, а также сравнить показатели виртуальной модели с показателями реального прототипа судна. Модель, устанавливаемая в тренажёр, должна с достаточной степенью точности имитировать поведение судна. Эксперты в области гидродинамики, судостроения и навигации проводят множество комплексных тестов свойств модели в приложении Scene. Это длительный и трудоёмкий процесс, отнимающий много дорогостоящих человеческих ресурсов. Отслеживание результатов тестирования занимает существенную часть времени в связи с большим количеством наблюдаемых параметров, необходимостью их многократного сравнения и подробного анализа. Существующий инструмент ручного тестирования Scene является удобным инструментом для однократных проверок, но при большом объёме работ теряет свою эффективность. Процессы проверки различных моделей в целом схожи. Существует установленный набор требований, которым должна отвечать работоспособная модель, и соответствующий набор проверок, выполняющихся для каждой вновь созданной модели. Условия большой трудоёмкости и относительной стандартизированности проверок приводят к идее автоматизации тестирования. Автоматизированное тестирование имеет множество преимуществ: Позволяет экономить трудовые ресурсы. Исключает человеческий фактор – возможность ошибок, погрешностей и т.п. Может работать с большими объёмами данных. Сокращает денежные затраты на работу экспертов. Конечно, автоматизированные тесты не могут полностью заменить ручные проверки. Тем не менее, они заметно сокращают объём работы экспертов, оставляя для ручной проверки только оценку результатов, а также тесты, уникальные для каждой модели. Задачей данной дипломной работы является создание системы автоматизированного тестирования свойств математических моделей судов и набора тестов для этой системы. Система должна являться частью продукта VSY, предоставляемой конечному пользователю и использоваться как для внутреннего тестирования, так и для пользовательских проверок. В связи с тем, что продукт VSY полностью разрабатывается на языке C#, было принято решение реализовывать систему также на языке C#. Автоматизированные тесты с использованием системы должны создаваться инженерами по тестированию с участием экспертов, ведущих проверки моделей. Выделим основные требования к системе автоматизированного тестирования: Система должна предоставлять для использования в автоматизированных тестах программный интерфейс приложения Scene. В частности, для имитации действий экспертов с помощью тестов, система должна позволять: Управлять условиями внешней среды. Задавать начальные условия, в которых находится модель. Управлять моделью (её двигателями, рулями, автопилотом и другими приборами). Система должна иметь визуальный интерфейс для выбора и выполнения тестов конечным пользователем. Тесты не должны зависеть от модели, конкретной реализации продукта VSY и расчёта модели. Результаты тестирования должны представляться в удобной форме и анализироваться на уровне, достаточном для существенного сокращения работы экспертов. На данный момент существует множество инструментов автоматизированного тестирования. Различают два основных подхода – тестирование кода и интерфейса. Тестирование интерфейса Инструменты, предназначенные для тестирования графического пользовательского интерфейса, имитируют действия пользователя: нажатия мыши, ввод с клавиатуры и т.п. Самые известные подобные инструменты: AutomatedQA TestComplete, HP QuickTest Professional, IBM Rational FunctionalTester, AutoIT и множество других. Каждый из этих продуктов обладает широкими функциональными возможностями тестирования приложений и обработки данных. Тестирование кода Инструменты тестирования кода, или модульного тестирования (такие как JUnit для Java или NUnit для языков платформы .NET и др.), предназначены для проверки корректности исходного кода, правильности работы функций и т.п. Модульные тесты, хотя и могут глубоко встраиваться в продукт, совершенно не подходят для решения поставленной задачи, так как не могут быть нацелены на работу с продуктом в целом. Таким образом, задача автоматизации тестирования моделей по-своему уникальна и не может быть решена существующими программными средствами. Описанные инструменты не подходят для решения поставленной задачи, так как не соответствуют одному из основных требований к системе: система должна являться частью продукта VSY, предоставляемой конечному пользователю. ^ Реализация Система автоматизированного тестирования (Autotester) В соответствие с вышеописанными требованиями, в рамках проекта VSY была реализована система автоматизированного тестирования моделей Autotester. Autotester – это система, представляющая собой систему классов, взаимодействующих с продуктом VSY. Эта система служит посредником между тестами и приложением, что позволяет создавать тесты, не зависящие от конкретной реализации продукта. Можно выделить несколько особенностей системы Autotester: Автоматизированные тесты взаимодействуют с приложением Scene, используя его возможности для запуска сцены, управления параметрами окружающей среды, параметрами судна и пр. Пользователь имеет возможность выбирать и запускать любой набор тестов из предложенных Пользователь может задавать начальные параметры маневров, глубину акватории, параметры внешних условий (ветра, течения, волнения). Тесты могут выполняться с визуализацией или без неё Результаты тестирования обрабатываются и представляются пользователю в html-отчёте в виде специальных графиков и таблиц Добавлена возможность сравнительного тестирования (сравнение с другим заданным документом или результатами аналогичного тестирования другой выбранной модели) Результатом разработки является библиотека AutoTester.dll. Предусмотрено два сценария использования данной библиотеки: Библиотека является частью продукта VSY и вместе с набором автоматизированных тестов включается в комплект поставки конечному пользователю. Пользователь после создания модели в VSY может запускать автоматические тесты и просматривать html-отчёты об их результатах. Библиотека используется инженерами по тестированию для разработки новых автоматизированных тестов. Тесты используют функции классов системы Autotester для взаимодействия с приложением Scene и обработки результатов. Новые тесты могут стать частью системы (и, следовательно, быть доступными конечному пользователю) либо выделяться в отдельную библиотеку и использоваться только для внутренних целей тестирования. Для системы Autotester был разработан (и продолжает дополняться и совершенствоваться) набор тестов (циркуляция, зигзаг, активное торможение, пассивное торможение, др.). Каждый тест представляет собой некоторый маневр (плавание по заданной траектории, например, спирали, плавание в определённых погодных условиях, при волнении, движение при экстренной остановке и многие другие) с отслеживанием и проверкой различных показателей. Тесты разделены на группы в соответствие с их предназначением.^ Архитектура системы Архитектура системы Autotester представляет собой набор классов, взаимодействующих с продуктом VSY, и интерфейс пользователя системы. Методы этих классов предназначены для использования в автоматических тестах, которые также создаются на языке C#. На Рис. 7 представлена упрощённая диаграмма классов системы с их основными функциями:^ Рис. 7 Диаграмма классов системы AutotesterВ диаграмме можно выделить несколько основных областей:Класс TestSuite хранит список тестов, выбранных пользователем для запуска, управляет запуском тестов и работает с Html-отчётами.Класс BaseTest является предком любого автоматизированного теста. В этом классе реализованы простейшие функции, использующиеся в тестах.Классы Scene, World и Model предназначены для использования в автоматических тестах. Они предоставляют составителю автоматизированного теста функции, позволяющие использовать возможности приложения Scene в тесте. Классы ParamHolder и Param используются для работы с параметрами тестов.Классы Results, Table, Column и Graph используются для хранения результатов тестирования и генерации Html-отчёта для одного теста.Классы ScriptErrorAnalyzer, KnowledgeSourceManager, KnowledgeSource и его наследники служат для обработки серьёзных ошибок, возникающих во время теста.Продукт VSY взаимодействует с системой Autotester через класс TestSuite. Этот класс отвечает за визуальное представление системы в виде панели при встраивании в продукт VSY (подробнее пользовательский интерфейс системы будет описан ниже). Помимо этого, важными задачами класса являются запуск тестов, генерация общего html-отчёта для всех запущенных тестов и запуск сравнительного тестирования. Основные члены класса:tests[] – массив, хранящий все отмеченные пользователем тесты.start – запуск тестирования. В этом методе создаются экземпляры классов Scene, World и Model, таким образом, все тесты поочерёдно проходят в одной и той же сцене на одной и той же модели.generateHtml – собирает отдельные html-отчёты для каждого теста в единый отчёт. compareWithDocument – сравнивает сгенерированный в методе generateHtml отчёт с документом, заданным пользователем. В данной функции производится поиск по обоим документам совпадений в названиях выполненных тестов. В случае совпадения подробное сравнение производится в методе Results.compare. Данный метод может использоваться, к примеру, для сравнения поведения модели с некоторой «эталонной» моделью или для сравнения поведения модели до и после некоторого изменения в настройках. Кроме того, метод нашёл своё применение во внутреннем сравнительном тестировании разных версий расчёта модели.compareWithModel – для модели, заданной пользователем, выполняется аналогичный набор тестов. Затем результаты сравниваются с результатами метода generateHtml с помощью Results.compare.^ Использование возможностей приложения Scene в тестах. Система Autotester предоставляет для применения в тестах программный интерфейс, позволяющий использовать возможности приложения Scene. Маневры выполняются в среде приложения Scene, называемой “миром” (World). Внутри маневра можно управлять внешними условиями, управлять моделью и получать данные о состоянии модели. Для работы с приложением Scene, его миром и моделью были реализованы соответственно классы Scene, World и Model. Эти классы предоставляют функции, позволяющие управлять элементами приложения Scene из автоматизированного теста. Класс Scene отвечает за базовую функциональность приложения Scene: инициализация мира, добавление в сцену моделей, управление временем. Основные функции этого класса: setWorld – инициализация мира. addModel – добавление в сцену модели. doStep – единичный шаг сцены. Видимость непрерывного движения модели в сцене создаётся за счёт частых атомарных шагов. На время одного шага силы, действующие в сцене фиксируются, затем производится изменение параметров модели и внешней среды. После изменения этих параметров пересчитываются силы в соответствие с произведёнными изменениями. Уравнения влияния сил на параметры и обратной зависимости сил от этих параметров содержатся в модуле расчёта модели, который является частью продукта VSY. Функция doStep чаще всего используется для управления временем из теста, так как позволяет максимально подробно отслеживать изменения в наблюдаемых параметрах. move, stop, pause – реже используемые функции для управления временем сцены. Могут применяться, например, когда модель должна проплыть определённое время или расстояние без отслеживания параметров. Класс World предоставляет функции для изменения параметров внешней среды и наблюдения за ними. Этот класс содержит в себе следующие структуры: stIce – хранит информацию о наличии, типе и толщине льда. stCurrent – хранит информацию о скорости и направлении течения. stWind – хранит информацию о скорости и направлении ветра. stWave – хранит информацию о высоте, длине и направлении волны. Для работы с этими структурами и другими параметрами класса World были реализованы следующие функции: get_Depth(), set_Depth(), depthInPoint( int x, int y) – работа с глубиной. функции вида setIce, setWind, setCurrent и т.п – управление погодными условиями. Класс Model содержит набор функций для управления моделью в сцене и наблюдения за её основными параметрами. В отличие от приложения Scene, где панели свойств и настроек модели привязаны к самой модели и её устройствам, класс Model предоставляет унифицированный интерфейс, позволяющий с помощью одних и тех же функций взаимодействовать с различными моделями. Если в тестируемой модели отсутствует необходимый прибор или параметр, тест выдаст исключение и продолжит работу. Функции класса Model для управления моделью: startEngine, stopEngine – управление двигателями. setRudderOrder – перекладка руля. setAutopilotOn, setAutopilotCourse – включение автопилота и установка курса функции управления многими другими устройствами. reset – восстановление начальных настроек модели. Эта функция используется при запуске нового теста.Параметры модели, за которыми может вестить наблюдение, реализованы в виде свойств класса Model: Ta, Tf – осадки кормой и носом. X, Y, Z – координаты. L_wl, L_bp, Loa – различные значения длины. И многие другие параметры.^ Параметризация тестов Система параметризации тестов была введена в первую очередь для того, чтобы предоставить пользователям возможность запускать автоматизированные тесты с различными настройками. Параметризованный класс Param представляет собой оболочку для хранения значения параметра. Основные члены этого класса реализованы в виде свойств: name – название параметра. value – значение параметра. Имеет тип T. valueName – текстовое название для заданного значения. Например, для параметра с именем «Water Depth» и значением «1000» текстовым названием значения может быть «Deep Water». Для обработки параметров был реализован класс ParamHolder. Основные функции класса: add – перегруженная функция для добавления параметров различных типов. findParam(string name) – поиск параметра по имени get(string name) – получение значения параметра по его имени. Функция выдает исключение в случае отсутствия искомого параметра. getParam(string name) – получение параметра по его имени. Функция выдает исключение в случае отсутствия искомого параметра или несоответствия типов. getDblByName(string name) – получение значения параметра, преобразованного к типу double. Добавление параметров осуществляется в автотесте. Редактирование параметров может производить пользователь перед запуском теста.^ Обработка ошибок Информация о возможных ошибках и реакции на них хранится в специальных классах, наследниках класса KnowledgeSource. Основные члены класса Knowledge Source: Свойства cause и solution (по умолчанию «unknown»). Виртуальный метод analyze, реализуемый в классах-наследниках. Структура класса с информацией (наследника класса KnowledgeSource): В конструкторе класса задаётся текст ошибки и совет по устранению: cause = “Timeout during the test because of unstable dVx/dt”; solution = “Increase stability of model”; В методе analyze описываются условия возникновения ошибки. Метод возвращает 0 в случае отсутствия ошибки или число от 0 до 1, обозначающее приоритет ошибки в случае её возникновения. Для отслеживания и обработки ошибок, происходящих во время исполнения теста, реализован класс ScriptErrorAnalyzer. Этот класс работает со встроенной в VSY системой обработки ошибок. Эта система предоставляет возможности для вывода ошибок и возможных решений в виде таблицы, а также сохранения этой таблицы в виде html. Класс ScriptErrorAnlyzer содержит два основных метода – analyze и report. В метод Report вынесена вся работа с системой обработки ошибок VSY (добавление предупреждения об ошибке в таблицу, вывод сообщения об ошибке). Метод analyze ссылается на метод с аналогичным названием класса KnowledgeSourceManager. В этот класс вынесена логика системы обработки ошибок Autotester’а. Метод analyze класса KnowledgeSourceManager устанавливает порядок обработки ошибок в соответствие с их приоритетом.^ Обработка результатов Обработкой, хранением и выводом результатов тестирования занимается класс Results. Вся информация о значениях наблюдаемых параметров хранится в массиве tables[] в виде таблиц. Экземпляр этого класса привязывается к одному конкретному тесту, имя которого хранится в параметре testName. Основные методы класса Results: createTable – добавление новой таблицы к результатам. createGraph – добавление графика к результатам. generateHtml – генерация полного Html-отчёта на основе текущих данных, хранящихся в массиве tables[]. Метод поочерёдно для каждой таблицы вызывает метод generateHtml и объединяет результаты. compare – сравнение сгенерированного отчёта с аналогичным документом. Функция может работать только после выполнения функции generateHtml, если ранее отчёт не был сгенерирован, выдаётся исключение. Более подробно функция описана ниже. Результаты тестирования выводятся в html-отчёт в виде графиков или таблиц. Для этого в системе Autotester реализованы классы Table и Graph. График на самом деле также представляет собой таблицу, соответственно, класс Graph является наследником класса Table. Способ хранения информации в классах одинаков, различается только способ вывода (метод generateHtml). Общие члены классов: columns[] – таблица хранится в системе в виде набора столбцов. Подробнее описание структуры столбца будет рассмотрено ниже. addColumn – добавление столбца. generateHtml – генерация html-представления таблицы. Для класса Graph этот метод генерирует изображение графика и код для его вставки в html-документ. Класс Column представляет собой оболочку для работы со столбцом таблицы. Конструктор этого класса является перегруженным методом, что позволяет добавлять столбцы различной природы. В общем случае, при создании столбца задаётся его имя, тип и источник данных. Типы столбцов (showType) могут быть различными: Normal Depth NonDimYesNoOnOffОт типа столбца зависит его внешний вид в html-отчёте.Источником данных может быть параметр теста, свойство модели или мира. На каждом шаге сцены (т.е. при вызове метода Scene.doStep) в каждый столбец добавляется значение соответствующего источника данных на этом шаге – таким образом у таблицы появляется новая строка.Также обязательной частью вывода результатов каждого теста является таблица начальных условий и таблица параметров модели. Вывод этих таблиц в отчёт реализован в классе BaseTest. На Рис.8 приведён пример отчёта, результатами которого является таблица (Draft on Stop) и график. Как видно на рисунке, класс Graph предоставляет возможность выводить несколько графиков в одном для сравнения.^ Рис. 8 Пример отчётаКак говорилось выше, в системе Autotester предоставляется возможность сравнительного тестирования. Сравнивать результаты тестов можно как с другими уже построенными документами (например, с приложенным к модели буклетом – результатом работы всех тестов), так и с результатами тестирования другой модели. Непосредственное сравнение html-отчётов для одного теста производится в методе compare класса Results. Результаты сравнения выводятся в html-отчёте, аналогичном отчёту с результатами. В новом документе параметры, по которым проводилось сравнение, помечены зелёным. При наведении на них мышью выводится абсолютное и относительное значение разницы между сравниваемыми данными (Рис. 9).Рис. 9 Результат сравнительного тестирования в отчёте^ Структура автоматизированного теста Разработка тестов на языке C# позволила ввести в использование объектно-ориентированные тесты, что открыло ряд новых возможностей для их создания. Каждый тест является наследником класса BaseTest. Основные параметры класса BaseTest: progress – свойство класса для расчёта прогресса выполнения теста. В методе set этого свойства производится проверка корректности устанавливаемого значения (выход за границы 0..100, монотонное увеличение прогресса). defParams – экземпляр класса ParamHolder для хранения параметров теста.