Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЛАВА_4.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.4 Mб
Скачать

Тестирование переходов между состояниями

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

Необходимо протестировать каждую предлагаемую программой опцию, каждую команду меню. Команда 10 может быть доступна в режиме, открываемом по команде 9 или по команде 22. В этом случае команду 10 придется протестировать дважды — в обоих режимах. Однако команд меню, всевозможных режимов програм­мы и путей перехода в эти режимы может быть так много, что протестировать их все просто нереально. Поэтому, отбирая тесты для проверки путей выполнения программы, лучше всего руко­водствоваться следующими принципами:

тестировать все наиболее вероятные последовательности дей­ствий пользователей;

если можно предположить, что действия пользователя в одном режиме могут влиять на представление данных или набор предос­тавляемых программой возможностей в другом режиме, тестиро­вать эти действия;

кроме проведения самых необходимых тестов из тех, что опи­саны выше, поработать с программой в произвольном режиме, случайным образом выбирая путь ее выполнения.

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

Очень полезно составление схем меню. В подобной схеме отра­жаются все состояния программы и команды, вызывающие пере­ходы между этими состояниями. В нее включаются команды, ак­тивизируемые через меню, графические средства (например, раз­личные кнопки), и команды, выполняемые после нажатия опре­деленных клавиш. Например, в схеме может быть показан путь от меню «Файл» к команде «Открыть», затем к диалоговому окну «Открытие файла» и назад, к основному состоянию программы. Особенно удобны подобные схемы в случае, если определенное диалоговое окно можно открыть несколькими способами и выйти из него в несколько различных режимов. В этом случае можно на­рисовать на схеме все направления переходов и по ним протести­ровать программу. Это более надежный способ, чем работа с про­граммой без всякого плана с риском пропустить важные взаимо­связи ее состояний.

Условия гонок и другие временные зависимости

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

Если в программе определены ситуации тайм-аута, когда она ждет определенного события в течение заданного времени, а за­тем переходит в другое состояние, проверьте ее реакцию на дей­ствия пользователя, запросы системы или наступление ожида­емого события на границах интервала тайм-аута. Посмотрите, что будет, если событие произойдет за секунду до того, как програм­ма должна прекратить ожидать его, или через секунду после этого.

Протестируйте систему при повышенной нагрузке. В мультиза­дачной среде запустите несколько других программ и посмотри­те, как поведет себя ваша, успешно ли она справится со своей работой. Отправьте большой файл на принтер, чтобы процессор все время переключался на обслуживание печати. Подключите различные внешние устройства и заставьте их генерировать пре­рывания так часто, как только удастся. Короче говоря, замедлите и нагрузите компьютер, насколько это возможно. В результате ваша программа будет выполняться медленнее, и, быстро вводя дан­ные, можно попробовать превысить ее возможности приема. Если в нормальном режиме работы сбоя программы добиться не удает­ся, это может получиться при повышенной нагрузке.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]