Що таке регресійне тестування?
Що таке регресійне тестування?
Регресійне тестування визначається як тип тестування програмного забезпечення для підтвердження того, що нещодавня зміна програми чи коду не вплинула негативно на наявні функції. Ми також можемо сказати, що це не що інше, як повний або частковий вибір уже виконаних тестів, які повторно виконуються, щоб переконатися, що існуючі функції працюють нормально.
Цей тип тестування проводиться для того, щоб переконатися, що нові зміни коду не мають побічних ефектів на існуючі функції. Це гарантує, що старий код продовжує працювати після внесення останніх змін у код.
Чому регресійне тестування?
Процес регресійного тестування є важливим у сфері тестування. Оскільки він може визначити, чи зміни коду чи вдосконалення вносять нові дефекти чи порушують існуючі функціональні тести.
Без процесу регресійного тестування навіть незначні зміни коду можуть призвести до дорогих помилок. Таким чином, це систематична практика, яка допомагає підтримувати якість програмного забезпечення. Цей метод допомагає запобігти повторенню відомих проблем і підвищує довіру до програмного забезпечення.
Коли ми можемо виконувати регресійне тестування?
Ось сценарії, коли можна застосувати процес регресійного тестування.
У додаток додано новий функціонал: Це трапляється, коли в програмі чи на веб-сайті створюються нові функції чи модулі. Регресія виконується, щоб побачити, чи наявні функції працюють як зазвичай із впровадженням нової функції.
У разі зміни вимоги: Коли в системі відбуваються будь-які значні зміни, використовується регресійне тестування. Цей тест виконується, щоб перевірити, чи ці зміни вплинули на наявні функції.
Після усунення дефекту: Розробники проводять регресійне тестування після виправлення помилки в будь-якому функціоналі. Це робиться, щоб визначити, чи зміни, внесені під час виправлення помилки, вплинули на інші пов’язані існуючі функції.
Після усунення проблеми з продуктивністю: Після усунення будь-яких проблем із продуктивністю запускається процес регресійного тестування, щоб перевірити, чи вплинуло це на інші існуючі функціональні тести.
Під час інтеграції з новою зовнішньою системою: Процес наскрізного регресійного тестування необхідний щоразу, коли продукт інтегрується з новою зовнішньою системою.
Як виконати регресійне тестування в програмному тестуванні
Як ми обговорювали раніше, регресійне тестування запускається на основі будь-яких змін, внесених у програмне забезпечення. Це може бути виправлення помилок, інтеграція нових функцій тощо. Кожного разу, коли така робота відбувається, команда QA виконує такі дії, наведені нижче. Ці завдання виконуються до початку циклу виконання регресійного тесту.
- Обговоріть із командою розробників конкретні модулі та бібліотеки, яких торкалися під час змін
- Обговоріть із власником продукту зміни в новій функції та дізнайтеся, як вони впливають на інші функції.
- Визначте тести з існуючого набору тестів, які повинні виконати тестувальники, щоб відновити наявні функції.
Для ефективного забезпечення якості програмного забезпечення можна застосувати різні методи регресійного тестування:
Повторно перевірити все
Це один із методів регресійного тестування, зокрема із застосуванням набору регресійних тестів. У цьому випадку всі тести в наявному тестовому сегменті або наборі потрібно виконати повторно. Це дорогий спосіб, оскільки вимагає багато часу та ресурсів.
Вибір тесту регресії
Вибір регресійного тесту — це техніка, за якої виконуються деякі вибрані тести з набору тестів. Це допомагає перевірити, чи впливає змінений код на програмне забезпечення чи ні. Тут тестові випадки поділяються на дві частини. Повторно використовувані тестові випадки можна використовувати в наступних циклах регресії, тоді як застарілі тестові випадки не можна використовувати в наступних циклах.
Пріоритезація тестових випадків
Пріоритезація тестових випадків залежить від впливу на бізнес, критичності та часто використовуваних функціональних тестів. Крім того, пріоритезація тестових випадків на основі пріоритету значно зменшує зусилля при виконанні регресійних тестів.
Вибір тестів для регресійного тестування
За галузевими даними було виявлено, що велика кількість дефектів, про які повідомили клієнти, були спричинені виправленнями помилок в останню хвилину. Це призвело до побічних ефектів, отже, вибравши Тестові випадки для регресійного тестування непросте завдання.
Ефективний набір регресійних тестів можна створити, вибравши такі типи тестів:
- Тестові випадки з функціональних можливостей/модулів, які мають часті дефекти.
- Функції, які більш помітні користувачам
- Тестові випадки, які перевіряють основні характеристики продукту
- Тестові приклади функцій, які зазнали останніх змін.
- Усі інтеграційні повтори
- Усі складні тестові випадки
- Тестові випадки граничних значень
- Вибраний щасливий шлях і негативні тести
Інструменти регресійного тестування
Якщо ваше програмне забезпечення зазнає частих змін, витрати на регресійне тестування зростатимуть. Оскільки ручне виконання тестів збільшує час виконання тесту, а також витрати. Автоматизація тестів регресії є розумним вибором у таких випадках. Ступінь автоматизації залежить від кількості тестів, які залишаються придатними для повторного використання для послідовних циклів регресії.
Нижче наведено найважливіші інструменти, які використовуються як для автоматизації функціональних, так і регресійних тестів у розробці програмного забезпечення:
1) testRigor
testRigor допомагає вам безпосередньо виражати тести як виконувані специфікації простою англійською мовою. Користувачі з будь-якими технічними можливостями можуть створювати наскрізні тести будь-якої складності, що охоплюють етапи мобільного, веб-інтерфейсу та API. Етапи тестування виражаються на рівні кінцевого користувача, а не покладаються на деталі реалізації, такі як XPaths або CSS Selectors.
Особливості гри:
- Назавжди безкоштовна публічна версія
- Тестові приклади англійською мовою
- Необмежена кількість користувачів і необмежена кількість тестів
- Найпростіший спосіб навчитися автоматизації
- Реєстратор веб-кроків
- Інтеграція з CI/CD і управління тестами
- Тестування електронної пошти та SMS
- Веб + мобільний + API в одному тесті
Selenium: Selenium це найбільш використовуваний інструмент з відкритим кодом, який використовується для автоматизації веб-додатків. Selenium можна використовувати для регресійного тестування на основі браузера. Він підтримує такі мови програмування, як Java, Рубі, Python, І т.д.
Quick Test Professional (QTP): HP Quick Test Professional — це автоматизоване програмне забезпечення, призначене для автоматизації функціональних і регресійних тестів. Він використовує мову VB Script для автоматизації. Це керований даними інструмент на основі ключових слів.
Rational Functional Tester (RFT): IBMРаціональний функціональний тестер - це a Java інструмент, що використовується для автоматизації тестових прикладів програмного забезпечення. Це в основному використовується для автоматизації регресійних тестів, а також інтегрується з Rational Test Manager.
Види регресійного тестування
Ось різні види регресійного тестування:
1) Тестування одиничної регресії (URT)
Це дуже цілеспрямований підхід, коли регресійному тесту підлягає лише змінена ділянка, а не область впливу. Таким чином, інші частини модуля залишаються незмінними.
Приклад
Як Наприклад, у збірці 1 було виявлено проблему, про яку повідомлено розробнику.
Скажімо, це була помилка у функції входу. Тож розробник виправляє це, додає виправлення помилок у Build 2 і надсилає його. Команда тестувальників перевіряє лише те, чи функція входу працює належним чином, замість перевірки інших функцій.
2) Регіональне регресійне тестування (RRT)
У регіональному регресійному тестуванні перевіряються області модифікації та впливу. Ця область перевіряється, щоб з’ясувати, чи можуть зміни вплинути на будь-які надійні модулі.
приклад: У цьому прикладі в першій збірці модулі A, B, C і D розробник відправляє на тестування. Тестер знаходить помилки в модулі B, тому додаток повертається розробнику для виправлення помилок.
Коли розробник виправляє помилки в другій збірці в модулі B, він знову надсилається інженеру-випробувачу. Інженер-випробувач дізнається, що фіксація модуля B вплинула на A і C.
Отже, тестер перевіряє модифікації модуля B у другому випуску. Потім перевіряє також області впливу в A та C, щоб визначити, як на них вплинуло.
Примітка: Під час регресійного тестування може виникнути ця проблема, наведена нижче.
Проблема:
- У збірці 1 клієнти зазвичай просять зміни, модифікації та додаткові функції.
- Потім цей запит надсилається групі розробки та тестування.
- Потім команда розробників вносить зміни. Далі інженер-випробувач надсилає клієнту електронний лист, інформуючи його про області, на які вплине модифікація.
- Потім керівник тестування збирає список уражених областей від клієнта, розробників і відділу тестування.
- Потім список впливу надсилається інженерам-випробувачам, які починають регресійне тестування.
Цей тип методу тестування створює прогалини в спілкуванні. Розробники та клієнти не завжди можуть повернутися до електронних листів; отже, немає належного огляду зони впливу.
Рішення: Щоб усунути цю проблему, команда тестувальників може організувати зустріч, коли надходить нова збірка після виправлення помилок, нових функцій і модифікацій. На цій зустрічі буде обговорено, чи вплинуть модифікації на модулі.
Буде проведено тестовий раунд для виявлення впливу, щоб вони могли створити список впливу. Тестовий провод додає до цього списку максимальну кількість ділянок у зоні впливу.
Ось як виглядатиме процес:
- «Тест верифікації збірки» для перевірки основних можливостей програми.
- Тестування всіх нових функцій.
- Вивчення змінених або модифікованих функцій.
- Перетестування помилок.
- Потім, нарешті, аналіз зони впливу за допомогою тестування регіональної регресії.
3) Повне регресійне тестування (FRT):
Це тестування охоплює всі функції програми. Повне регресійне тестування зазвичай виконується в пізніших версіях. Таким чином, ви можете використовувати FRT після перших кількох випусків і як останній тест перед запуском.
У другій або третій збірці клієнт або власник бізнесу може попросити внести зміни. Вони також можуть вимагати нових функцій і/або повідомляти про дефекти. Потім команда випробувачів проводить аналіз впливу, вносить усі зміни та виконує остаточне повне випробування продукту.
Наприклад, четверта збірка є останнім випуском перед запуском. Отже, у цій збірці команда тестувальників виконує повне або повторне тестування продукту, а не лише зону впливу чи функцію. Це робиться після модифікацій і тестів у збірках 4, 1 і 2.
Щоб виконати повне регресійне тестування, необхідно врахувати такі обставини:
- Зміни вносяться до основних компонентів програми. Наприклад, якщо є модифікація в кореневому файлі програми або основних модулів, то всю програму потрібно регресувати. Якщо внесено численні зміни.
4) Корекційне регресійне тестування:
Це тестування проводиться, коли до функцій не вносяться жодні зміни. Такі тести можна проводити з наявними справами.
5) Перевірте всі регресійні тести:
У цій формі тестування всі зміни від незначних до значних, внесені в програму з початкової версії або збірки 1, перевіряються повторно.
Це тестування проводиться, коли всі інші регресійні тести не можуть визначити першопричину проблем.
6) Вибіркове регресійне тестування:
Це робиться, щоб перевірити, як код реагує, коли до програми додається новий код. Для проведення цього тесту використовується піднабір із наявних випадків, щоб зробити його ефективним і рентабельним. Критерії для вибору підмножини базуються на модифікованих модулях коду, залежностях, критичності функціональних можливостей, які зазнали впливу, і даних про історичні дефекти.
7) Прогресивне регресійне тестування:
Цей тип регресійного тестування дає важливі результати, коли в програму вносяться певні зміни та створюються нові тести.
Це допомагає гарантувати, що жодні компоненти зі старих версій не вплинули на останню версію.
8) Тестування часткової регресії:
Тестування часткової регресії використовується для перевірки того, що нові зміни або вдосконалення коду не впливають негативно на наявні функції. Однак, на відміну від повного регресійного тесту, який включає повторне тестування всієї програми, у частковому регресійному тестуванні ми зосереджуємося лише на окремих частинах програмного забезпечення, на які вплинули останні зміни.
Таким чином, основна мета часткового регресійного тестування — заощадити час і ресурси, уникаючи повторного тестування незмінених частин програми. Тестові випадки для часткового регресійного тестування ретельно відбираються на основі аналізу впливу змін коду. Визначення правильних тестів для включення в набір тестів часткової регресії має вирішальне значення. Пропущені критичні тестові випадки можуть призвести до проблем, які не враховуються.
Автоматизоване регресійне тестування
Як згадувалося раніше, автоматизація регресійних тестів необхідна, коли існує кілька випусків. Він також необхідний для кількох циклів регресії та численних повторюваних дій. Оскільки виконання кількох циклів тестування для випусків займає дуже багато часу.
Однак за допомогою автоматизації ви можете перевірити кілька разів. Це вимагає написання тестових сценаріїв автоматизації для виконання, що вимагає відповідного планування та проектування. У такому тестуванні команда не може почати безпосередньо з автоматизації. Тому нам потрібно залучити команди ручного тестування та автоматизованого тестування, щоб охопити цю сферу. Ось як виконується автоматичне регресійне тестування:
Крок 1) Команда ручного тестування перевіряє всі вимоги та визначає область впливу. Після цього процесу вони пересилають тестовий пакет вимог групі автоматизації або інженеру автоматизації.
Крок 2) Команда ручного тестування починає тестування нових модулів, а група автоматизованого тестування пише сценарій і автоматизує тестовий приклад.
Крок 3) Перш ніж використовувати цей метод регресійного тесту, команда автоматизації визначає, які випадки підтримуватимуть автоматизацію.
Крок 4) Вони перетворюють ці регресійні тести на сценарії залежно від того, які випадки можна автоматизувати.
Крок 5) Під час процесу створення сценаріїв команда автоматизації звертається до тестових випадків регресії. Вони роблять це, оскільки можуть не володіти ні продуктом, ні знаннями про інструменти та програми.
Крок 6) Коли сценарії тестування буде завершено, команда автоматизації виконає їх у новій програмі.
Крок 7) Після виконання результат інформує про те, чи був тест пройдено чи не пройдено.
Крок 8) Якщо тест не вдається, він повторно перевіряється за допомогою методу ручного тестування, і якщо проблема існує, про це повідомляється відповідному розробнику.
Примітка: Після усунення помилки проблема та область впливу надсилаються ручному тестеру для повторного тестування, а команда автоматизації повторно виконує сценарій.
Крок 9) Цей процес триває, доки всі щойно додані функції регресії не отримають статус «Пропущено».
Ось переваги автоматизованого регресійного тестування:
- Багаторазові: Його тестові сценарії можна повторно використовувати в кількох випусках.
- Точність: Інструменти автоматизації виконують завдання з резервуванням, зменшуючи ймовірність помилки.
- Економить час: Це швидше, ніж процес ручного функціонального тестування, і економічно витрачає час.
- Пакетне виконання: Можливе виконання всіх скриптів одночасно і паралельно в автоматизованому тестуванні.
- Збільшення ресурсу не вимагається: Тест регресії обов’язково зростатиме з кожним новим випуском. Однак вам не потрібно додавати нові ресурси для автоматизації.
Як вибрати тестові випадки для регресійного тестування?
Ось як ви можете вибрати правильний випадок для регресійного тестування.
- Зрозумійте обсяг змін і визначте частини програми, які були змінені, додані або виправлені. Потім ви можете зосередитися на цих областях для регресійного тестування.
- Майте пакет, який охоплює критичні функції та підтримує їх як базовий рівень для регресійного тестування. Як обговорювалося раніше, настійно рекомендується автоматизувати ці тести.
- Визначте пріоритетність тестів на основі критичності функціональності, впливу на кінцевого користувача та даних про історичні дефекти.
Найкращі методи регресійного тестування
Нижче наведено кілька основних практик, яких слід дотримуватися під час проведення регресійних тестів.
Автоматизуйте всюди, де це можливо
Автоматизоване регресійне тестування зменшує зусилля на тестування та дозволяє швидко виконувати велику кількість тестів.
Безперервна інтеграція
Включення регресійного тестування в конвеєри CI/CD гарантує автоматичний запуск тестів щоразу, коли в кодову базу вносяться зміни.
Вибір тестового випадку
Визначайте та підтримувайте підмножину тестових випадків, які представляють основні функції та зони високого ризику. Ви також можете вибрати ті, які безпосередньо стосуються внесених змін, оскільки виконання всіх попередніх тестів може бути непрактичним.
Регулярне виконання
Регулярно виконуйте регресійні тести, особливо після кожної зміни коду. Це допомагає виявити проблеми на ранніх етапах процесу розробки.
Управління тестовими даними
Переконайтеся, що тестові дані, які використовуються для регресійних тестів, є послідовними та керованими, оскільки проблеми, пов’язані з даними, можуть вплинути на результати тестування.
Управління навколишнім середовищем
Підтримуйте послідовне та відтворюване тестове середовище. Це включає використання тих самих операційних систем, браузерів і конфігурацій пристроїв, що використовуються у виробництві.
Дефекти запису та відстеження
Будь-які дефекти, виявлені під час регресійного тестування, слід реєструвати, відстежувати та керувати ними. Розташуйте їх вирішення залежно від серйозності.
Багаторазовість
Створюйте багаторазові тестові сценарії та тестові дані, щоб зменшити дублювання та покращити технічне обслуговування.
Регресійне тестування та керування конфігурацією
Керування конфігурацією під час регресійного тестування стає обов’язковим у гнучких середовищах, де код постійно змінюється. Щоб забезпечити ефективність регресійних тестів, дотримуйтеся наступного:
- Код, що перевіряється на регресію, має бути під засобом керування конфігурацією.
- Не можна допускати жодних змін у коді під час фази тестування регресії. Код тесту регресії має бути захищений від змін розробником.
- База даних, яка використовується для регресійного тестування, має бути ізольованою. Не можна допускати жодних змін у базі даних
Різниця між повторним і регресійним тестуванням
Повторне тестування означає повторне функціональне тестування дефекту або помилки, щоб переконатися, що код виправлено. Якщо це не виправлено, дефект потрібно знову відкрити. Якщо виправлено, дефект закрито.
Регресійне тестування означає перевірку вашого програмного забезпечення під час його зміни коду. Це робиться для того, щоб новий код не вплинув на інші частини програмного забезпечення.
Нижче наведено основні відмінності між цими двома тестами:
Перевірка | Регресійне тестування |
---|---|
Він створений спеціально для виправлення дефектів. | Регресійне тестування проводиться головним чином для того, щоб перевірити, чи вплинули зміни коду на інші функції. |
Повторне тестування не перевіряє інші версії, а лише перевіряє, чи відновлено пошкоджені функції. | Зосереджується на попередніх версіях і перевіряє, чи попередні функції досі працюють належним чином. |
Кожен тест є специфічним | Регресія є загальним тестом. |
Це тестування для невдалих тестів. | Це для успішних випадків. |
Він перевіряє конкретні дефекти, тому не може бути автоматизованим. | Може бути автоматизований. Також настійно рекомендується автоматизувати, як ми обговорювали раніше. |
Повторне тестування не завжди є частиною циклу тестування, оскільки воно потрібне лише тоді, коли виявлено помилки. | Регресія завжди є частиною тестування, оскільки щоразу, коли змінюється код, цей тест потрібно проводити, щоб зрозуміти, чи стабільна функціональність продукту. |
Це тестування з високим пріоритетом, оскільки воно зосереджується на відомих проблемах. | Це тестування з низьким пріоритетом, оскільки це загальне тестування можливих дефектів. |
Це тестування не займає багато часу, оскільки воно працює на конкретному дефекті. | Оскільки це стосується великої області програмного забезпечення, це вимагає багато часу. |
Він визначає дефекти з тими самими даними та середовищем з іншим входом і новою версією. | Це тестування може отримати випадки з посібників користувача, звітів про дефекти та функціональних специфікацій. |
Повторне тестування не може бути проведене без першого тестування. | Це робиться, коли в існуючий проект обов'язкові зміни та доопрацювання. |
Також перегляньте повний список відмінностей тут.
Переваги та недоліки регресійного тестування
Переваги
- Регресійне тестування покращує якість продукції.
- За допомогою цього тестування ви переконаєтеся, що модифікації та виправлення помилок не змінили існуючі функції та функції.
- Оскільки регресійні ліжка працюють на наявних функціях, ми можемо гарантувати, що старі дефекти також покриваються.
- Це сприяє ефективній розробці продукту.
- За допомогою цього тестування ви можете досягти високого рівня задоволеності користувачів.
- Загалом він підтримує стабільність програмного забезпечення.
Недоліки
- Його слід проводити щоразу, коли вносяться невеликі зміни, оскільки найменші зміни можуть викликати проблеми в існуючих модулях.
- Цей тест може зайняти багато часу, якщо проводити його вручну, і вимагає повторного тестування.
Проблеми регресійного тестування
Нижче наведено основні проблеми тестування для проведення регресійного тестування:
- З послідовними прогонами регресії набори тестів стають досить великими. Через обмеження часу та бюджету неможливо виконати весь набір регресійних тестів
- Мінімізація набору тестів при досягненні максимуму залишається проблемою
- Визначення частоти регресійних тестів, тобто після кожної модифікації або кожного оновлення збірки або після купи виправлень помилок, є проблемою.
Практичне застосування прикладу регресійного тестування з відео
Натисніть тут якщо відео недоступне
Приклад регресійного тестування – Amazon
Розглянемо гіганта електронної комерції Amazon, який є багатомільярдним бізнесом, який покладається на свій веб-сайт для отримання прибутку. Для підтримки його функціональності, надійності та продуктивності регресійне тестування відіграє вирішальну роль.
Розглянемо сценарій додавання нової категорії продукту.
Уяви що Amazon вирішує розширити асортимент своїх продуктів, запровадивши нову категорію під назвою «Пристрої для розумного дому» поряд із існуючими категоріями, такими як «Електроніка» та «Одяг».
Можливі випадки регресії:
Функціональність домашньої сторінки: переконайтеся, що на домашній сторінці відображається нова категорія «Пристрої розумного дому» поряд із наявними без проблем із відображенням.
Навігація за категоріями: переконайтеся, що користувачі можуть плавно переходити до сторінки категорії «Пристрої розумного дому» та повертатися на домашню сторінку без збоїв.
Функція пошуку: переконайтеся, що панель пошуку точно повертає результати для пристроїв розумного дому, коли користувачі шукають їх, і не змішуйте з іншими продуктами.
Облікові записи користувачів: переконайтеся, що облікові записи користувачів можна створювати, оновлювати та використовувати для придбання пристроїв для розумного дому та інших продуктів.
Обробка платежів: тестуйте платіжні шлюзи, призначені для покупок, і гарантуйте безпечні транзакції без помилок.
Мобільна адаптивність: Переконайтеся, що веб-сайт залишається адаптивним до мобільних пристроїв, дозволяючи користувачам отримувати доступ до розумних домашніх пристроїв і купувати їх на різних пристроях.
Якщо будь-який із цих регресійних тестів не вдається, це вказує на проблему з існуючою функціональністю веб-сайту через додавання нової категорії продукту. Цю проблему необхідно задокументувати та негайно вирішити. Крім того, як Amazon продовжує розширювати свої пропозиції та вносити зміни до свого веб-сайту, ці регресійні тести слід виконувати, щоб підтримувати надійний досвід онлайн-покупок. Інструменти автоматизованого тестування можуть спростити цей процес.
Висновок
- Значення регресійного тестування – Регресійне тестування – це тип тестування програмного забезпечення, який гарантує, що програма продовжує працювати належним чином після вдосконалень, будь-яких змін коду або виправлень помилок.
- Ефективна стратегія регресії може заощадити як час, так і гроші для організації.
- Відповідно до прикладів, регресія зберегла до 60% пізніших виправлень помилок.