Ще зовсім недавно тестування програм проводилося вручну або самими програмістами, або користувачами, що навряд чи можна було назвати системним підходом і до того ж не дозволяло оцінювати якість коду. Трохи пізніше тестування виділилося в окрему галузь знань в складі розробки програмного забезпечення, але швидко прийшло розуміння того, що тестування вручну неефективно, оскільки вимагає великих трудових ресурсів і багато часу. Перші кошти автоматизації тестування практично представляли собою бібліотеки, які можна було використовувати для написання тестів, що вимагало від тестувальника вміння програмувати на рівні розробника. Сучасні засоби автоматизованого тестування дозволяють створювати автоматизовані тести з мінімальною участю людини.
Якщо провести поверхневу класифікацію, то засоби автоматизації тестування можна поділити на дві групи: інструменти функціонального і інструменти навантажувального тестування. До першої групи належать інструменти, призначені для перевірки відповідності додатки пред'являються бізнес-вимогам, а другу групу утворюють інструменти для перевірки і оцінки продуктивності додатків.
На ринку засобів функціонального тестування сьогодні представлені головним чином продукти наступних компаній: HP (QuickTest Professional, WinRunner), IBM (Robot, Functional Tester), Borland (SilkTest) і AutomatedQA (TestComplete), що представляють собою кошти розробки додатків. Причому частина з них використовує «промислові» мови програмування (наприклад, QTP використовується в якості мови розробки скриптів VB, а Functional Tester реалізований в середовищі Eclipse і дозволяє створювати скрипти на Java), а частина застосовує «діалекти» або свої власні спеціальні мови (наприклад , Robot використовує мову SQABasic, а TestComplete - мова 4Test). Більшість інструментів орієнтоване на роботу з Web-додатками або зі звичайними додатками, написаними на .Net або Java. При цьому підтримку «старих» платформ, таких як Centura або PowerBuilder, забезпечують в основному найбільші розробники засобів тестування, HP і IBM.
Розробники засобів автоматизованого функціонального тестування досить оперативно реагують на появу нових механізмів і платформ розробки програмного забезпечення. І все ж, незважаючи на те що на ринку існує величезна різноманітність різних продуктів для автоматизованого тестування, деякі компанії-розробники програмного забезпечення воліють створювати власні інструменти, пристосовані для тестування розроблюваних ними додатків. Причин для цього як мінімум дві: висока вартість засобів автоматизованого тестування і унікальність тестованого програмного забезпечення, яка не дозволяє використовувати стандартні засоби автоматизації тестування.
Інструменти навантажувального тестування є більш складними - вони фактично «перехоплюють» трафік між тестованим додатком і сервером і представляють його у вигляді, зручному для роботи. Практично всі виробники продуктів для автоматизованого тестування пропонують кошти навантажувального тестування, оскільки в сучасному вигляді функціональне тестування в чистому вигляді мало кого цікавить. Лідерами на ринку засобів автоматизованого тестування навантаження є HP з продуктом LoadRunner і IBM з продуктами Robot
і Performance Tester, що підтримують безліч протоколів (включаючи термінальні протоколи). Більшість коштів навантажувального тестування працюють лише з Web-додатками.
Крім власне засобів тестування існують так звані засоби підтримки процесу тестування, що дозволяють вести облік вимоги і тест-кейсів, проводити аналізи покриття вимоги тестами, управляти ходом виконання тестування, вести облік виявлених дефектів і т.п. Лідирує в цій галузі Web-додаток HP Quality Center - єдиний інструмент управління процесом тестування (включаючи управління вимогами і дефект-менеджмент), інтегрований із засобами функціонального і навантажувального тестування HP QuickTest Professional і LoadRunner. З даним інструментом конкурує продукт Rational Quality Manager (RQM) від IBM, який представляє собою Web-додаток на платформі Jazz.
Історично склалося так, що Росія відстає від решти комп'ютерного світу щодо застосування засобів автоматизації тестування, і для цього, на мій погляд, є кілька причин. По-перше, неправильне ставлення до тестування як такого - багато керівників до сих пір вважають, що розробник може написати програму, яка не містить помилок. По-друге, висока вартість інструментів автоматизації тестування. По-третє, бажання заощадити на кваліфікованих кадрах - робота фахівця з засобів автоматизації тестування обходиться дорожче, ніж праця звичайного тестувальника, тому багато компаній вважають за краще запросити трьох студентів, які будуть вручну тестувати програмне забезпечення (в більшості випадків до того ж безсистемно), ніж найняти одного фахівця-автоматизатора. По-четверте, обмеження по термінах - автоматизація тестування вимагає значних витрат часу і має сенс тільки в тому випадку, якщо проект як мінімум середньостроковий (від півроку і більше). І нарешті, по-п'яте, невдалий досвід застосування таких засобів і очікування миттєвого ефекту від їх впровадження. Але ж результати впровадження таких продуктів помітні далеко не відразу і витрати на автоматизацію окупаються за тривалий період часу, що не дозволяє повністю відмовитися від тестування вручну.
Автоматизація тестування
Автоматизація не скорочує етап підготовки до тестування, а, навпаки, збільшує його, що може налякати недосвідченого керівника проекту, проте, як тільки буде випущена перша стабільна версія програми і стане можливим проведення регресійного тестування, переваги автотестування стануть очевидні. На моєму досвіді засоби автоматизації тестування дозволили скоротити терміни перевірки версії з п'яти робочих днів до двох - Автотест прогонялись вночі, а на наступний день аналізувався лог і виконувалося ручне тестування функціоналу, перевірка якого з ряду причин не автоматизовані.
Автоматизація тестування дозволяє якщо не уникнути, то значно зменшити синдром «замилений очі», коли тестувальник перестає помічати помилки при виході нових версій. Завдяки автоматизації можна не просто прискорити процес тестування, а й збільшити тестове покриття за рахунок більшої кількості перебираються комбінацій вхідних даних, що в свою чергу дозволяє знизити вимоги до кваліфікації розробників - з більшою ймовірністю їх помилки будуть виявлені на етапі тестування. Якщо раніше для того, щоб гарантувати, що з імовірністю 99% в програмі не буде критичних помилок, ми повинні були використовувати команду з 10 висококласних розробників, то тепер ми обходимося командою з 10 розробників, серед яких тільки 2-3 висококласних фахівця.
Продукція з автоматизації тестування можуть успішно застосовуватися не тільки в компаніях-розробників, але і в організаціях, які використовують готове ПО, - для них особливо актуальні засоби автоматизації тестування навантаження, що дозволяють робити прогнози (наприклад, як довго зможе функціонувати система на наявному обладнанні при запланованому зростанні бізнесу ?), оптимізувати конфігурацію (настройка серверів для підвищення продуктивності), знаходити помилки функціональності, пов'язані з роботою в розрахованому на багато користувачів режимі ( подібні помилки важко виявити на етапі функціонального тестування).
А навіщо компаніям, що надають послуги з тестування і розробки програмного забезпечення, пропагувати використання засобів автоматизації? Витрати на засоби автоматизації непорівнянні з можливими втратами від збоїв системи, викликаних як функціональними помилками, так і незадовільною продуктивністю, - економія на тестуванні призведе до втрат на етапі експлуатації подібного програмного забезпечення. Центр тестування компанії «Аплана» вже давно займається аутсорсингом функціонального і навантажувального тестування, і, виконавши безліч проектів з використанням різних засобів автоматизації, ми можемо з упевненістю сказати, що сьогодні немає одного інструмента, який повністю задовольнив би всіх замовників. Однак можна вибрати інструмент, який максимально відповідає поставленим вимогам.
вибір інструмента
Для функціонального тестування важлива підтримка конкретної середовища розробки, можливість побудови звітів про тестування, автоматична реєстрація виявлених дефектів, наявність сценаріїв відновлення (recovery-сценаріїв). Для інструментів навантажувального тестування потрібна підтримка протоколу, який використовується тестованим додатком, наявність вбудованих засобів моніторингу параметрів серверів, можливість гнучкого налаштування сценаріїв навантажувального тестування, наявність засобів аналізу результатів і побудови звітів про нагрузочном тестуванні.
Важливу роль при виборі інструментів тестування грає наявність документації та лінії технічної підтримки - сучасні інструменти тестування не менш складні, ніж кошти розробки. Слід звернути увагу і на наявність спеціалізованих форумів, присвячених засобам тестування, - існування форуму по конкретному інструменту і, головне, численної групи активних користувачів говорить про широку поширеність даного інструменту, що в подальшому допоможе швидше отримати відповідь на питання, що цікавить. Крім того, потрібно звертати увагу на можливість інтеграції інструментів тестування з програмним забезпеченням, яке використовується в компанії. Наприклад, якщо в компанії вже збудований процес розробки програмного забезпечення і в якості засобів автоматизації використовуються продукти IBM, то вибирати як інструмент тестування TestComplete, можливо, не найбільш вдала ідея.
Слід керуватися також вартістю інструментів тестування - якщо ви плануєте одноразове тестування, то купувати дорогі інструменти недоцільно. В якості альтернативи придбання ліцензій на інструментальні засоби тестування є оренда ліцензій (купівля тимчасових ліцензій), що зазвичай значно дешевше.
Ми вважаємо за краще працювати із засобами тестування компаній HP і IBM, хоча у нас є досвід використання інструментів інших виробників і власні кошти автоматизованого тестування. Перш ніж починати розробку автоматизованих тестів, ми виконуємо аналіз і готуємо звіт, на підставі якого замовник приймає рішення про те, який інструмент тестування йому більше підходить, проте часто зустрічаються ситуації, коли інструмент виділено заздалегідь. На мій погляд, практично кожну задачу можна вирішити за допомогою будь-якого інструменту тестування, проте трудомісткість і вартість рішення будуть сильно відрізнятися. Наприклад, якщо використовується інструмент автоматизації тестування не має власного відладчика скриптів, то розробка і налагодження скриптів збільшить на 30-40% час, необхідний на тестування. Відсутність коштів аналізу результатів і побудови звітів про тестування може призвести до втрати переваги автоматизації функціонального тестування перед тестуванням вручну - якщо час, який потрібен для аналізу результатів автоматизованого тестування, можна порівняти з часом, необхідним для проведення ручного тестування, то про вигоду говорити вже не доводиться.
Петро Можаєв ( [email protected] ) - керівник центру тестування компанії «Аплана» (Москва).
Засоби від IBM Rational
У процесі створення інформаційних систем нерідкі помилки і дефекти - це цілком очікуване і нормальне явище, а в умовах обмежених часових ресурсів і високих вимог до якості програмних продуктів неминуче виникає необхідність в організації ефективного контролю і управління всім процесом тестування. Контроль якості ПО неможливий сьогодні без автоматизації всіх завдань тестування.
IBM Rational Robot - універсальний засіб автоматизації тестування загального призначення для команд розробників, виконують функціональне тестування клієнт-серверних додатків. Дає можливість виявляти неполадки в ПО завдяки розширенню сценаріїв тестування засобами умовної логіки, що дозволяє цілком охопити тестоване додаток. Robot дозволяє створювати сценарії тестування з викликом зовнішніх бібліотек DLL або виконуваних модулів.
IBM Rational Performance Tester - інструмент навантажувального і стресового тестування, за допомогою якого можна виявляти проблеми системної продуктивності і їх причини. Дозволяє створювати тести без написання коду і не вимагаючи навичок програмування. Забезпечує гнучкі можливості моделювання і емуляції різних призначених для користувача навантажень. Виконує збір та інтеграцію даних про серверні ресурсах з даними про продуктивність додатків, які отримуються в режимі реального часу.
IBM Rational Functional Tester - набір засобів автоматизованого тестування, що дозволяють виконувати функціональне і регресійні тестування, тестування користувальницького інтерфейсу і тестування, кероване даними. Інструмент застосовує технологію ScriptAssure (безшовна перевірка достовірності динамічних даних) і функції пошуку відповідності за шаблоном, що дозволяють підвищити стійкість сценаріїв тестування в умовах частих змін користувальницьких інтерфейсів додатків. Тестировщики можуть вибрати мову сценаріїв для розробки і настройки тестів: Java в середовищі Eclipse або Microsoft Visual Basic .Net в середовищі Visual Studio .Net.
IBM Rational Quality Manager - рішення для реалізації процесів управління тестуванням і якістю, підтримує співпрацю учасників груп по розробці програмних продуктів, надаючи їм можливість обмінюватися інформацією, застосовувати засоби автоматизації для скорочення графіків виконання проектів, а також складати звіти за проектними показниками для прийняття обґрунтованих рішень. Rational Quality Manager може бути доповнений засобом управління ресурсами тестування Rational Test Lab, що забезпечує облік ресурсів тестування (серверів), їх бронювання, автоматизацію розгортання тестового середовища на сервері і запуск скриптів тестування, а також звітність по використанню ресурсів тестування.
Rational Quality Manager і Rational Test Lab створені на базі відкритої платформи Jazz, яка надає стандартні інтерфейси і зручні можливості для інтеграції з рішеннями партнерів та інших виробників.
спадщина Mercury
У листопаді 2006 року до складу компанії HP увійшла компанія Mercury Interactive - відома своїми розробками в області тестування, що дозволило істотно доповнити портфель рішень HP BTO Software (Business Technology Optimization).
HP QualityCenter - програмний продукт, що представляє собою інтегрований пакет інструментів на платформі Web, призначених для побудови і підтримки процесу тестування додатків, а також забезпечення тісної взаємодії команди з фахівців з тестування. Включає в себе модулі управління вимогами, релізами та циклами, тестові приклади, а також модуль тестування і аналітичний портал звітності.
HP QuickTest Professional - набір засобів автоматизації функціонального і регресивного тестування програмних систем, створених за допомогою основних платформ розробки. Продукт підтримує такі середовища, як Windows Presentation Foundation, Macromedia Flex, Ajax, Delphi, PowerBuilder, .Net, J2EE, забезпечує роботу з Web-сервісами, а також враховує особливості ERP- і CRM-додатків.
HP LoadRunner - програмний продукт для автоматизації тестування навантаження широкого набору програмних середовищ і протоколів. Підтримує SOA, роботу з Web-сервісами, Ajax, RDP, SQL, продуктами Citrix, платформи Java, .Net, а також всі основні ERP- і CRM-програми від PeopleSoft, Oracle, SAP і Siebel. Пакет HP LoadRunner включає в себе більше 60 моніторів збору даних про тестованої інфраструктурі і надає детальну діагностику по роботі додатків.
приклади
Засоби автоматизованого тестування активно застосовуються в практиці компанії «Аплана», допомагаючи, в ряді випадків істотно підвищити якість проекту.
Розробка системи автоматизованого функціональніх тестів (САФТА) і системи навантажувально тестів (СНТ) для корпоративного порталу одного з найбільшіх банків России. Кроме Виконання власне розробки для замовника нужно вібудуваті процес тестування и вібрато інструмент его управління. На вимогу замовника вибір БУВ обмеження інструментальнімі засоби компаний HP и IBM. Після проведення аналізу та отримання комплексної оцінки перевага була віддана продуктам HP QuickTest Professional (QTP) - функціональне тестування, HP LoadRunner (LR) і Quality Center (QC) - підтримка процесу тестування. Перевагою QTP була наявність можливості роботи з внутрішньою структурою Web-додатки (отримання повного доступу до властивостей і методів тестових об'єктів на рівні, що є у розробників додатка) і всебічна підтримка роботи з таблицями. Основна перевага LR складалося в наявності спеціального протоколу для тестування Web-додатків - web click & script. Цей протокол дозволяє записувати навантажувальні скрипти в вигляді взаємодії з елементами інтерфейсу (натискання на кнопки, вибір зі списків і т.п.), а не у вигляді відправки команд на сервер. Був розгорнутий і налаштований тестовий репозиторій, який використовувався не тільки для зберігання скриптів автоматизованого тестування і тест-кейсів, а й для урахування вимог і дефектів. Вбудовані звіти QC дозволяють швидко і наочно отримувати інформацію про покриття функціональності автоматизованими скриптами, а також відстежувати динаміку виявлення / виправлення дефектів.
Розробка системи автоматизованого функціонального тестування Web-сервісів і процедур для системи Internet-трейдингу одного з великих російських банків. Додаток мало забезпечити можливість передачі різних наборів даних тестованим Web-сервісів і збереженим процедурам, а також отримання вихідних даних і їх автоматичний аналіз (оцінювати правильність роботи Web-сервісів і процедур). На момент початку робіт на ринку ще не було коштів тестування Web-сервісів (наприклад, таких, як HP Service Test і IBM Rational Functional Tester), тому було прийнято рішення про розробку власної програми для проведення автоматизованого тестування Web-сервісів. В результаті була написана утиліта, яка давала можливість за допомогою спеціального файлу, що містить вхідні тестові набори даних і очікуваний результат роботи Web-сервісів і процедур, що зберігаються, викликати Web-сервіси і процедури з заданими тестовими даними, а також формувати власний лог-файл, в якому зафіксовані всі розбіжності, виявлені під час тестування. Важливо відзначити, що аналіз результатів, отриманих в ході функціонального тестування, не зайняв багато часу, оскільки вся необхідна інформація з заданим рівнем деталізації вже містилася в лог-файлі, який міг бути відразу ж переданий розробникам Web-сервісів і збережених процедур і не вимагав додаткової модифікації або редагування. Якби даний проект виконувався зараз, то, найімовірніше, вдалося б скористатися існуючими продуктами.
Наприклад, як довго зможе функціонувати система на наявному обладнанні при запланованому зростанні бізнесу ?А навіщо компаніям, що надають послуги з тестування і розробки програмного забезпечення, пропагувати використання засобів автоматизації?