Для некоторых сложных программ (в том числе, для блока оптимизации компилятора GCC) был достигнут уровень покрытия 90-95%. Test Real Time — один из первых представителей этой группы. Более широкие возможности предоставляет Jtest компании Parasoft. Интересен инструментарий компании Comformiq. Семейство инструментов разработки тестов на основе моделей предлагает Институт системного программирования РАН в кооперации с компанией ATS. Поскольку семейство UniTesK авторам знакомо существенно ближе, мы изложим общую схему подхода тестирования на основе моделей на примерах из UniTesK.

Ды между состояниями) — выполнение методов модулируемой программы, которые удовлетворяют данным предусловиям состояния. В результате Spec Explorer строит конечный граф с состояниями и переходами, которые представляют подмножества S и Acts. • Регрессивным тестированием называют повторное выполнение тестов, направленное на обнаружение дефектов в программе, уже прошедшей этот набор тестов. • Тестирование компонента – это тестирование класса, пакета, небольшого приложения или другого элемента системы, разработанного несколькими программистами или группами, выполняемое в изоляции от остальных частей системы. • Блочным тестированием называют тестирование полного класса, метода или небольшого приложения, написанного одним программистом или группой, выполняемое отдельно от прочих частей системы.

5 представлен сеанс использования UniTesK в среде разработки Forte 4.zero компании Sun Microsystems. Следующий класс инструментов — инструменты тестирования компонентов. Примером является Test Architect (IBM/Rational). Такие инструменты помогают организовать тестирование приложений, построенных по одной из компонентных технологий (например, EJB). Предусматривается набор шаблонов для создания различных компонентов тестовой программы, в частности, тестов для модулей, сценариев, заглушек. Тестирование на основе моделей (MBT – Model Based Testing) – это метод тестирования программного обеспечения, при котором поведение тестируемой программы во время выполнения проверяется на соответствие прогнозам, сделанными моделью.

Уровень повторного использования существенно выше, чем у традиционных инструментов. Разработчик тестов пишет не тестовый скрипт, а критерии проверки утверждения и тестовый сценарий. И то, и другое лишено многих реализационных деталей, и поэтому их проще В чем заключается тестирование модели переиспользовать для новой версии целевой системы или для адаптации спецификаций и тестов для сходного проекта. Например, статистика UniTesK показывает, что уровень переиспользования для тестирования ядер разных операционных систем превышает 50%.

При этом исходный код модулей системы может быть написан на различных языках программирования, тогда как модель описывается всегда на одном языке, не зависящем от используемого языка разработки. Для облегчения синтаксической обработки языка описания моделей, а также в связи с общей тенденцией в программировании было решено, что язык описания моделей будет создан на основе XML. Разработанный нами язык (Auto-matto XML, AXML) определяет теги для описания состояний конечного автомата и переходов в соответствии с функцией переходов 5. Атрибуты тегов — это дополнительные свойства состояний, они определяются функцией 5. При этом тестовый набор создается так, чтобы он удовлетворял критерию полноты тестирования, заданному моделью ситуаций. Курс знакомит слушателей с основными проблемами проверки качества сложных программных систем и современными подходами к их решению на основе тестирования.

Системы, обведенные фиолетовой линией, могут иметь некоторую общую функциональность или инфраструктуру – возможно, все они используют общий набор веб-сервисов, одну и ту же систему обмена сообщениями или работают на одном сервере. Модели часто являются графическими с примерами, такими как блок-схемы, варианты использования, диаграммы последовательностей и так далее. Эти и многие другие модели содержат элементы (или большие двоичные объекты), соединенные линиями или стрелками. Обычно их называют ориентированными графами. Можно использовать любую модель, позволяющую идентифицировать элементы покрытия.

  • Модели обычно проще реализации, поэтому можно было предположить, что тесты, хорошо «покрывающие» модель, слишком бедны для покрытия реальных систем.
  • Модель должна быть практически понятной и переиспользуемой.
  • Поскольку тестирующий сервер обрабатывает множество запросов от потоков работающей системы, целесообразно снабдить данный сервер системой распределения (балансировки) нагрузки.
  • Поведение системы анализируется и представляется в виде событий для каждого состояния.

