Разделы портала

Онлайн-тренинги

.
TestComplete – выбор языка программирования
02.07.2013 12:36

Геннадий Алпаев, автора единственного русскоязычного учебника по TestComplete и автор тренинга Автоматизация тестов с использованием TestComplete, очередной набор которого начнет работу 19 июля.

TestComplete дает возможность создавать тесты, используя несколько языков программирования, и новичку обычно нелегко сделать выбор в пользу того или иного языка. В этой статье я постараюсь максимально подробно рассмотреть этот вопрос, а также ответить на часто задаваемый вопрос «какой язык выбрать?».

Выбор языка

Выбрать язык для нового проекта необходимо в момент создания проекта.

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

  • VBScript – процедурный язык от Microsoft с добавленными позже возможностями объектно-ориентированного программирования (ООП). Очень лёгкий в освоении, рекомендуется новичкам в программировании.
  • JScript – объектно-ориентированный язык программирования, более гибкий и мощный по сравнению с VBScript. Рекомендуется для более опытных в программировании.
  • DelphiScript – процедурный язык программирования без возможностей ООП. Его рекомендуется использовать только в крайнем случае (см. ниже описание Самотестирующихся и Подключаемых приложений).
  • C++Script/C#Script – тот же JScript с небольшими синтаксическими отличиями.

Обратите внимание! Языки C++Script/C#Script не имеют ничего общего с языками C++/C#! Это тот же самый JScript, а потому выбрав один у вас будет не больше возможностей, чем при использовании обычного JScript. Всё, что говорится в этой статье о языке JScript, имеет такое же отношение и к этим двум языкам.

Если вы собираетесь писать и запускать скрипты только из TestComplete, то нет никакой разницы, какое приложение вы тестируете и какой язык выберете. Например, вы можете выбрать язык DelphiScript для тестирования веб-приложений или язык JScript для тестирования приложений, написанных на Delphi. В любом случае вы будете иметь все те же самые возможности (за исключением, конечно, ограничений самого языка).

На этом этапе (этапе создания проекта и выбора языка) нужно знать еще одну вещь: выбрав язык для вашего проекта вы не сможете его изменить! Если через 2 месяца работы вам захочется использовать другой язык, придется переписать всё, написанное ранее. В принципе исключение здесь составляют языки JScript/C++Script/C#Script: они очень похожи и для опытного программиста не составит особого труда сконвертировать скрипты из одного языка в другой, однако автоматически сделать это всё равно не получится.

Если вы хотите узнать, какой язык используется в имеющемся проекте, достаточно выбрать пункт меню View – Select Panel, выбрать пункт Properties и нажать ОК.

При этом откроется панель со свойствами выбранного в данный момент элемента проекта. Щелкните на имени проекта и на панели Properties вы увидите свойство Language.

В случае с языками VBScript и DelphiScript это обычно не нужно (эти языки легко узнаются), однако отличить C++Script от C#Script попросту невозможно. Также иногда пользователи смешивают синтаксис JScript и C++Script/C#Script (что в принципе возможно, так как для них используется один и тот же скриптовый движок), тем самым затрудняя определение языка проекта.

Более просто способ определения языка: поставьте курсор в любой строке редактора кода и в статусной строке вы увидите имя используемого языка.

Ограничения языков

Языки VBScript и JScript изначально не предназначены для разбиения по нескольким файлам (модулям), эти возможности нам предоставляет сам TestComplete. А потому существует несколько особенностей при работе с модулями в TestComplete, которые могут доставить головную боль, если о них не знать:

  • Взаимное подключение двух или более модулей (с помощью инструкции USEUNIT) друг из друга запрещено в случае использования JScript
  • В случае использования VBScript невозможно создать экземляр класса, объявленного в другом модуле. Чтобы обойти это ограничение, в модуле с объявленным классом необходимо создать функцию, которая будет возвращать объект нужного типа
  • Уровень вложенности подключений должен быть не более трёх. Т.е. если вы подключаете модуль UnitA в модуле UnitB, затем подключаете UnitB в модуле UnitC, то из модуля UnitC вы сможете вызывать функции модуля UnitA. Однако если вы создадите еще один уровень подключения (например, модуль UnitD, в котором подключите модуль UnitC), то из модуля UnitD вы не сможете вызывать функции из самого «верхнего» модуля (UnitA).

Это наиболее «болезненные» особенности использования языков в TestComplete, на самом деле их гораздо больше.

Подключаемые и самотестирующиеся приложения

Кроме скриптовых языков, «встроенных» в TestComplete, мы можем писать тесты на языках высокого уровня (C#, Delphi, C++, Visual Basic).

Преимущество этого подхода в том, что мы можем использовать все возможности соответствующего языка программирования, возможности среды разработки (например, Visual Studio) и т.п. При этом мы будем использовать возможности и объекты TestComplete, подсоединяясь к нему через OLE (пример создания такого приложения можно найти, например, в Учебнике по TestComplete или в справочной системе TestComplete).

Именно для этого у нас и предназначены языки DelphiScript, C++Script и C#Script: тесты, написанные с использованием этих языков, очень легко преобразовать в код на соответствующем языке программирования высокого уровня (например, сконвертировать код DelphiScript в Delphi или C#Script в код C#). При этом нам потребуется сделать минимум изменений в существующем коде скриптов для переноса и запуска тестов в соответствующей среде.

Во всех остальных случаях использование языков DelphiScript, C++Script и C#Script доставляет большие неудобства по сравнению с JScript и VBScript.

Итог

Подводя итоги можно дать такие советы по выбору языка программирования:

  • если вы новичок в программировании – выбирайте VBScript
  • для программистов с опытом больше подойдет JScript
  • если вы планируете в будущем конвертировать ваши тесты в код на языке программирования высого уровня – выбирайте скриптовый язык, соответствующий языку программирования (например, DelphiScript для конвертации в язык Delphi, C#Script – для конвертации в C# и т.п.).