Тестирование на основе моделей - это приложение, основанное на моделировании, для проектирования и, при необходимости, выполнения артефактов для выполнения тестирования программного обеспечения или тестирования системы . Модели могут использоваться для представления желаемого поведения тестируемой системы (SUT) или для представления стратегий тестирования и тестовой среды. На картинке справа изображен первый подход.
Модель, описывающая SUT, обычно является абстрактным частичным представлением желаемого поведения SUT. Тестовые примеры, полученные из такой модели, являются функциональными тестами на том же уровне абстракции, что и модель. Эти тестовые примеры известны как абстрактный набор тестов . Набор абстрактных тестов не может быть выполнен напрямую для SUT, потому что набор находится на неправильном уровне абстракции. Исполняемый тестовый набордолжен быть получен из соответствующего набора абстрактных тестов. Исполняемый набор тестов может напрямую связываться с тестируемой системой. Это достигается путем сопоставления абстрактных тестовых примеров с конкретными тестовыми примерами, подходящими для выполнения. В некоторых средах тестирования на основе моделей модели содержат достаточно информации для непосредственного создания исполняемых наборов тестов. В других случаях элементы абстрактного набора тестов должны быть сопоставлены с конкретными операторами или вызовами методов в программном обеспечении для создания конкретного набора тестов . Это называется решением «проблемы отображения». [1] В случае онлайн-тестирования (см. Ниже) абстрактные наборы тестов существуют только концептуально, но не как явные артефакты.
Тесты можно выводить из моделей по-разному. Поскольку тестирование обычно является экспериментальным и основано на эвристиках, не существует единого наилучшего подхода к получению тестов. Обычно все параметры, связанные с созданием тестов, объединяются в пакет, который часто называют «требованиями к тестированию», «целью тестирования» или даже «сценариями использования». Этот пакет может содержать информацию о тех частях модели, на которых следует сосредоточиться, или условиях завершения тестирования (критерии остановки теста).
Поскольку наборы тестов являются производными от моделей, а не из исходного кода, тестирование на основе моделей обычно рассматривается как одна из форм тестирования методом черного ящика .
Тестирование сложных программных систем на основе моделей все еще находится в стадии развития.
Модели
Модели строятся до или параллельно с соответствующими системами, особенно в проектировании, управляемом моделями, или в архитектуре , управляемой моделями Группы управления объектами ( OMG ) . Модели также могут быть построены из готовых систем. Типичные языки моделирования для генерации тестов включают UML , SysML , основные языки программирования, нотации конечных машин и математические формализмы, такие как Z , B ( Event-B ), Alloy или Coq .
Развертывание тестирования на основе моделей
Существуют различные известные способы развертывания тестирования на основе моделей, которые включают онлайн-тестирование , автономную генерацию исполняемых тестов и автономную генерацию тестов, развертываемых вручную . [2]
Онлайн-тестирование означает, что инструмент тестирования на основе моделей напрямую подключается к SUT и тестирует его динамически.
Автономное создание исполняемых тестов означает, что инструмент тестирования на основе моделей генерирует тестовые примеры в виде машиночитаемых ресурсов, которые впоследствии могут быть запущены автоматически; например, набор классов Python, который воплощает сгенерированную логику тестирования.
Автономное создание тестов, развертываемых вручную, означает, что инструмент тестирования на основе моделей генерирует тестовые примеры в виде удобочитаемых ресурсов, которые впоследствии могут помочь в ручном тестировании; например, документ PDF на человеческом языке, описывающий сгенерированные шаги теста.
Алгоритмическое получение тестов
Эффективность тестирования на основе моделей в первую очередь связана с возможностью автоматизации, которую оно предлагает. Если модель является машиночитаемой и формальной в той степени, в которой она имеет четко определенную поведенческую интерпретацию, тестовые примеры в принципе могут быть получены механически.
Из конечных автоматов
Часто модель переводится или интерпретируется как конечный автомат или система перехода состояний . Этот автомат представляет возможные конфигурации тестируемой системы. Чтобы найти тестовые примеры, автомат ищет исполняемые пути. Возможный путь выполнения может служить тестовым примером. Этот метод работает, если модель детерминирована или может быть преобразована в детерминированную. Ценные нестандартные тестовые примеры могут быть получены путем использования неопределенных переходов в этих моделях.
В зависимости от сложности тестируемой системы и соответствующей модели количество путей может быть очень большим из-за огромного количества возможных конфигураций системы. Чтобы найти тестовые примеры, которые могут охватывать подходящее, но конечное количество путей, необходимы критерии тестирования, которые будут определять выбор. Этот метод был впервые предложен Оффуттом и Абдуразиком в статье, в которой началось тестирование на основе моделей. [3] Было разработано несколько методов генерации тестовых примеров, которые были рассмотрены Рашби. [4] Критерии тестирования описаны в виде общих графиков в учебнике по тестированию. [1]
Доказательство теорем
Изначально доказательство теорем использовалось для автоматического доказательства логических формул. Для подходов к тестированию на основе моделей система моделируется набором предикатов , определяющих поведение системы. [5] Для получения тестовых примеров модель разбивается на классы эквивалентности в соответствии с действительной интерпретацией набора предикатов, описывающих тестируемую систему. Каждый класс описывает определенное поведение системы и, следовательно, может служить тестовым примером. Самое простое разделение - это подход с дизъюнктивной нормальной формой, при котором логические выражения, описывающие поведение системы, преобразуются в дизъюнктивную нормальную форму .
Программирование логики ограничений и символьное выполнение
Программирование с ограничениями может использоваться для выбора тестовых примеров, удовлетворяющих определенным ограничениям, путем решения набора ограничений по набору переменных. Система описывается с помощью ограничений. [6] Решение набора ограничений может быть выполнено с помощью логических решателей (например, SAT-решателей, основанных на проблеме булевой выполнимости ) или путем численного анализа , например, методом исключения Гаусса . Решение, найденное путем решения набора формул ограничений, может служить тестовым примером для соответствующей системы.
Программирование в ограничениях можно комбинировать с символьным исполнением. В этом подходе модель системы выполняется символически, то есть собирает ограничения данных по различным путям управления, а затем использует метод программирования ограничений для решения ограничений и создания тестовых примеров. [7]
Проверка модели
Средство проверки моделей также можно использовать для генерации тестовых примеров. [8] Первоначально проверка модели была разработана как метод проверки, допустимо ли свойство спецификации в модели. При использовании для тестирования проверяющей модели предоставляется модель тестируемой системы и свойство для тестирования. В рамках процедуры проверки, если это свойство действительно в модели, средство проверки модели обнаруживает свидетелей и контрпримеры. Свидетель - это путь, на котором свойство удовлетворяется, тогда как контрпример - это путь в исполнении модели, где свойство нарушается. Эти пути снова можно использовать в качестве тестовых примеров.
Генерация тестового примера с использованием тестовой модели цепи Маркова
Цепи Маркова - эффективный способ проведения тестирования на основе моделей. Тестовые модели, реализованные с помощью цепей Маркова, можно понимать как модель использования: она называется тестированием на основе использования / статистической модели. Модели использования, то есть цепи Маркова, в основном состоят из двух артефактов: конечного автомата (FSM), который представляет все возможные сценарии использования тестируемой системы, и рабочих профилей (OP), которые квалифицируют FSM для представления того, как система работает или будет использоваться статистически. Первый (FSM) помогает узнать, что может быть или было протестировано, а второй (OP) помогает получить операционные тестовые примеры. Тестирование на основе использования / статистической модели начинается с того факта, что невозможно полностью протестировать систему и что сбои могут возникать с очень низкой частотой. [9] Этот подход предлагает прагматический способ статического получения тестовых примеров, которые направлены на повышение надежности тестируемой системы. Тестирование на основе использования / статистической модели недавно было расширено для применения во встроенных программных системах. [10] [11]
Смотрите также
- Доменно-ориентированный язык (DSL)
- Доменно-ориентированное моделирование (DSM)
- Модельно-управляемая архитектура (MDA)
- Модельно-ориентированная инженерия (MDE)
- Объектно-ориентированный анализ и дизайн (OOAD)
- Тестирование временных разделов (TPT)
Рекомендации
- ^ а б Пол Амманн и Джефф Оффатт. Введение в тестирование программного обеспечения. Издательство Кембриджского университета, 2008.
- ^ Тестирование Практическая Model-Based: A Инструменты Подход в архив 2012-08-25 на Wayback Machine , Марк Utting и Бруно LEGEARD, ISBN 978-0-12-372501-1 , Морган-Kaufmann 2007
- ^ Джефф Оффатт и Айнур Абдуразик. Создание тестов из спецификаций UML. Вторая международная конференция по унифицированному языку моделирования (UML '99), страницы 416-429, Форт-Коллинз, Колорадо, октябрь 1999 г.
- ^ Джон Рашби. Автоматизированное создание тестов и проверенное программное обеспечение. Проверенное программное обеспечение: теории, инструменты, эксперименты: первая конференция IFIP TC 2 / WG 2.3, VSTTE 2005, Цюрих, Швейцария, 10–13 октября. стр. 161-172, Springer-Verlag
- ^ Brucker, Achim D .; Вольф, Буркхарт (2012). «О проверке, основанной на программе доказательства теорем» . Формальные аспекты вычислений . 25 (5): 683–721. CiteSeerX 10.1.1.208.3135 . DOI : 10.1007 / s00165-012-0222-у .
- ^ Джефферсон Оффатт. Автоматическое создание тестовых данных на основе ограничений. IEEE Transactions по разработке программного обеспечения, 17: 900-910, 1991
- ^ Antti Huima. Внедрение Conformiq Qtronic. Тестирование программного обеспечения и коммуникационных систем, Конспект лекций по информатике, 2007 г., том 4581/2007, 1-12, DOI: 10.1007 / 978-3-540-73066-8_1
- ↑ Гордон Фрейзер, Франц Вотава и Пол Э. Амманн. Тестирование модельными шашками: опрос. Тестирование, проверка и надежность программного обеспечения, 19 (3): 215–261, 2009. URL: [1]
- ↑ Элен Ле Гуен. Validation d'un logiciel par le test statistique d'usage: de la modelisation de la solution à la livraison, 2005. URL: ftp://ftp.irisa.fr/techreports/theses/2005/leguen.pdf
- ^ Бёр, Франк (2011). «Статистическое тестирование встроенных систем на основе моделей». 2011 Четвертая международная конференция IEEE по тестированию, проверке и валидации программного обеспечения. Семинары . С. 18–25. DOI : 10.1109 / ICSTW.2011.11 . ISBN 978-1-4577-0019-4.
- ^ https://www.amazon.de/Model-Based-Statistical-Continuous-Concurrent-Environment/dp/3843903484/ref=sr_1_1?ie=UTF8&qid=1334231267&sr=8-1
дальнейшее чтение
- Профиль тестирования OMG UML 2; [2]
- Bringmann, E .; Кремер А. (2008). «Тестирование автомобильных систем на основе моделей» (PDF) . 2008 Международная конференция по тестированию, проверке и валидации программного обеспечения . Международная конференция по тестированию, верификации и валидации программного обеспечения (ICST). С. 485–493. DOI : 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 , Cambridge University Press, 2008.
- Модельно-ориентированное тестирование реактивных систем Расширенная серия лекций, LNCS 3472, Springer-Verlag, 2005. ISBN 978-3-540-26278-7 .
- Хун Чжу; и другие. (2008). AST '08: Материалы 3-го Международного семинара по автоматизации тестирования программного обеспечения . ACM Press. ISBN 978-1-60558-030-2.
- Сантос-Нето, П .; Resende, R .; Падуа, К. (2007). «Требования к тестированию информационных систем на основе моделей». Материалы симпозиума ACM 2007 по прикладным вычислениям - SAC '07 . Симпозиум по прикладным вычислениям . С. 1409–1415. DOI : 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 г.