Динамическое создание EFSM для MBT
В этом примере я пытаюсь смоделировать сложность модели экспоненциально с каждым шагом в FSM. Однако правила того, как растет FSM, легко описать в коде, но невозможно смоделировать вручную. Что делает модель трудной для создания вручную, так это большое количество переходов, которые возможны от каждого узла в ходе работы FSM. Количество штатов не так много, но количество переходов огромно!
Я пытался использовать ModelJUnit, но насколько я понимаю, этот инструмент поддерживает только полностью предопределенные модели.
Поэтому у меня вопрос: есть ли какие-либо инструменты для тестирования на основе моделей, которые поддерживают динамическое создание FSM для тестируемой системы, как описано выше?
1 ответ
Ваша проблема очень типичная. Примером может служить контроллер / программное обеспечение, которое определяет положение переключателя в транспортном средстве - положение P R N D необходимо определять по электрическим переходам рычага. Если принять во внимание перепрыгивание через переходы и электрические неисправности, вы получите большое / бесконечное пространство. Этот вид программного обеспечения имеет максимально возможный уровень безопасности, поскольку он может вызвать непреднамеренный крутящий момент.
Такие инструменты, как ModelJUnit, NUnit и т. Д. Полезны для образовательных / инструментальных целей разработки. Вы можете изучить код, отредактировать его и реализовать свои собственные экспериментальные алгоритмы.
С другой стороны, без изменений они не могут справиться с упомянутой вами проблемой: пространство состояний / взрыв перехода и т. Д. Вот почему профессиональные инструменты используют очень сложные методы для обработки больших / бесконечных пространств:
- полное символическое исследование
- решатели ограничений
- нарезка
Они часто могут давать результаты, такие как покрытие требований, mc / dc даже на бесконечных моделях, потому что алгоритмам не нужно расширять все пространство во время исследования. Примеры инструментов, которые вы можете найти:
- Conformiq
- Spec Explorer