Agile Test Automation Framework

⚡ Розумний підсумок

Гнучка автоматизація тестування застосовує автоматичні перевірки в межах коротких спринтів, де вимоги змінюються щотижня, а набір, створений для стабільного каскадного випуску, швидко стає тягарем для обслуговування, а не захисною сіткою.

  • 🔘 Напруження ядра: Автоматизація винагороджує стабільність, тоді як Agile винагороджує зміни, тому вибір тестів має більше значення, ніж охоплення.
  • ☑️ Контраст водоспаду: Традиційна автоматизація передбачає стабільну роботу програми, досвідчених скриптерів та високу вартість налаштування.
  • Sprint реальність: Спринт тривалістю від одного до чотирьох тижнів рідко підходить для проектування, кодування та перевірки великих скриптів.
  • 🧪 Не дослідницьке: Автоматизовані тести підтверджують відому поведінку; вони не виявляють нових та інноваційних дефектів.
  • 🛠️ Вибір інструменту: Обмежувальні ліцензовані інструменти суперечать відкритій співпраці, від якої залежать Agile-команди.
  • 📈 Найкраще підходить: Повторювані регресійні перевірки з великим обсягом даних та чіткими результатами «зараховано» або «не зараховано» добре автоматизуються.

Agile Test Automation Framework

Гнучке автоматизоване тестування

Гнучке автоматизоване тестування – це практика використання автоматизації тестування в рамках Agile-процесу розробки. Її мета – зробити розробку програмного забезпечення ефективнішою та результативнішою, одночасно захищаючи якість та контролюючи час і ресурси, які споживає реліз. Оскільки тести пишуться одночасно з роботою над функціями, ця практика значною мірою залежить від координації між розробниками та тестувальниками.

Відтоді, як Agile-методологія вирішила позбутися трудомістких реалій каскадної моделі, її вплив відчувався в тестування автоматизації також. Ці дві дисципліни мають бути свідомо поєднані:

Agile плюс автоматизація поєднуються в автоматизацію в Agile

Автоматизація у каскаді проти автоматизації в Agile

У традиційному життєвому циклі тестування програмного забезпечення автоматизоване тестування стає можливим після того, як додаток... стабільний, а вимоги врегульованіЦе передбачає значна кількість часу, висококваліфікованих спеціалістів з автоматизації та помітні витрати на налаштування. Основна мета полягає в тому, щоб знизити витрати в довгостроковій перспективі та підтвердити, що навколо існуючих тестових випадків не було внесено нових дефектів.

Автоматизоване тестування не є дослідницьким за своєю природою, оскільки його головна роль полягає в економії часу та зниженні витрат. Воно не призначене для виявлення нових та інноваційних дефектів. Автоматизоване тестування здебільшого підтверджує вже існуючу поведінку.

Таким чином, ці два параметри висувають дуже різні вимоги до набору тестів:

Фактор Автоматизація у водоспаді Автоматизація в Agile
Стан програми Стабільний та підписаний перед початком написання скриптів Змінюються кожен спринт, часто під час написання скриптів
Доступний час Спеціальний етап автоматизації Все, що вміщується в межах одного-чотирьох тижнів спринту
Хто скрипти Окрема команда спеціалістів з автоматизації Команда розробників, тестувальники та розробники разом
Первинна мета Довгострокове зниження витрат у великому наборі регресійних алгоритмів Швидкий відгук про щойно створений інкремент
Ризик технічного обслуговування Низький, оскільки вимоги змінюються повільно Високий, оскільки вимоги постійно змінюються

Як автоматизувати в Agile-методології

За власним визначенням, методологія Agile позбавляється виснажливої ​​документації, щоб нові ідеї можна було швидко впроваджувати, а люди могли вільно взаємодіяти. Вона надає перевагу дослідницькій роботі над паперовою роботою:

Agile відкидає виснажливу документацію та надає перевагу дослідницькому тестуванню

Існує реальне протиріччя між фундаментальними філософіями методології Agile та автоматизованого тестування. Команди Agile вирішують його, звужуючи те, що вони автоматизують, а не автоматизуючи менше: перевірки пишуться в тому ж спринті, що й функція, переносяться на рівень модуля та API, де їх найдешевше підтримувати, і виконуються на кожній збірці.

Фундаментальні моменти гнучкої автоматизації тестування

Перш ніж передати можливості спринту автоматизації, зважте моменти, які визначають, чи взагалі можна завершити скрипт:

  • Час проектування та написання коду: Кожен скрипт має бути розроблений, закодований та перевірений, як продакшн-код.
  • Перевірка на основі тестових даних: Готовий скрипт має бути перевірений на відповідність існуючим тестовим даним, перш ніж йому можна буде довіряти.
  • Мета тесту: Функціональні та регресійні тести мають різні витрати на обслуговування та різні терміни придатності.
  • Sprint довжина: Спринт триває від одного до чотирьох тижнів, найчастіше два, що рідко залишає місце для великих зусиль на написання сценаріїв.

Другим фактором є зміна вимог. Agile, за визначенням, є методом реагування на зміни, викликані клієнтом, тому він допускає часте коригування протягом розробки.

Автоматизоване тестування, навпаки, найбільш корисне для стабільних вимог. Воно погано підходить для постійної зміни Agile-методології, тому вибір того, що автоматизувати, має більшу вагу, ніж обсяг автоматизації.

