Testcomplete - вибір мови програмування
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 # і т.п.).