Тестирование на основе моделей

Тестирование на основе моделей — это применение проектирования на основе моделей для проектирования и, при необходимости, также выполнения артефактов для тестирования программного обеспечения или системы . Модели можно использовать для представления желаемого поведения тестируемой системы (SUT) или для представления стратегий тестирования и тестовой среды. На рисунке справа изображен первый подход.
Модель, описывающая ТРИ, обычно представляет собой абстрактное, частичное представление желаемого поведения ТРИ.Тестовые примеры, полученные на основе такой модели, представляют собой функциональные тесты на том же уровне абстракции, что и модель.Эти тестовые примеры называются абстрактным набором тестов .Набор абстрактных тестов не может быть напрямую выполнен для SUT, поскольку этот набор находится на неправильном уровне абстракции. Исполняемый набор тестов должен быть получен из соответствующего абстрактного набора тестов.Исполняемый набор тестов может напрямую взаимодействовать с тестируемой системой.Это достигается путем сопоставления абстрактных тестовых случаев с конкретные тестовые примеры, подходящие для выполнения. В некоторых средах тестирования на основе моделей модели содержат достаточно информации для непосредственного создания исполняемых наборов тестов.В других случаях элементы абстрактного набора тестов должны быть сопоставлены с конкретными операторами или вызовами методов в программном обеспечении для создания конкретного набора тестов . Это называется решением «проблемы отображения». [1] В случае онлайн-тестирования (см. ниже) абстрактные наборы тестов существуют только концептуально, а не как явные артефакты.
Тесты могут быть получены из моделей разными способами. Поскольку тестирование обычно является экспериментальным и основано на эвристике,не существует единственного наилучшего подхода к построению тестов.Обычно все параметры, связанные с выводом тестов, объединяются впакет, который часто называют «требованиями к тестированию», «целью тестирования» или даже «вариантами использования».Этот пакет может содержать информацию о тех частях модели, на которых следует сосредоточить внимание, или об условиях завершения тестирования (критерии остановки тестирования).
Поскольку наборы тестов создаются на основе моделей, а не исходного кода, тестирование на основе моделей обычно рассматривается как одна из форм тестирования «черного ящика» .
Тестирование на основе моделей для сложных программных систем все еще является развивающейся областью.
Модели [ править ]
Особенно в модели-ориентированном проектировании Object Management Group ( OMG ) или в модели-управляемой архитектуре модели создаются до или параллельно с соответствующими системами. Модели также могут быть построены на основе готовых систем. Типичные языки моделирования для генерации тестов включают UML , SysML , основные языки программирования, нотации конечных машин и математические формализмы, такие как Z , B ( Event-B ), Alloy или Coq .
Развертывание тестирования на основе моделей [ править ]

