| Назад: 3.8 Использование логов и анализ результатов | Содержание | Дальше: 3.10 Работа с несколькими модулями (Units) |
Отладка – это такой режим запуска скриптов, когда на любой строке кода можно поставить точку прерывания (breakpoint) и работа скрипта будет остановлена в этом месте до тех пор, пока пользователь не решит, что делать дальше. Режим отладки используется в тех случаях, когда скрипты по какой-то причине работают не так, как хотелось бы, и необходимо проверить значения переменных на момент выполнения скрипта.
В TestComplete есть все необходимые инструменты для отладки скриптов. Если вы используете язык DelphiScript, то вам не нужно ничего дополнительно, однако для доступа к отладочным функциям при использовании других языков необходимо установить MS Script Debugger.
Кроме того, убедитесь, что опция Debug – Enable Debugging включена. Еще желательно включить опции Tools – Options – Engines – General – Debug – Highlight execution point и Tools – Options – Engines – Log – Show Log on Pause.
Для изучения возможностей режима отладки мы создадим 2 функции TestDebug1 и TestDebug2, каждая из которых будет помещать в лог сообщения. Кроме того, функция TestDebug1 будет вызывать функцию TestDebug2.
function TestDebug1()
{
Log.Message(“TestDebug1, message 1”);
TestDebug2();
Log.Message(“TestDebug1, message 1”);
}
function TestDebug2()
{
Log.Message(“TestDebug2, message 1”);
Log.Message(“TestDebug2, message 2”);
}
Теперь поставим точку прерывания в функции TestDebug1 на строке вызова функции TestDebug2. Для этого необходимо щелкнуть мышью на этой сроке и нажать клавишу F9. После этого строка станет красной.

Если теперь запустить функцию TestDebug1, то ее выполнение будет приостановлено непосредственно перед вызовом функции TestDebug2, а в панели закладок появится новое окно Pause Log, в котором находится лог текущего работающего скрипта.

Как видно из приведенного скриншота, первое сообщение уже отправлено в лог и TestComplete ждет наших дальнейших действий. Вернемся на вкладку модуля скрипта.
Здесь мы можем сделать следующие действия:
- продолжить выполнение скрипта, нажав F5. При этом выполнение будет продолжено до следующего брекпоинта или до конца, если других брекпоинтов нет
- продолжить выполнение построчно с помощью клавиши F10. При этом будет выполнена следующая строка текущей функции (в нашем случае полностью отработает вызов функции TestDebug2)
- продолжить выполнение построчно функции, вызываемой в данной строке, с помощью клавиши F11. При этом мы переместимся на первую строку вызываемой функции TestDebug2, но ее выполнение не начнется, его тоже надо будет проходить по шагам
- продолжить выполнение скрипта до того места, где находится текстовый курсор (F4)
Теперь добавим в наши функции объявления переменных и ознакомимся с другими возможностями отладочного режима.
function TestDebug1()
{
var p, i, s, a = new Array(), u;
Log.Message(“TestDebug1, message 1”);
TestDebug2();
p = Sys.Process(“TestComplete”);
i = 12; s = “some text”; a[0] = 10;
Log.Message(“TestDebug1, message 1”);
}
Поставьте брекпоинты на строках Log.Message и запустите функцию. После остановки на первом брекпоинте обратите внимание на нижнюю часть окна TestComplete, где находятся вкладки Call Stack, Locals, Watch List и Breakpoints.
На вкладке Locals отображаются все локальные переменные (т.е. переменные, доступные из текущей функции), их значения и тип. В данный момент все они не инициализированы и содержат пустые значения (undefined).

Теперь нажмите F5 и после того, как выполнение скрипта остановится на следующем брекпоинте, снова обратите внимание на вкладку Locals. Теперь мы видим, какое значение в данный момент имеют все переменные кроме переменной u, которая так и не была инициализирована:

Если щелкнуть по значку + возле переменной p – раскроется список доступных свойств этого объекта (в данный момент это свойства процесса “TestComplete”). Если щелкнуть на нем правой кнопкой мыши и выбрать пункт меню Inspect, откроется окно, аналогичное Object Browser-у, в котором можно посмотреть все свойства и методы объекта.
Теперь перейдите на вкладку Watch List. Здесь вы можете как смотреть значения любых переменных (локальных и глобальных), так и вычислять целые выражения. Ниже показан пример проверки существования процесса и нескольких переменных.

На вкладке Breakpoints отображаются все брекпоинты, которые есть в проекте.

На вкладке Call Stack отображается порядок вызова вложенных функций. Например, в нашем случае, если остановить выполнение скрипта в середине функции TestDebug2, то мы увидим, что первой была вызвана функция TestDebug1, а затем из нее TestDebug2.