На основе анализа предметной области было решено использовать вероятностный конечный автомат и расширить его для описания реальных взаимодействующих систем с учетом событий и исключений. На конференции MS Academic Days [1] один из разработчиков системы В. Кулямин рассказал о тестировании распределенных систем с помощью технологии UniTesK. Следовательно, необходимо произвести тестирование на отказоустойчивость.

Чем Могут Помочь Модели

Данный подход требует специальных знаний тестировщи-ка, но уже сам факт перехода к моделированию в тестировании свидетельствует о серьезном отношении к качеству программных систем. Так, утверждения позволяют сгенерировать тестовые «оракулы» — программы для автоматического анализа корректности результата; различные виды конечных автоматов или их аналоги позволяют сгенерировать тестовые последовательности. К тому же, поскольку модели обычно проще, чем реализации, для них удается провести более тщательный анализ, поэтому набор тестов становится более систематическим. Модели могут отображать желаемое поведение системы или использоваться для создания тестовых стратегий или среды тестирования.

Этот вид тестирования обычно начинают проводить, как только созданы два класса, которые можно протестировать, и продолжают до завершения работы над системой. В UniTesK используется единая архитектура тестов, подходящая для тестирования систем различной сложности, относящихся к разным предметным областям, и обеспечивающая масштабируемость тестов. Компоненты тестов, требующие написания человеком, отделены от библиотечных и генерируемых автоматически (рис. 4). Показатель покрытия (основанный на формальной тестовой модели) может быть рассчитан объективно, но не существует формулы или закона, согласно которым X означает покрытие, Y – качество или Z – достоверность. Все показатели покрытия дают лишь косвенное, качественное, субъективное представление о тщательности или полноте нашего тестирования.

На роль инструментов разработки тестов для подобных систем претендует новое поколение средств описания моделей/спецификаций и средства генерации тестов на проверку согласованности поведения реализации заданной модели. Рассматриваются как классические техники построения тестов на основе разбиения ситуаций на классы эквивалентности, а также использующие конечные автоматы и комбинаторные схемы, так и более пригодные для систем реальной сложности интегрированные подходы. Онлайн-тестирование позволяет также вести статистику совершенных переходов и, таким образом, отслеживать реальные вероятности перехода из состояния в состояние. Должность «тести-ровщик» (тестер, QA manager) — не редкость, а в крупных компаниях мирового уровня эта профессия — одна из важных и высокооплачиваемых. Однако по мере возрастания сложности системы для гарантии ее безошибочной работы будет требоваться все больше тестеров, и может наступить момент, когда рост числа людей уже не сможет гарантировать качества продукта [1].

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

Рассматриваются как классические техники построения тестов, использующие конечные автоматы и комбинаторные схемы, так и более пригодные для систем реальной сложности интегрированные подходы. Разбираются различные техники организации тестовых наборов, понятие полноты тестирования и различные критерии полноты. При тестировании с помощью UniTesK система рассматривается в виде «черного ящика», т.е.

Критерии Качества Описания Тест-кейсов Могут Быть Следующими:

Однако не было ясности в отношении качества подобных тестов. Модели обычно проще реализации, поэтому можно было предположить, что тесты, хорошо «покрывающие» модель, слишком бедны для покрытия реальных систем. Требовались широкие эксперименты в реальных проектах. Разработка моделей и спецификаций связана с «математизацией» программирования.

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

Результатом работы Spec Explorer являются автоматически сгенерированные тест-кейсы (test circumstances — тестовые наборы) поведения системы, которые могут быть запущены вместе с тестируемой системой для проверки описанного и полученного поведения. Построение сценария теста на основе требований и заданного критерия полноты тестирования. Организация тестирования распределенных систем.

Полностью реализованный программный продукт подвергается системному тестированию. На данном этапе тестировщика интересует не корректность реализации отдельных процедур и методов, а вся программа в целом, как ее видит конечный пользователь. Основой для тестов служат общие требования к программе, включая не только корректность реализации функций, но и производительность, время отклика, устойчивость к сбоям, атакам, ошибкам пользователя и т.д. Для системного и компонентного тестирования используются специфические виды критериев тестового покрытия (например, покрыты ли все типовые сценарии работы, все сценарии с нештатными ситуациями, попарные композиции сценариев и проч.). P — вероятность перехода из заданного состояния в следующее заданное. Например, для тестирования if (A) B; else C можно строить систему пред- и постусловий, а можно поставить задачу прохождения ветви B с условной вероятностью P(BA) и ветви C с вероятностью P(C I – A).

Что Собой Представляют Модели?

Таким образом, предполагается реализация как model-based, так и anti-model-based тестирования. Инструменты модульного тестирования активно используют развиваемые независимо модули для решения разных более специфичных задач. Например, dbUnit [22] — для организации работы с базами данных в модульных тестах используется, httpUnit [23] — для обработки HTTP-запросов.

Поскольку модели обычно строятся на основе требований или ожидаемого поведения устройства, то такое тестирование обычно рассматривается как одна из форм тестирования по методу черного ящика. Слушатели получают базовые знания в тестировании на основе моделей — новой, динамично развивающейся области на границе между теоретической информатикой и программной инженерией, а также представление о практических приложениях этого подхода. В целом тестовый сценарий описывает итераторы для всех методов данного класса, однако каждый раз разработчик теста решает только локальную проблему — как перебрать входные параметры одного-единственного метода. Широко распространены инструменты тестирования приложений с графическим пользовательским интерфейсом. Их часто называют инструментами функционального тестирования.

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

Сегодня рынок программного обеспечения постепенно переходит от программных систем, выполняющихся на одном настольном компьютере, к распределенным системам, работающим на нескольких устройствах через локальную сеть организации или глобальную сеть Интернет. Причем устройствами могут быть как обычные компьютеры, так и «умное» оборудование (сотовые телефоны, КПК, банкоматы, mp3-плейеры, UP’n’P-электролампочки, джакузи с веб-сервисами и многое другое). Из приведенного обзора видно, что компонентные средства тестирования на основе моделей в последние годы активно развиваются, однако пока не достигли необходимой функциональности, отставая по ряду возможностей от инструментов модульного тестирования. Необходимо дополнить имеющиеся наработки следующими возможностями. Важным классом инструментов тестирования, в большой степени обладающих свойствами модульности, являются средства модульного тестирования (unit testing) [5]. Наиболее известен из таких инструментов JUnit [6], написанный на Java и предназначенный для тестирования кода на этом языке, хотя исторически первым был SUnit [18,19] для программ на Smalltalk.

Элемент покрытия — это то, что мы хотим использовать в наших тестах. Тестирование — это процесс, в ходе которого мы создаем ментальные модели окружающей среды, программы, человеческой природы и самих тестов. Каждая модель используется либо до тех пор, пока мы не признаем, что поведение является правильным, либо до тех пор, пока модель больше не будет достаточной для этой цели.

Неформальные модели, как правило, представляют собой контрольные списки или критерии, используемые для мозгового штурма списка элементов покрытия, инициирования идей для тестирования или для тестирования в ходе ознакомительной сессии тестирования. Эти списки или критерии могут быть заранее определены или подготовлены как часть плана тестирования, или приняты в ходе ознакомительной тестовой сессии. Цель моделей состоит в том, чтобы упростить сложные ситуации, опуская детали, которые на данный момент не актуальны. Мы используем модели, чтобы упростить задачу – например, выбрать что-то для тестирования. Модель информирует наше мышление, и мы выбираем тесты, определяя вхождения в какой-либо ключевой аспект модели.

Одной из важных аспектов тестирования является генерация тестовых наборов, причем важна полнота таких наборов. Преимуществом тестирования на основе моделей является, во-первых, то, что тестовые наборы могут быть сгенерированы автоматически, и, во-вторых, то, что можно исследовать свойства программной системы без ее запуска. (В этом месте возможно применение аспектно-ориентирован-ной модели программирования [14]).

Дукта необходимо его обязательное тестирование в процессе разработки, перед запуском в продажу и внедрением. Инструменты тестирования на основе моделей с точки зрения их приближения к желательной компонентной архитектуре можно разделить на три группы. Рассмотрим теперь имеющиеся инструменты тестирования с точки зрения их приближения к желаемому идеалу — инструментарию на основе компонентной технологии. • Комбинаторные техники тестирования.Тестирование на основе грамматик.

Leave a Reply

Your email address will not be published. Required fields are marked *