Существуют различные известные способы развертывания тестирования на основе моделей, которые включают онлайн-тестирование , автономную генерацию исполняемых тестов и автономную генерацию тестов, развертываемых вручную . [2]
Онлайн-тестирование означает, что инструмент тестирования на основе моделей подключается непосредственно к тестируемому устройству и тестирует его динамически.
Автономная генерация исполняемых тестов означает, что инструмент тестирования на основе моделей создает тестовые примеры как компьютерочитаемые ресурсы, которые впоследствии можно запускать автоматически; например, коллекция классов Python , воплощающая сгенерированную логику тестирования.
Автономное создание тестов, развертываемых вручную, означает, что инструмент тестирования на основе моделей генерирует тестовые примеры как удобочитаемые ресурсы, которые впоследствии могут помочь в ручном тестировании; например, PDF-документ на человеческом языке, описывающий сгенерированные этапы тестирования.
Алгоритмическое создание тестов [ править ]
Эффективность тестирования на основе моделей обусловлена прежде всего возможностями автоматизации, которые оно предлагает. Если модель машиночитаема и формальна в той степени, в которой она имеет четко определенную поведенческую интерпретацию, тестовые примеры в принципе могут быть получены механически.
Из конечных автоматов [ править ]
Часто модель переводится или интерпретируется как конечный автомат или система перехода состояний . Этот автомат представляет возможные конфигурации тестируемой системы. Чтобы найти тестовые примеры, автомат ищет пути к исполняемым файлам. Возможный путь выполнения может служить тестовым примером. Этот метод работает, если модель детерминированная или может быть преобразована в детерминированную. Ценные неноминальные тестовые примеры могут быть получены путем использования неуказанных переходов в этих моделях.
В зависимости от сложности тестируемой системы и соответствующей модели количество путей может быть очень большим из-за огромного количества возможных конфигураций системы. Чтобы найти тестовые примеры, которые могут охватывать подходящее, но конечное число путей, необходимы критерии тестирования, которые будут определять выбор. Этот метод был впервые предложен Оффуттом и Абдуразиком в статье, положившей начало тестированию на основе моделей. [3] Было разработано множество методов создания тестовых примеров, которые исследуются Рашби. [4] Критерии тестирования описаны в виде общих графиков в учебнике по тестированию. [1]
Доказательство теоремы [ править ]
Доказательство теорем изначально использовалось для автоматического доказательства логических формул. В подходах к тестированию на основе моделей система моделируется набором предикатов , определяющих поведение системы. [5] Для получения тестовых примеров модель разбивается на классы эквивалентности по допустимой интерпретации набора предикатов, описывающих тестируемую систему. Каждый класс описывает определенное поведение системы и, следовательно, может служить тестовым примером. Простейшим разделением является подход дизъюнктивной нормальной формы, при котором логические выражения, описывающие поведение системы, преобразуются в дизъюнктивную нормальную форму .
Программирование логики ограничений и выполнение символьное
Программирование с ограничениями можно использовать для выбора тестовых примеров, удовлетворяющих определенным ограничениям, путем решения набора ограничений для набора переменных. Система описывается посредством ограничений. [6] Решение набора ограничений может быть выполнено с помощью логических решателей (например, SAT-решателей, основанных на булевой проблеме выполнимости ) или с помощью численного анализа , такого как исключение Гаусса . Решение, найденное путем решения набора формул ограничений, может служить тестом для соответствующей системы.
Программирование с ограничениями можно комбинировать с символьным выполнением. В этом подходе модель системы выполняется символически, т.е. сбор данных об ограничениях по различным путям управления, а затем использование метода программирования ограничений для решения ограничений и создания тестовых примеров. [7]
Проверка модели [ править ]
Средства проверки моделей также можно использовать для создания тестовых примеров. [8] Первоначально проверка модели была разработана как метод проверки допустимости свойства спецификации в модели. При использовании для тестирования в средство проверки модели передаются модель тестируемой системы и тестируемое свойство. В рамках процедуры доказательства, если это свойство действительно в модели, средство проверки модели обнаруживает свидетелей и контрпримеры. Свидетель — это путь, где свойство удовлетворяется, тогда как контрпример — это путь выполнения модели, где свойство нарушается. Эти пути снова можно использовать в качестве тестовых примеров.
модели цепи тестовой Генерация тестовых примеров с использованием Маркова
Цепи Маркова — эффективный способ проведения тестирования на основе моделей. Тестовые модели, реализованные с помощью цепей Маркова, можно понимать как модель использования: она называется тестированием на основе использования/статистической модели. Модели использования, то есть цепи Маркова, в основном состоят из двух артефактов: конечного автомата (FSM), который представляет все возможные сценарии использования тестируемой системы, и операционных профилей (OP), которые позволяют FSM представлять, как система работает или будет работать. использоваться статистически. Первый (FSM) помогает узнать, что может быть или было протестировано, а второй (OP) помогает получить оперативные тестовые примеры.Тестирование на основе использования/статистической модели начинается с фактов, что невозможно полностью протестировать систему и что вероятность возникновения сбоев может быть очень низкой. [9] Этот подход предлагает прагматичный способ статического построения тестовых примеров, направленных на повышение надежности тестируемой системы. Тестирование на основе статистических моделей использования недавно было расширено и теперь применимо ко встраиваемым программным системам. [10] [11]
См. также [ править ]
- Язык, специфичный для предметной области
- Специализированное моделирование
- Модельно-ориентированная архитектура
- Модельно-ориентированное проектирование
- Объектно-ориентированный анализ и проектирование
- Тестирование временного разделения
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б Пол Амманн и Джефф Оффатт. Введение в тестирование программного обеспечения, 2-е издание. Издательство Кембриджского университета, 2016.
- ^ Практическое тестирование на основе моделей: инструментальный подход. Архивировано 25 августа 2012 г. в Wayback Machine , Марк Уттинг и Бруно Легард, ISBN 978-0-12-372501-1 , Морган-Кауфманн, 2007 г.
- ^ Джефф Оффатт и Айнур Абдуразик. Генерация тестов на основе спецификаций UML. Вторая международная конференция по унифицированному языку моделирования (UML '99), страницы 416–429, Форт-Коллинз, Колорадо, октябрь 1999 г.
- ^ Джон Рашби. Автоматизированное создание тестов и проверенное программное обеспечение. Проверенное программное обеспечение: теории, инструменты, эксперименты: Первая конференция IFIP TC 2/WG 2.3, VSTTE 2005, Цюрих, Швейцария, 10–13 октября. стр. 161-172, Springer-Verlag.
- ^ Брукер, Ахим Д.; Вольф, Буркхарт (2012). «О тестировании с помощью средства доказательства теорем» . Формальные аспекты вычислений . 25 (5): 683–721. CiteSeerX 10.1.1.208.3135 . дои : 10.1007/s00165-012-0222-y . S2CID 5774837 .
- ^ Джефферсон Оффатт. Автоматическая генерация тестовых данных на основе ограничений. Транзакции IEEE по разработке программного обеспечения, 17: 900-910, 1991.
- ^ Антти Уима. Внедрение Conformiq Qtronic. Тестирование программного обеспечения и коммуникационных систем,Конспекты лекций по информатике, 2007 г., том 4581/2007, 1–12, DOI: 10.1007/978-3-540-73066-8_1
- ^ Гордон Фрейзер, Франц Вотава и Пол Э. Амманн. Тестирование с помощью средств проверки моделей: опрос. Тестирование программного обеспечения, проверка и надежность, 19(3):215–261, 2009 г. URL: [1]
- ^ Элен Ле Гуэн. Проверка программного обеспечения путем статистического тестирования удобства использования: от моделирования решения до поставки, 2005 г. URL: ftp://ftp.irisa.fr/techreports/theses/2005/leguen.pdf.
- ^ Бёр, Франк (2011). «Статистическое тестирование встроенных систем на основе моделей». 2011 Четвертая международная конференция IEEE по тестированию, верификации и валидации программного обеспечения . стр. 18–25. дои : 10.1109/ICSTW.2011.11 . ISBN 978-1-4577-0019-4 . S2CID 9582606 .
- ^ Бёр, Франк (2012). Статистическое тестирование встроенного программного обеспечения реального времени на основе моделей с непрерывными и дискретными сигналами в параллельной среде: подход Usage Net . Верлаг Доктор Хат. ISBN 978-3843903486 .
Дальнейшее чтение [ править ]
- Профиль тестирования OMG UML 2; [2]
- Брингманн, Э.; Кремер, А. (2008). «Международная конференция по тестированию, верификации и валидации программного обеспечения 2008 г.». 2008 Международная конференция по тестированию, верификации и валидации программного обеспечения . Международная конференция по тестированию, верификации и валидации программного обеспечения (ICST). стр. 485–493. CiteSeerX 10.1.1.729.8107 . дои : 10.1109/ICST.2008.45 . ISBN 978-0-7695-3127-4 .
- Практическое тестирование на основе моделей: инструментальный подход , Марк Уттинг и Бруно Легард, ISBN 978-0-12-372501-1 , Морган-Кауфманн, 2007 г.
- Модельно-ориентированное тестирование и анализ программного обеспечения с использованием C# , Джонатан Джеки, Маргус Винс, Колин Кэмпбелл и Вольфрам Шульте, ISBN 978-0-521-68761-4 , издательство Кембриджского университета, 2008 г.
- Серия расширенных лекций по модельному тестированию реактивных систем , LNCS 3472, Springer-Verlag, 2005. ISBN 978-3-540-26278-7 .
- Хун Чжу; и др. (2008). АСТ '08: Материалы 3-го международного семинара по автоматизации тестирования программного обеспечения . АКМ Пресс. ISBN 978-1-60558-030-2 .
- Сантос-Нето, П.; Ресенде, Р.; Падуя, К. (2007). «Материалы симпозиума ACM по прикладным вычислениям 2007 г. - SAC '07». Материалы симпозиума ACM по прикладным вычислениям 2007 г. - SAC '07 . Симпозиум по прикладным вычислениям . стр. 1409–1415. дои : 10.1145/1244002.1244306 . ISBN 978-1-59593-480-2 .
- Руденрийс, Э. (весна 2010 г.). «Тестирование на основе моделей повышает ценность» . Методы и инструменты . 18 (1): 33–39. ISSN 1661-402X .
- Систематический обзор поддержки инструментов тестирования на основе моделей , Мухаммад Шафик, Иван Лабиш, Карлтонский университет, технический отчет, май 2010 г.
- Зандер, Юстина; Шифердекер, Ина; Мостерман, Питер Дж. , ред. (2011). Модельно-ориентированное тестирование встраиваемых систем . Вычислительный анализ, синтез и проектирование динамических систем. Том. 13. Бока-Ратон: CRC Press . ISBN 978-1-4398-1845-9 .
- Опрос пользователей модельного тестирования 2011–2012 гг.: результаты и анализ. Роберт В. Биндер. System Verification Associates, февраль 2012 г.