Автоматизація тестування програмних систем, savepearlharbor
На сьогоднішній день мало хто сумнівається в доцільності проведення процесу тестування розроблюваних програмних продуктів. Метою будь-якого проекту з тестування є забезпечення якості продукту, що розробляється. Автоматизація підвищує ефективність тестування і, отже, покращує якість створюваного програмного забезпечення (ПО). Основне завдання статті - створити у Новомосковсктеля досить чітку картину того, що собою являє автоматизація тестування.
Основні поняття
Перше, з чого мені хотілося б почати - це освіжити у вашій пам'яті основні терміни і поняття, які будуть використані в даній статті в подальшому:
види тестування
Трохи розібравшись з основними поняттями, пропоную вам розглянути і основні види тестування:
• Першим пунктом в цьому списку стоїть тестування навантаження. Без автоматизації його виконання важко собі уявити (програмними продуктами імітується навантаження наступним чином: підключаються віртуальні користувачі, які виконують різні скрипти (дії), за різними сценаріями.);
• Слідом йде регресійне тестування. Помилки, які виникли після внесення змін до програми називають регресійний помилками (англ. Regression bugs). Виконується з регулярною частотою, що задається в залежності від багатьох умов: може проводитися з кожною новою збіркою проекту або з кожною версією для замовника;
• Функціональне тестування проводиться з метою перевірки можливості бути реалізованим функціональних вимог, тобто здатності ПО в певних умовах вирішувати завдання, потрібні користувачам. (Одна з основних завдань автоматизації регресійного \ функціонального тестування полягає в тому, щоб уберегти проект від регресійної спіралі смерті.)
Переваги та недоліки автоматизованого тестування
Але чи все так добре і красиво, як описано вище? Для відповіді на ці питання, пропоную «зважити всі за і проти», щоб зробити для себе відповідні висновки.
переваги:
• Виключений «людський фактор» під час виконання: тест-скрипт не допустить помилки з необережності;
• Швидке виконання;
• Автоматично формуються і зберігаються звіти про результати тестування;
• Виконання в тлі - під час виконання тестів можна займатися іншими завданнями або виконувати тест-скрипти в неробочий час.
недоліки:
• Однотипність - всі написані тести завжди будуть виконуватися строго за алгоритмом, реалізованому в них, в той час як тестувальник, виконуючи тест вручну, може звернути увагу на деякі деталі і знайти дефект. (Наприклад, після чергового оновлення проекту на формі операції було додано необов'язкове поле, але розробник припустився помилки і формат даних для введення виявився невірним. Під час функціонального \ регресійного тестування програми тест-скрипт відпрацює без помилок, тому що в його алгоритмі взаємодія з цим полем не реалізоване.);
• Витрати на підтримку - чим частіше змінюється додаток, тим вони вищі. (В результаті доопрацювань конкретний функціонал може змінюватися, що призведе до часткової або повної непридатності тест-скриптів. Перед фахівцем з автоматизованого тестування постане завдання привести тест-скрипт (и) до актуального стану.);
• Великі витрати на розробку тестового каркаса для конкретного проекту (фактично йде розробка програми, яка тестує інше).
Впровадження автоматизованого тестування
Перш, ніж замислюватися про впровадження автоматизації тестування, необхідно переконатися, що процес контролю якості на ваших проектах збудований, документований і працює як годинник. Пам'ятайте, що впровадження автоматизації - це не данина моді. Це завдання, покликана підняти контроль якості на вашому проекті на новий рівень, через що підвищується ефективність тестування проекту (без додаткового головного болю).
Другим кроком буде звернення до фахівців, які допоможуть Вам поставити процес автоматизації на професійному рівні і в стислі терміни. Безсумнівно, можна пробувати розвивати напрямок власними силами, але без досвідчених фахівців цей процес, ймовірно, виллється в істотні терміни, буде проходити методом проб і помилок, торкнеться більший бюджет, і, в кінцевому підсумку, цілком може і зовсім відбити у вас все бажання застосовувати автоматизоване тестування.
При впровадженні на проекти автоматизації тестування «з нуля», в більшості випадків рекомендується розробка фреймворка. Даний підхід дозволить вашим фахівцям самостійно допрацьовувати фреймворк і розвивати покриття тест-скриптами. На сьогоднішній день це найбільш технологічно просунуте рішення по співвідношенню ціна / трудовитрати / ефективність.
До особливостей такого фреймворка можна віднести:
• Максимальна повторна використовуванність коду: фактично створюється API, який забезпечує управління процесом виконання;
• Застосування методик Data Driven (тестування по одному і тому ж сценарію, що проводиться при різних наборах і / або значень вихідних даних);
• Всі сценарії тестування (test cases) і пакети запуску (test suites) також описуються в зовнішніх файлах що дозволяє легко управляти параметрами запуску;
• Фреймворк володіє максимальною гнучкістю: ви можете легко додавати, видаляти, редагувати існуючі сценарії тестування і пакети запуску, при цьому для даної задачі не потрібно додаткової кваліфікації, необхідно лише вміння працювати з фреймворком;
• У систему легко можуть бути додані нові операції, або змінені існуючі; при цьому не потрібно будь-яких складних дій, необхідно буде тільки написати нову функцію. Це дозволяє легко і безболісно розширювати сам фреймворк;
• Для багатьох відділів тестування дане рішення може виявитися панацеєю, тому що за результатами розробки фреймворка і проведення короткого навчання роботі з ним, вимоги до кваліфікації фахівців, що покривають систему авто тестами, істотно знижується, досить навичок роботи XML.
Наостанок варто відзначити, що метою автоматизації є підвищення ефективності процесу (в даному випадку тестування) за рахунок вивільнення фахівців і, отже, зменшення витрат.
При розгляді питання автоматизації варто пам'ятати про витрати на впровадження. Більшість засобів автоматизації тестування є платними, крім того, потрібні додаткові затрати праці на адаптацію. Пошук балансу між ручним і автоматизованим тестуванням будь-якого програмного продукту є важливим завданням підрозділу тестування в будь-якій організації.