Что такое тестирование на основе моделей?
⚡ Умное резюме
Модельно-ориентированное тестирование проверяет поведение программного обеспечения во время выполнения на соответствие прогнозам, сделанным абсолютным образом.tract-модель системы, генерирующая тестовые примеры автоматически на основе конечных автоматов, диаграмм состояний или обозначений UML, а не вручную.
Что такое тестирование на основе моделей?
Тестирование на основе модели Тестирование программного обеспечения — это метод, при котором поведение тестируемого программного обеспечения во время выполнения проверяется на соответствие прогнозам, сделанным моделью. Модель представляет собой описание поведения системы, выраженное в терминах входных последовательностей, действий, условий, выходных данных и потока данных от входа к выходу. Пригодная для использования модель должна быть практически понятной, многократно используемой и доступной для совместного использования, а также должна точно описывать тестируемую систему.
Существует множество доступных моделей, и каждая из них описывает различные аспекты поведения системы. Типичные примеры:
- Поток данных
- Контроль потока
- Графы зависимостей
- Таблицы решений
- Машины перехода состояний
Тестирование на основе модели описывает, как система ведет себя в ответ на действие, определяемое моделью. Задайте действие, затем проверьте, реагирует ли система так, как предсказывает модель. Любое расхождение между ними является либо дефектом программного обеспечения, либо ошибкой в модели, и оба варианта стоит обнаружить.
Это облегченный формальный метод проверки системы, который одинаково хорошо применим как к тестированию аппаратного обеспечения, так и к тестированию программного обеспечения. Поскольку тесты основаны на спецификации поведения, а не на коде, этот метод подходит для... тестирование черного ящика семья методы тестирования программного обеспечения.
Пример тестирования на основе модели
Простейший способ понять поведенческую модель — это проследить её развитие. Приведённая ниже диаграмма моделирует небольшую задачу редактирования текста, где каждый прямоугольник представляет собой состояние, в котором может находиться приложение, а каждая стрелка — действие, которое может совершить пользователь.
Модель описывает упрощенный подход к написанию стихов в Блокноте и возможные действия, связанные с каждым шагом. Для каждого действия, такого как запуск приложения, ввод стихотворения или сохранение файла, выполняется следующее: прецедент Можно сгенерировать данные и проверить результат. Прохождение по той же диаграмме по другому пути, например, начало и завершение без сохранения, позволяет получить другой тестовый пример без дополнительных затрат на проектирование, что и является экономическим аргументом в пользу всей этой методики.
Типы ОБТ
Существует два типа фреймворков для тестирования на основе моделей, и разница между ними заключается лишь в том, когда создаются шаги тестирования:
- Офлайн / априори: Генерация наборов тестов перед их выполнением. Набор тестов — это совокупность тестовых случаев, и в этом режиме набор сохраняется, проверяется и повторно запускается, как и любой другой. автоматизация тестирования актива.
- Онлайн / на ходу: Генерация наборов тестов в процессе выполнения тестов, при этом следующий шаг выбирается на основе того, как система фактически отреагировала на предыдущий.
Генерация в автономном режиме подходит для регулируемых сред, требующих проверяемого и воспроизводимого набора тестов. Генерация в режиме реального времени подходит для длительных исследовательских сессий с системами, сохраняющими состояние, поскольку генератор может реагировать на реальный ответ, а не на прогнозируемый.
Как работает тестирование на основе моделей
Независимо от используемой структуры, метод состоит из пяти этапов. На каждом этапе создается артефакт, который затем используется на следующем этапе, поэтому команда занимается поддержкой именно модели, а не тестового сценария.
- Шаг 1: Создайте модель. Переведите требования или спецификацию в абстракционный формат.tract-модель ожидаемого поведения, определяющая состояния, переходы между ними и входные данные, запускающие каждый переход.
- Шаг 2: Выберите критерии отбора тестов. Критерии указывают генератору, когда следует остановиться. К распространенным относятся покрытие всех состояний, при котором каждое состояние посещается как минимум один раз; покрытие всех переходов, при котором каждая стрелка выполняется как минимум один раз; и покрытие путей или потоков данных для более глубокого исследования.
- Шаг 3: Напрягите мышцы прессаtract-тестовые случаи. Инструмент перемещается по модели и генерирует последовательности абсолютных значений.tract шагов, удовлетворяющих выбранным критериям, вместе с ожидаемым результатом на каждом шаге.
- Шаг 4: Концентрируйте мышцы пресса.tract-тесты. Адаптерный слой отображает каждый абс.tracчтобы перейти к реальному действию против системы, например, взаимодействию с пользовательским интерфейсом, API Звонок или сообщение протокола. Эта карта.ping Этот код написан один раз и используется повторно каждым сгенерированным тестом.
- Шаг 5: Исполнение и вынесение вердиктов. В ходе конкретных испытаний, проводимых на тестируемой системе, каждый наблюдаемый отклик сравнивается с предсказанием модели, и регистрируется результат «пройдено» или «не пройдено». tracвернуться к элементу модели, который его создал.
tracУдобство, созданное на шаге 5, является практической выгодой. Когда требование меняется, модель меняется, и затронутые тесты генерируются заново, а не переписываются, поэтому команды часто используют именно такой подход. регрессионное тестирование Наибольшую выгоду можно получить при стабильной спецификации.
Различные модели в тестировании
Для понимания MBT необходимо разобраться в некоторых из моделей, описанных ниже. Каждая из них предполагает компромисс между выразительной способностью и затраченными усилиями, поэтому выбор зависит от того, насколько сложным на самом деле является проверяемое поведение.
Конечные автоматы
Эта модель помогает тестировщикам оценивать результат в зависимости от выбранных входных данных. Различные комбинации входных данных могут привести к соответствующему состоянию системы.
Система будет иметь определенное состояние и текущее состояние, которые определяются набором входных данных, предоставленных тестировщиками.
Рассмотрим пример ниже. Система позволяет сотрудникам входить в приложение. Текущее состояние сотрудника — «Выход», и оно меняется на «Вход» после того, как сотрудник войдет в систему. В состоянии «Вход» сотрудник может просматривать, распечатывать и сканировать документы в системе.
Здесь показана схема конечного автомата для данного примера, причем каждая стрелка обозначена входным сигналом, вызывающим переход.
Графики штатов
Диаграмма состояний — это расширение конечного автомата, которое может использоваться для сложных систем реального времени. Диаграммы состояний описывают различные варианты поведения системы, имеют определенное количество состояний, а поведение системы анализируется и представляется в виде событий для каждого состояния. На практике важным расширением является иерархия: диаграмма состояний допускает вложенные и параллельные состояния, поэтому автомат, которому потребовались бы десятки плоских состояний, может быть компактно изображен.
Например, в инструменте управления дефектами дефекты регистрируются со статусом «Новый». После того, как дефект исправлен разработчиками, статус необходимо изменить на «Исправлен». Если дефект не исправлен, статус меняется на «Повторно открыт». Диаграммы состояний должны быть спроектированы таким образом, чтобы для каждого состояния вызывалось событие.
Жизненный цикл дефекта показан ниже, при этом каждый статус представлен как состояние, а каждое действие рабочего процесса — как событие, перемещающее дефект между ними.
Унифицированный язык моделирования (UML)
Унифицированный язык моделирования (UML) UML — это стандартизированный язык моделирования общего назначения. Он включает в себя набор графических методов, используемых для создания визуальных моделей, способных описывать очень сложное поведение системы.
В UML есть такие обозначения, как:
- Действия
- Актеры
- Бизнес-процесс
- Компоненты
- Язык программирования
Диаграммы активности и конечных автоматов — это те, которые генераторы тестов читают чаще всего, как показывает приведенная ниже примерная UML-модель.
Инструменты тестирования на основе моделей
Модель на бумаге сама по себе ничего не генерирует. Для обхода модели и генерации тестовых траекторий необходим генератор, а рынок инструментов разделяется на генераторы с открытым исходным кодом и коммерческие платформы для проектирования тестов.
- GraphWalker — Инструмент с открытым исходным кодом, который считывает модели, имеющие форму ориентированных графов, и генерирует на их основе тестовые пути с выбираемыми генераторами и условиями остановки.
- fMBT — набор инструментов тестирования на основе моделей с открытым исходным кодом от Intel, который поддерживает генерацию и выполнение тестов для моделей состояний.
- Конформик — коммерческий продукт для автоматизированного проектирования тестов, который генерирует тестовые примеры и сценарии на основе графических поведенческих моделей.
- MaTeLo и MBTsuite — коммерческие платформы, ориентированные на статистические модели использования и на интеграцию тестов в существующие системы автоматизации.
- Spec Explorer - MicrosoftРасширение для тестирования на основе моделей, разработанное компанией [название компании], предназначено для Visual Studio и широко цитируется в литературе по протокольному тестированию.
Выбор зависит не столько от списков функций, сколько от двух вопросов: какую нотацию команда действительно может использовать и может ли инструмент генерировать тесты для уже используемой системы автоматизации. Генератор, создающий наборы тестов, которые никто не может выполнить, добавляет шаг к процессу, а не удаляет его.
Тестирование на основе моделей против традиционного проектирования тестов.
Стоит отметить различие между разработкой тестов и тестированием, проводимым вручную, поскольку оба подхода имеют недостатки в разных областях, а не являются просто лучшими.
| Аспект | Тестирование на основе модели | Традиционный подход к проектированию тестов |
|---|---|---|
| Источник тестовых примеров | Сгенерировано автоматически на основе поведенческой модели. | Разработано индивидуально тестировщиком на основе требований. |
| Влияние изменения требований | Обновите модель, перегенерируйте затронутые тесты. | Найдите и отредактируйте вручную каждый затронутый тестовый случай. |
| Покрытие | Оценка проводилась по критериям модели, таким как охват всех состояний или всех переходов. | Оценка производится в соответствии с требованиями и зависит от суждения тестировщика. |
| Первоначальная стоимость | Высокий уровень: навыки моделирования, настройка инструментов и слой-адаптер. | Низкий уровень: тестировщик может начать писать немедленно. |
| Лучший вариант посадки | Системы с сохранением состояния и длительным сроком службы, обладающие стабильными характеристиками. | Краткосрочные проекты, разовые проекты и исследовательская работа. |
| Основной режим отказа | Неправильная или устаревшая модель незаметно генерирует неправильные тесты. | В большом наборе данных накапливаются пробелы и дубликаты. |
Приведенная ниже эволюция позволяет рассматривать эту технику в контексте: ручное выполнение тестов уступило место автоматизированному, а подходы, основанные на моделях, переносят автоматизацию на один уровень раньше, в само проектирование тестов.
Проблемы модельного тестирования
Внедрение MBT в организации требует значительных финансовых и трудовых вложений. Ниже перечислены недостатки MBT. разработка программного обеспечения:
- Тестировщикам необходимы навыки моделирования, которые не требуются при традиционном проектировании тестов.
- Процесс обучения занимает много времени, и первый проект обычно обходится дороже, чем приносит экономии.
- Сама модель может быть сложной для понимания и анализа, особенно по мере её развития.
- Модель, которая отклоняется от спецификации, генерирует уверенные, но ошибочные тесты.
- Адаптерный слой, который поворачивает АБС-пластикtracШаги, которые необходимо претворить в реальные действия, должны быть записаны и поддерживаться отдельно.
- Размер модели быстро растёт, поэтому модель с неограниченным количеством состояний может генерировать больше путей, чем любая команда сможет реализовать.
Ничто из перечисленного не является причиной для отказа от этой техники, но вместе они объясняют, почему MBT обычно сначала внедряется в одной стабильной подсистеме, а не во всей системе целиком. жизненный цикл тестирования программного обеспечения однажды.
Преимущества тестирования на основе моделей
С учетом этих затрат, преимуществами MBT являются:
- Простота в обслуживании тестовых примеров и наборов тестов, поскольку редактируется сама модель, а не отдельные тесты.
- Снижение затрат на протяжении всего срока реализации долгосрочного проекта.
- Улучшенная тестовое покрытие, поскольку генератор исследует пути, которые человек бы пропустил.
- Различные сгенерированные наборы тестов могут запускаться параллельно на любом количестве машин.
- Раннее обнаружение дефектов, поскольку неоднозначности возникают в процессе построения модели, до выполнения какого-либо кода.
- Увеличение количества обнаруженных дефектов при тех же усилиях по тестированию.
- Экономия времени на разработке тестов после создания модели и адаптера.
- Повышение удовлетворенности тестировщиков своей работой, поскольку усилия смещаются от рутинного написания скриптов к моделированию и анализу.
Тестировщики и так формируют ментальные модели в процессе работы, а метод MBT просто переносит эти ментальные модели на бумагу, где их можно просматривать, создавать версии и повторно использовать. Сопоставление этого метода с другими доступными подходами описано в [ссылка на источник]. виды тестирования ПО.