Гнучкі інструменти автоматизації

Вибір відповідного інструмент автоматизації є ще одним важливим фактором у впровадженні автоматизованого тестування в рамках Agile-методології. Ліцензовані інструменти автоматизації, наприклад, встановлюють суворі критерії безпеки доступу для різних типів та рівнів користувачів, що обмежує доступ до ресурсів, що належать до цієї системи автоматизації тестування.

Ліцензовані інструменти автоматизації блокують ресурси, тоді як методологія Agile залишається менш обмежувальною

Гнучка методологія, навпаки, наголошує на відкритій співпраці та взаємодії між членами команди без обмежень. Політика обмеженого доступу суперечить цій єдності та може призвести до результатів, які не є ні корисними, ні сприятливими для успіху проекту.

Пріоритетом є надання якісних сценаріїв автоматизації в межах часу, відведеного Agile-процесом. Ретельно вибирайте тестові випадки, щоб отримані сценарії можна було використовувати повторно пізніше та все одно завершити їх у відведений час.

Навіть в умовах Agile деякі тести все одно необхідно охопити, зокрема регресійні тести. У наступному розділі розглядаються ситуації, коли підходить автоматизоване тестування, і як кожне з них відображається на Agile-тестуванні.

Тестування автоматизації Concepts У застосуванні до Agile

У таблиці нижче наведено сім класичних умов, які виправдовують автоматизацію тестування, та наведено Agile-відповідь для кожної з них. Лише три з них можна чітко перевести в Agile-спринт, і всі три мають форму регресії:

# Концепція автоматизованого тестування Відповідь щодо гнучкої методології
1 Тест необхідно часто повторювати. Саме тут і виникає концепція регресійного тестування.
2 Робочий процес тестування та його перевірка розвиваються та змінюються повільно з часом. Не корисно для гнучкого тестування, оскільки гнучке тестування означає часті зміни вимог.
3 Тест перевіряє бізнес-процес або робочий процес, а не зовнішній вигляд, колір чи макет таблиці. Цей сценарій можна розглядати як пов'язаний з ручним тестуванням.
4 Результати тесту надаються регуляторному органу, який вимагає, щоб ці результати були записані та архівовані в електронному вигляді як офіційне підтвердження відповідності. Не підходить для Agile-методології, оскільки вичерпний рівень документації не є частиною Agile-методології.
5 Тест дуже повторюваний або має багато кроків, які необхідно виконувати однаково щоразу, де необхідно уникати втоми тестувальника вручну. Не підходить для Agile-методології.
6 Результат проходження або непроходження тесту досить легко визначити та зафіксувати за допомогою вибраного інструменту автоматизації. Підходить для тих регресійних тестів під час гнучкого тестування, які вимагають повторюваних та трудомістких навичок.
7 Тест повинен завантажувати значну кількість даних у застосунок. Може бути включено як регресійне тестування.

Сім концепцій автоматизованого тестування у поєднанні з відповідними відповідями щодо методології Agile

Поширені запитання

Правило нашарування: багато швидких модульних тестів в основі, менше інтеграційних та API-тестів посередині, і тонкий шар наскрізних інтерфейсних тестів зверху. Це забезпечує швидке та дешеве обслуговування набору програм розміром зі спринт.

Автоматизовані перевірки для історії пишуться в тому ж спринті, що й сама історія. Команди зазвичай починають перший спринт з модульних тестів, оскільки очікування, поки продукт стане достатньо стабільним, створює запас боргів з ручного тестування.

Розташуйте етапи відповідно до піраміди. Спочатку виконуються модульні тести, оскільки вони найшвидші, потім інтеграційні та API-тести, а потім невеликий наскрізний набір. Спочатку помилки виникають на найдешевшому рівні. Guru99 охоплює механіку в безперервна інтеграція.

Найчастіше тому, що піраміда перевернута — значні інвестиції в повільні, крихкі тести інтерфейсу користувача і майже жодні на рівні юнітів. Інші причини — автоматизація, що не враховується в оцінках історій, і набори, яким ніхто не довіряє настільки, щоб блокувати реліз.

Вся команда розробників. Розробники відповідають за модульні тести, тестувальники — за API та наскрізні шари, і обидва перевіряють роботу один одного. Окрема команда автоматизації нижче за течією знову вводить затримку передачі, яку Scrum має усунути.

Виключіть його з блокуючого конвеєра, виявіть дефект та виправте або видаліть його в межах спринту. Залишення ненадійного тесту в основному запуску навчить команду ігнорувати червоні збірки, що коштує дорожче, ніж відсутнє покриття.

Самовідновлювальні локатори повторно ідентифікують переміщений елемент з його контексту, замість того, щоб виходити з ладу, що зменшує кількість збоїв, спричинених обслуговуванням. Моделі також генерують тестові дані, пріоритезують тести для виконання з різницею (diff) та кластеризують дублікати збоїв, щоб команда спринту проводила сортування один раз.

Він швидко їх чернетки складає. Копілот GitHub створює об'єкти сторінок, фікстури та твердження з існуючого коду, що видаляє значну частину typing. Revпереглядати кожен черновик, оскільки згенерований тест може стверджувати поточну поведінку, а не необхідну.

Підсумуйте цей пост за допомогою: