Тестирование законченной версии кода программы

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

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

Тестирование и отладка готовой программы являются итеративным процессом, т.е. испытание программы сопровождается коррекцией ее текста в целях устранения обнаруженных ошибок.

 

8.1.4. Управление выполнением программы
во время отладки

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

Среда Visual Basic предоставляет такие возможности в виде команд меню "Debug" ("Отладка"):

· Step Into (Шаг в…) – пошаговое выполнение программы на всем протяжении ее кода;

· Step Over (Шаг через …" – пошаговое выполнение программы с рассмотрением процедур и функций как единых модулей;

· Run to Cursor (Выполнять до курсора) – выполнение программы в нормальном режиме до достижения помеченного места;

· Toggle Break Points (Установить или убрать точку прерывания) – пометка оператора, перед выполнением которого следует приостановить выполнение программы, повторное применение команды убирает точку прерывания;

· Clear All Break Points (Убрать все точки прерывания) – уничтожает все точки прерывания.

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

8.1.5. Организация диалога с программой
в ходе отладки

В ходе отладки необходимо организовывать диалог программы и программиста. На рис. 8.1 показана обработка ошибки выполнения программы. Из текста фрагмента программы видно, что программисту не будет выведено никаких сообщений о возникновении ошибки выполнения. Тем более, программисту не будет дано возможности продолжить тестирование программы с другим набором данных.

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

· дополнительные отладочные формы;

· объекты MsgBox и InputBox;

· штатные средства среды Visual Basic: окна Immediate, Locals и Watches.

Дополнительные отладочные формы следует применять для ввода большого количества данных с клавиатуры, а также для организации выбора файла для записи данных. Обычно на них устанавливаются объекты Text Box, реже объект Common Dialog. Как правило, такие формы требуют солидной дополнительной работы и их применение оправдано далеко не всегда.

Наиболее старым средством отладки является организация вывода сообщений и ввода данных командами языка программирования. Современный Visual Basic позволяет организовать диалог с помощью объектов MsgBox и InputBox.

On Error GoTo V1 t = Val(Text1.Text) t = 1 / t Exit Sub V1: t=10 i = MsgBox("t =0", vbOKOnly, "Ошибка") n$ = InputBox("Введите t", "Запрос") t = Val(n$) Resume Рис. 8.2. Пример организации диалога при обработке ошибок Эти объекты позволяют вывести небольшие сообщения и организовать ввод небольшого числа данных. Пример такого диалога приведен на рис. 8.2. Жирным шрифтом выделены операторы, дополняющие текст программы рис. 8.1, зачеркнут ненужный оператор Первый оператор выводит сообщение об ошибке, второй – вводит вспомогательные данные, третий определяет новое

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

Более универсальными средствами являются штатные средства среды Visual Basic. Внешний вид окон Immediate и Locals показан на рис. 8.3, а окна Watches – на рис. 8.5,а.

Рис. 8.3. Окна Immediate и Locals Окно Immediate автоматически открывается при прерывании работы программы и предназначено для ввода команды, подлежащей немедленному исполнению.

В окно Immediate можно ввести текст любой команды, например
Print имя_переменной, в него можно скопировать строку из окна кода формы и можно скопировать строку, находящуюся в этом окне, в окно кода формы. Нажатием клавиши Enter можно запустить строку кода из окна Immediate на выполнение, а затем продолжить выполнение программы.

. . . a = 1 / a i = MsgBox("a=" & Str(a), vbOKOnly, "") . . . Рис. 8.4. Фрагмент программы для иллюстрации применения окна Immediate Например, на рис. 8.2. показан фрагмент программы, содержащий оператор, при выполнении которого может возникнуть ошибка (a=1/a). При отладке можно установит курсор на начало "подозрительного" оператора и выбрать команду "Debug/Run to

Cursor". Программа будет выполнена до указанного оператора, который отладчик отметит желтым цветом и стрелкой слева от него. В этот момент, наведя указатель мыши на оператор, можно прочитать значение переменной "а". Если оно равно нулю, то для продолжения тестирования можно в окне Immediate напечатать, например, а=100, нажать клавишу Enter, а затем продолжить выполнение программы нажатием кнопки Start. Исполнение программы будет продолжено, причем значение переменной "а" будет равно 100.

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

Окно Locals позволяет просмотреть список переменных, объявленных внутри процедуры или функции, их значений и типов. В момент прерывания программы или возобновления ее работы в окне Locals появляются указанные данные соответственно в столбцах Expression, Value и Type.

Окно Watches позволяет просматривать значения всех данных, объявленных глобальными. Особенно удобно использовать окно Watches во время пошагового исполнения программы. Перед пуском программы на

а) б) Рис. 8.5. Окно Watches (а) и окно Edit Watch (б) исполнение необходимо добавить в него выражения, значения которых необходимо отслеживать. Для этого следует командой "Debug/Add Watch" или "Debug/Edit Watch" открыть окно Add Watch или похожее на него окно Edit Watch (рис. 8.5,б). В поле Expression печатается имя переменной. В разделе Context указывается процедура (функция) или модуль, в которых описана переменная, значение которой необходимо отследить в процессе выполнения программы. В разделе Watch Type можно установить простое слежение и прерывание выполнения программы при значении отслеживаемой переменной, равном True или False. В окне Watches указанные данные будут показаны в соответствующих графах.

Содержимое окна обновляется автоматически при каждом изменении переменных.