Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 67
Текст из файла (страница 67)
Исключением является тестирование протоколов, для которого аппаратная модель, возможно, будет эффективна. Инструменты, в том виде, в каком они есть, обычно интегрируются в более универсальные 131 (Интеграция Высокого Уровня) системы проектирования, и, по существу, недоступны тестировгцикам программного обеспечения.
На самом деле коммерческие средства поддержки разработки программноориептировапных тестов сушествуют [РОЯТ94~, по они находятся в зачаточном 264 Глава 9 ° тестирование систем с конечным числом состояний состоянии. Большинство организаций, разрабатывающих программное обеспечение, которым приходится проводить тестирование конечных автоматов в больших объемах, разрабатывают свои инструменты 1МАТТ88~. Поскольку эти инструменты дают им ощутимое преимущество, они никогда не публикуют результаты и никогда не делают эти инструменты доступными для посторонних. 9.б. Резюме Модель конечного автомата является фундаментальной моделью тестирования, применимой к большому числу различных видов программного обеспечения.
Она начинается с определения таблицы состоянийпереходов, включающей все возможные комбинации состояние-входной символ. Как правило, в большинстве моделей так же требуется входное и выходное кодирование. Обеспечение покрытия связей (переходов) является минимальной разумной целью тестирования. При использовании несложных средств поддержки, таких как явный счетчик состояний, и сброс для нахождения большинства ошибок будет достаточно простых обходов.
Самое актуальное из того, что тестировщик может здесь сделать — это сосчитать произведение состояние-символ, и, исходя из этого, оценить, реально ли в данном случае выполнить тестирование. Следующее по актуальности дело, из тех, что тестировщик может сделать — это в точности повторить каждый из проводимых тестов (это относится не только к тестированию систем с конечным числом состояний, но и ко всем тестам), используя систему захват/воспроизведение.
А затем необходимо исследовать даже самые тривиальные изменения в поведении для того, чтобы обнаружить скрытые ошибки в поведении систем с конечным числом состоя н и й. 9.7. Вопросы для самопроверки 1. Дайте определение следующих терминов: полностью определенный граф состояний, текущее состояние, выходное состояние, конечный автомат (автомат с конечным числом состояний), скрытое поведение системы с конечным числом состояний, начальное состояние, набор начальных состояний, входное кодирование, входное событие, входной символ, номер входного символа, изолированное состояние, программа, управляемая через меню, вложенные системы, пустой вход, пустой выход, число состояний, выходное кодирование, входное событие, таблица выходов, доступное состояние, сброс, переход самого в себя, код состояния, стабильное состояние, счетчик состояний, произведение состояние-символ, таблица состояний, таблица состояний-переходов, сильно связанные, обход, изменяющиеся состояния, переход, недоступное состояние, рабочие состояния.
2. Переделайте модель корабля Ептегрпэе, исходя из предположения, что три положения ручки управления двигателем находятся в вершинах треугольника, а не вдоль одной линии (поскольку это желание рулевого Клингона, 9.7. Вопросы для самопроверки 2бБ а Клингоны всегда добиваются того, чего хотят). Это означает, что возможны следующие дополнительные входы: р> з и з > р. Законы физики, тем не менее остаются прежними для Клингонов. Разработайте новый набор тестов. 3.
(а) Добавьте в модель корабля ЕпгегргЬе главный двигатель (Г). Вы можете перейти к главному двигателю из любого положения двигателя (Р, Н, 3), Однако конечный результат в любом случае будет один и тот же — движение вперед. Главный двигатель не подчиняется законам Ньютона, поэтому, если вы двигались в обратном направлении, то при включении главного двигателя вы можете перейти непосрсдственно к движению вперед, без прогнежуточной остановки. После выключения главного двигателя рычаг управления двигателем находится в положении, которое он занимал перед включением главного двигателя, но вы продолжаете двигаться вперед, Создайте модель и разработайте тесты.
(б) Задание, аналогичное 3(а), но для флагмана Клннгонов Вр(т!сЬцтгйг Н гпйггсЬ. 4. Компания Еа Рогйе модернизировала главный двигатель так, что теперь после его выключения он восстанавливает направление движения (вперед, назад, остановка), которое имело место перед его включением. Создайте модель и разработайте тесты. 5. Если вы работаете в оболочке операционной системы Ю1пдотнз, спроектируйте модель меню наивысшего уровня в этой среде, разработайте тесты и выполните их'. 6.
В моем полноприводном пикапе «Тойота-Терсел» на рукоятке переключения передач нарисованы следуюшие передачи: К (задний ход), (и' (нейтральная ющая ручка для переключения между приводом на два и на четыре колеса, педали сцепления н тормоза. Вот некоторые правила управления этой машиной'. Переключая передачи, вы должны пройти через нейтральную передачу, то есть реальные действия по переключению передач будут следуюшими; М>М, М>й, М>зь, М>1, ... К>К, ... М>2, М>3, ... К>М, ...
5>М. Переключатель режима работы трансмиссии имеет только два положения: 2ВК>4ВК и 4ВК > 2ВК ( ВК вЂ” ведущие колеса). Сцепление может быть включено (есть) или выключено (нет). С тормозами дело обстоит точно так же. Вы можете отпустить педаль сцепления (и включить его), если сцепления нет, ' В формальном курсе я, как прааило, использоаал ьгаксимально аозможное число примеров управляемых при помаши меню программ, исходя из аозможностсй лостушьмх ллн стулентон компьютероа иггили операнионных систем. Олнако примеры корабля Вптсгргве н «Тотзотьг* разработаны так, чтобы а них сложность молелироаания возрастала постепенно. з Я зто не нылумал.
Это описание — наиболее близкое к типичному описанию 2/4 колесной трансмиссии, из тех, что я мог принести, Сейчас у меня полноприаолная машина, но у пее автоматическая коробка передач. И я рал, что инженеры, разрабатыааюгпие автоматическую трансмиссию, использовали молель конечного антомата и соотнстстаую~ггее тсстнроаанис. 266 Глава 9 ° Тестирование систем с конечным числом состояний и нажать на педаль (и выключить), если оно есть. То же самое относится и к тормозам.
° Вы можете переключиться из любой передачи (за исключением 51) на нейтральную без использования сцепления. Переключение 5ь>М требует сцепления. > Вы должны использовать сцепление для переключения нейтральной передачи на любую другую. > Передача 5~ вам доступна только в полноприводном режиме. ° Вы можете переключиться между режимами 2ВК>4ВК и 4ВК>2ВК, не используя сцепление, если только ваша передача отлична от 51., однако при этом вы должны стоять на месте, или двигаться вперед. ° Любое переключение передач или выбор 2(4 приводного режима можно совершить, используя или не используя сцепление, если вы стоите на месте. ° Если вы двигаетесь назад на передаче К, вы можете переключиться на первую или вторую передачу следующим образом: К>й>1, й>М>2.
> Единовременное переключение между передачами переднего хода не должно быть больше, чем на две скорости в любом направлении. Это значит, что возможны следующие переходы: М>1, 1>М>2, 1>М>3, 2>й>1, 2>й>3, 2>й>4, 3>й>1, 3>М>2, 3>й>4, 3>й>5, 4>й>2, 4>й>3, 4>й>5 и так далее. Вы всегда можете переключить передачу на нее же саму (включая й и 5~), используя сцепление или без него, если только вы не проходите через нейтральную передачу.
К примеру, переключение будет 3>З, а не З>М>З. > Нельзя пытаться совершать запрещенные переключения (такие как 5>й>К), ведь не секрет, что даже лучшие трансмиссии ломаются при неправильном обращении. ° Вы можете выполнять только одно действие за раз. Это значит, что нельзя одновременно переключать скорость, режим работы трансмиссии, выжимать сцепление и тормоз или обе педали сразу. Определите входную схему кодирования.
Разработайте таблицу(ы) состояний, включающую все запрещенные переходы. Разработайте набор тестов, обеспечивающий полное покрытие. Разрабатывая тесты, руководствуйтесь общими соображениями, имея в виду, что ваши тесты могут быть потенциально опасны и/или могут иметь разрушительные последствия для машины. Ваша задача — получить достаточно небольшой набор эффективных тестов, представляющих собой обходы состояний и не разрушающих трансмиссию во время работы. Не пытайтесь разработать по настоящему минимальный набор тестов, так как зто является сложной теоретической задачей.
Приведенные ниже модели расположены в порядке возрастания сложности. Проработайте их. 6.1. Привод только на два колеса, нет очень низкой скорости, только три передние скорости. 9.7. Вопросы дпя самопроверки 267 6.2. То же, что и 6.1, но с четырьмя передачами. 6.3. То же, что и 6.1, но с пятью передачами. 6А. Привод на два/четыре колеса, нет очень низкой скорости, только три передние скорости. 6.5. То же, что и 6А, но с четырьмя передачами.
6.6. То же, что и 6.4, но с пятью передачами. 6.7. Привод на два/четыре колеса, есть очень низкая скорость, только три передние скорости. 6.8. То же, что и 6.7, но с четырьмя передачами. 6.9. То же, что и 6.7, но с пятью передачами. 6.10. Любое из приведенныхвышезаданий,носдополнительным условием, что вы можете за один раз повышать скорость на три передачи (например, 1>М>4), а понижать только на одну (например, 4>М>3). Подсказка.
Входное кодирование не обязательно должно соответствовать единичному входному событию, но может обозначать целую последо- вательность событий, как, например, 4>3 обозначает 4>М, М>3. Вложенные автоматы, состояния, и/или входы вы определяете, исходя из своих соображений. Не приравнивайте 6>6 к 6>М>6 (где С вЂ” любая передача), они не эквивалентны, Инструментальные средства и автоматизация 10.1. Обзор В этой главе приводятся аргументы, используемые для того, чтобы убедить людей вклалывать деньги в автоматизацию инструментов тестирования.
Делается обзор особенностей инструментов тестирования и дается долгосрочный прогноз будущего тестирования. 10.2. Основные термины Внешние термины: побочный продукт, кэш-память, код, компилятор, данные, порча данных, отладочный пакет программ, функциональная належность, редактировать, время выполнения, я0жь, формальные методы, горячая линия, инспектирование, интерпретировать, прерывание, клавиатура, быстрый набор на клавиатуре, аппаратные средства, инициализировать, сопровождение, размещение в памяти, многозалачность, сеть, объектный код, объектно-ориентированное программирование, операционная система, оптимизирующий компилятор, бумажная лента, рабочая характеристика, пиксел, платформа, обработка побочного продукта, программа, программист, качество, случайный, остаток, экран, 5ияят-вяч, программное обеспечение, исходный код, упреждающее исполнение команд, оператор, текстовый редактор, пропускная способность, истина, пользователь, текстовой процессор.