Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 60
Текст из файла (страница 60)
В большинстве моделей число входных символов мало — как правило, меньше 20. Большее число тоже может быть обработано, но не без помощи специальных инструментов, Код состояния. Состояния можно пронумеровать. Это называется кодированием состояния. Состояния означают выполнение определенных операций. Например, у накопителя на гибких магнитных дисках могут быть следующие состояния: (1) запуск, (2) включение мотора, (3) поиск дорожки, (4) поиск сектора, (5) чтение (6) стирание, (7) выключение мотора. Мы можем обозначать эти состояния эквивалентными им номерами, например, закодировать состояния числами от 1 до 8.
Поведение системы с конечным числом состояний не меняется при изменении способа кодирования состояний. Текущее состояние. В любой момент времени система находится в определенном состоянии — в текущем. Начальное состояние. Особое состояние системы обычно называется начальным состоянием, если оно предшествует получению какого-либо входа.
Тестирование системы, не обладающей начальным состоянием, также возможно, однако это не рассматривается в данной книге. Счетчик состояний. Гипотетический или реальный адрес ячейки памяти, содержащий код текущего состояния. Счетчик состояний часто бывает неявным.
9.2. Основные термины 239 Программный счетчик в компьютере является примером явного счетчика состояний. Число состояний. Счетчик состояний ограничен своим максимальным значением. Если код состояний задает непрерывный диапазон, то зто максимальное значение равно числу состояний. Как и в случае входных символов, число состояний в модели обычно невелико (меньше 30). Большее число может быть обработано при помокни специальных инструментов. Автомат с конечным числом состояний (конечный автомат). Абстрактный автомат (например, программа, логическая схема, трансмиссия в автомобиле) для которого число состояний и число входных символов конечно и фиксировано.
Автомат с конечным числом состояний состоит из состояний (узлов), нереходое (связей), входов (весов связей) и выходов (весов связей). Автоматы с конечным числом состояний в данной книге изображаются графами состояний. Переходы. Система реагирует на входные события, что может привести к смене состояния. Это называется переходом между состояниями, или просто переходом. Система передает сообщение другой системе. Во время передачи она находится в состоянии «передача».
После завершения передачи она ожидает уведомления об успешном приеме данных. В атом случае она находится в состоянии «ожидание уведомления». Изменение состояния можно рассматривать как изменение значения счетчика состояний. Переходы на графе обозначаются связями. Если вход Х инициирует переход из состояния А в состояние В, то для обозначения зтого факта мы рисуем связь от А к В с весом Х. В диаграмме вход Х должен инициировать переход из состояния А в состояние В. Переход е себя. Обозначает сохранение состояния.
Изображается связью, выходящей из состояния и входящей в него же. Такому переходу может соответствовать определенный выход. Кодирование выхода. Переходу может соответствовать выход. Это означает, что в результате изменения состояния инициируется выходное действие, Выходные действия также могут быть пронумерованы целыми числами. Такая нумерация называется кодированием выхода. Поведение системы с конечным числом состояний не зависит от способа кодирования выхода. Выходное событие. В результате изменения состояния система может выдавать что-либо на выход.
Это зквивалентно подаче на выход целого числа, выходного кода. Если бы мы говорили о программном обеспечении (хоть зто и не обязательно), то мы могли бы сказать, что подаче на выход числа 7, например, соответствует запуск седьмой подпрограммы или передача сообщения седьмому методу обьектно-ориентированной программы.
Выходные события также обозначаются весами связей, причем в обозначении они следуют за символом наклонной черты. На предыдущем рисунке вход Х порождает выход У. Обратите внимание, что в модели на следующем рисунке оба входа вызывают изменение состояния (возможен переход в то же самое состояние, в данном случае «просмотр ТВ») и инициируют 240 Глава 9 ° Тестирование систем с конечным числом состояний выход (возможно, пустой, в данном случае «пропустить» для входа «кошка вошла в комнату»). Кошка вошла в комнату / пропустить Пустой выход.
Абстрактное пустое выходное событие. Например, событие «оставить все как естьы Доступное состояние. Состояние В доступно из состояния А, если существует такой набор входов, что модель, находясь изначально в состоянии А, в итоге придет в состояние В. Это означает, что в графе состояний существует путь от А к В. Недоступное состояние. Состояние недоступно из других состояний, особенно из начального состояния, если оно не является доступным.
Недоступные состояния обычно означают наличие ошибки. Сильно связанные состояли». На практике большинство состояний в автоматах с конечным числом состояний являются жестко связанными при условии отсутствия ошибок. Изолированные состояния. Набор состояний, недоступных из начального состояния. Внутри этого набора изолированных состояний состояния могут быть, а могут и не быть сильно связанными. Их изолировала именно недоступность из начального состояния. Изолированные состояния в моделях тестирования программного обеспечения вызывают подозрения и могут содержать ошибки, Сброс.
Особый вход, приводящей к возврату системы в начальное состояние из любого другого состояния. Если любое состояние доступно из начального состояния и если существует сброс, то граф состояний сильно связан. Сброс не является обязательным требованием, однако его наличие существенно упрощает проектирование теста и тестирование, Сброс также может быть реализован как возврат к особому состоянию, не являющемуся на самом деле начальным состоянием в модели. Набор начальныт состояний.
Набор состояний, обладающий следующими свойствами. Он включает в себя начальное состояние (начальные состояния). Набор начальных состояний может быть, а может и не быть сильно связанным. Если был совершен переход из состояния в этом наборе в состояние, пе входящее в этот набор, то возврат в набор начальных состояний становится невозможен.
Рассмотрим начальную загрузку системы. Программное обеспечение при загрузке проходит ряд шагов, каждый из которых может быть интерпретирован как состояние. После загрузки программы возврат в набор начальных состояний невозможен, поскольку вы не можете «выгрузить» программу. Загрузка системы может идти с применением нескольких наборов начальных состояний. Например, каждый набор начальных состояний включает в себя только одно состояние и пред- 241 ставляет собой ступени загрузки. Тем не менее, в продуманном программном обеспечении должен быть способ возврата в начальное состояние: в операционной системе %годоя в это комбинация СТЯЕ.АЕТ.ОЕЕ. Рабочее состояние.
Рано или поздно система пройдет начальное состояние и перейдет в сильно связанный набор рабочих состояний — область, в которой выполняется ббльшая часть тестирования. Стйь-АЬТ-ОЕЫ Начальное состояние в рабочем наборе. В рабочий набор может входить состояние, которое называется «начальное состояние». Оно не является истинным начальным состоянием модели, но выполняет его функции. Например, меню, которое появляется после загрузки Югоооч з, — это не истинное начальное состояние. Истинными являются состояния, входящие в последовательность загрузки. Однако с точки зрения выполнения операций в этой системе мы можем назвать это состояние исходным, до тех пор пока речь идет о тестировании меню.
Подход, в котором ясно определяются различные наборы состояний и состояния, служащие начальными в этих наборах, представляется достаточно удобным. Набор выходных состояний. Модель может иметь одно или два состояния, или целый набор состояний, таких, что после перехода в них возврат в набор рабочих состояний становиться невозможен. Внутри этого набора выходных состояний состояния могут быть, а могут и не быть строго связанными. Типичный пример — последовательность шагов при выходе из программы. Полностью определенный автомат. Автомат с конечным числом состояний называется полностью определенным тогда и только тогда, когда для любой комбинации входного кода и кода состояний задан переход (возможно, назад, в то же самое состояние) и выход (возможно, пустой).
Не содержащие ошибок автоматы с конечным числом состояний полностью определены. Автоматы же с ошибками могут быть, а могут и не быть полностью определены. Программное обегпечение, учравллемое нри помощи меню. Программное обеспечение или разновидность программной операции, в которой основное управление осуществляется выбором соответствующих пунктов в меню. Обход из начального состояния (илн просто обход, если не возникает двусмысленности).
Последовательность переходов из состояния А (например, начального состояния) в состояние В и назад в А. Если в модели есть набор начальных состояний, то подразумевается обход из состояния в этом наборе, которое проектировалось как начальное. Данный термин также используется для обозначения 242 Глава 9 ° Тестирование систем с конечным числом состояний обхода набора рабочих состояний, который стартует из начального состояния этого набора.
9.3 . Отношения и модель 9.3.1. Основы Материал, излагаемый в этом разделе, рассматривался и в [ВАВ)к)72, ВВХ063, СНОТЧ78, СНО'ьт'88, МС)ч)А60, М11Л.751. Я просмотрел множество форм ВНС и инструкций в поисках примеров систем с конечным числом состояний, которые могут быть полезны для нас, но не смог найти ничего, за исключением одного, но зато вечного состояния тревоги, которую испытывает каждьщ из нас при упоминании о налоговой декларации. Мне придется использовать в качестве иллюстраций менее формальные примеры. Узлы. Узлы обозначают состояния.
На рисунке приведено меню для программы, управляемой с его помощью. Если выбран какой-то определенный пункт меню, то это означает, что мы находимся в соответствующем состоянии. Я настроил оболочку своей операционной системы таким образом, чтобы иметь на экране следующие пункты меню: Выход, Файл, Диск, Дерево, Вид, Настройка, Панели инструментов, Окно, Загрузить 005, Справка, МОЙ СОБСТВЕННЫЙ ПЛАН РАБОЧЕГО СТОЛА Выкод Фаин диск дерево Вид настройка Инструменты Ок о ЗагрузнтьцОЗ=СМ О Справа* найти Ф р а ме а ко рсва поиск зап сь нфи ОО5 уп р д Р дама н «р й сира ка На самом деле здесь 12, а не 10 состояний, поскольку я не включил сюда начал ьное состояние, то есть состояние, в котором ни один пункт меню не выбран.
Я также не включил сюда выбор самой левой кнопки с чертой, управляющей меню. Связи. Связи обозначают переходы, В данном примере существует возможность перейти из начального состояния в любое другое состояние, если выполнить соответствующее входное действие. Также возможно перейти из большинства остальных 10 состояний обратно в начальное состояние (активное меню закрывается) путем нажатия клавиши ЕВС или АСТ. Мы остаемся в начальном состоянии, если ничего не делаем, или нажимаем на любые другие (не ЕВС или АЕТ) клавиши. Веса связей (входные коды).