Отладка – это такой режим запуска скриптов, когда на любой строке кода можно поставить точку прерывания (breakpoint) и работа скрипта будет остановлена в этом месте до тех пор, пока пользователь не решит, что делать дальше. Режим отладки используется в тех случаях, когда скрипты по какой-то причине работают не так, как хотелось бы, и необходимо проверить значения переменных на момент выполнения скрипта.
В TestComplete есть все необходимые инструменты для отладки скриптов. Если вы используете язык DelphiScript, то вам не нужно ничего дополнительно, однако для доступа к отладочным функциям при использовании других языков необходимо установить MS Script Debugger.
Кроме того, убедитесь, что опция Debug – Enable Debugging включена. Еще желательно включить опции Tools – Options – Engines – General – Debug – Highlight execution point и Tools – Options – Engines – Log – Show Log on Pause.
Для изучения возможностей режима отладки мы создадим 2 функции TestDebug1 и TestDebug2, каждая из которых будет помещать в лог сообщения. Кроме того, функция TestDebug1 будет вызывать функцию TestDebug2.
function TestDebug1()
{
Log.Message(“TestDebug1, message 1”);
TestDebug2();
Log.Message(“TestDebug1, message 1”);
}
function TestDebug2()
{
Log.Message(“TestDebug2, message 1”);
Log.Message(“TestDebug2, message 2”);
}
Теперь поставим точку прерывания в функции TestDebug1 на строке вызова функции TestDebug2. Для этого необходимо щелкнуть мышью на этой сроке и нажать клавишу F9. После этого строка станет красной.

Если теперь запустить функцию TestDebug1, то ее выполнение будет приостановлено непосредственно перед вызовои функции TestDebug2, а в панели закладок появится новое окно Pause Log, в котором находится лог текущего работающего скрипта.

Как видно из приведенного скриншота, первое сообщение уже отправлено в лог и TestComplete ждет наших дальнейших действий. Вернемся на вкладку модуля скрипта.
Здесь мы можем сделать следующие действия:
– продолжить выполнение скрипта, нажав F5. При этом выполнение будет продолжено до следующего брекпоинта или до конца, если других брекпоинтов нет
– продолжить выполнение построчно с помощью клавиши F10. При этом будет выполнена следующая строка текущей функции (в нашем случае полностью отработает вызов функции TestDebug2)
– продолжить выполнение построчно функции, вызываемой в данной строке, с помощью клавиши F11. При этом мы переместимся на первую строку вызываемой функции TestDebug2, но ее выполнение не начнется, его тоже надо будет проходить по шагам
– продолжить выполнение скрипта до того места, где находится текстовый курсор (F4)
Теперь добавим в наши функции объявления переменных и ознакомимся с другими возможностями отладочного режима.
function TestDebug1()
{
var p, i, s, a = new Array(), u;
Log.Message(“TestDebug1, message 1”);
TestDebug2();
p = Sys.Process(“TestComplete”);
i = 12; s = “some text”; a[0] = 10;
Log.Message(“TestDebug1, message 1”);
}
Поставьте брекпоинты на строках Log.Message и запустите функцию. После остановки на первом брекпоинте обратите внимание на нижнюю часть окна TestComplete, где находятся вкладки Call Stack, Locals, Watch List и Breakpoints.
На вкладке Locals отображаются все локальные переменные (т.е. переменные, доступные из текущей функции), их значения и тип. В данный момент все они не инициализированы и содержат пустые значения (undefined).

Теперь нажмите F5 и после того, как выполнение скрипта остановится на следующем брекпоинте, снова обратите внимание на вкладку Locals. Теперь мы видим, какое значение в данный момент имеют все переменные кроме переменной u, которая так и не была инициализирована:

Если щелкнуть по значку + возле переменной p – раскроется список доступных свойств этого объекта (в данный момент это свойства процесса “TestComplete”). Если щелкнуть на нем правой кнопкой мыши и выбрать пункт меню Inspect, откроется окно, аналогичное Object Browser-у, в котором можно посмотреть все свойства и методы объекта.
Теперь перейдите на вкладку Watch List. Здесь вы можете как смотреть значения любых переменных (локальных и глобальных), так и вычислять целые выражения. Ниже показан пример проверки существования процесса и нескольких переменных.

На вкладке Breakpoints отображаются все брекпоинты, которые есть в проекте.

На вкладке Call Stack отображается порядок вызова вложенных функций. Например, в нашем случае, если остановить выполнение скрипта в середине функции TestDebug2, то мы увидим, что первой была вызвана функция TestDebug1, а затем из нее TestDebug2.
| Назад: 3.8 Использование логов и анализ результатов | Содержание | Дальше: 3.10 Работа с несколькими модулями (Units) |