Що таке репетиційне тестування

Що таке репетиційне тестування

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

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

Є кілька видів регресійних тестів:

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

Деякі положення щодо того, як проводити регресійне тестування:

  • Даний вид тестування проводиться в кожному новому білді.
  • Починати потрібно з верифікації версії (тестування зборки та димне тестування).
  • Перевірка виправлених багів.
  • Регресійне тестування, в основному, не покриває весь додаток, а тільки ті ділянки, які тим чи іншим способом «стикаються» зі змінами в білді.

Далі тестуються вже закриті раніше баги.

1) Регресійне тестування рекомендується проводити кілька разів (3-5). Тому, з метою економії дорогоцінного часу (і, може бути, для позбавлення від «рутинності») в регресійних тестах активно використовують засоби автоматизації тестування.

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

Також регресійне тестування активно використовується в екстремальній розробці.

  • Обери курс для навчання
    • Тестування
      • Базовий модуль тестування
      • Тестування ПЗ
      • Тестування Web-сервісів
      • Тестування мобільних додатків
      • Тестування навантажання з JMETER
      • Розширений модуль з Автоматизації тестування
      • Автоматизація тестування за допомогою Selenium WebDriver (Python)
      • Автоматизація тестування за допомогою Selenium WebDriver (Java)
      • Автоматизація тестування за допомогою Selenium WebDriver (C#)
      • Автоматизація тестування на JavaScript
      • Java для автоматизаторів
      • Fullstack Web Developer
      • Java
      • Python
      • JavaScript
      • HTML5 І CSS3
      • Повний стек розробки на фреймворку Laravel
      • Розробка CMS на основі PHP
      • Git для автоматизаторів
      • Практичний SQL
      • Основи Unix та мережі
      • Web-сервери та Web-сервіси
      • Створення проекту автоматизації та написання UI тестів
      • Написання комбінованих тестів UI та API. Написання BDD тестів
      • IT Project Manager
      • HR-менеджер в ІТ-компанії
      • Як правильно скласти резюме та пройти співбесіду
      • Підготовка до сертифікації ISTQB Foundation Level на основі Syllabus Version 2018
      • Тестування
        • Базовий модуль тестування

        Огляд видів тестування

        Вид тестування, згідно з даними ISTQB (International Software Testing Qualifications Board) – це засіб чіткого визначення мети конкретного рівня для програми або проєкту.

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

        Залежно від потреб процес тестування повинен бути організований відповідним чином. Отже, ми можемо визначити 4 види тестування програмного забезпечення:

        • функціональне тестування (Functional testing);
        • нефункціональне тестування (Non-functional testing);
        • структурне тестування (Structural testing);
        • тестування змін (Change related testing).

        Функціональне тестування

        Сьогодні складно недооцінити важливість функціонального тестування, адже саме ця дія спрямована на тестування всіх функцій системи для підтвердження, що кожна функція програми працює відповідно до документації.

        Елементи функціонального тестування:

        • підготовка тестових даних виходячи з описаної документації;
        • бізнес-вимоги, як частина функціонального тестування;
        • отримання результатів на основі специфікації;
        • проходження тест-кейсів;
        • аналіз фактичних та очікуваних результатів.

        Функціональне тестування може бути проведено відповідно до специфікації, а також і на основі бізнес-процесу, тобто відповідно до знань системи.

        Переваги функціонального тестування:

        • в рамках тестування ми «копіюємо» безпосереднє використання системи;
        • тестування, як правило, проводиться в умовах близьких до реальних.
        • існує ймовірність пропустити кілька помилок логіки програмного забезпечення під час перевірки функціоналу програми.

        Нефункціональне тестування

        Якщо в рамках функціонального тестування ми відповідаємо на питання «Чи працює система?», то нефункціональне відповідає на питання: «Як добре працює система?». Нефункціональне тестування направлено на перевірку тих аспектів ПЗ, які можуть бути описані в документації, але не відносяться до функцій програмних продуктів.

        Нефункціональне тестування складається з підвидів:

        1. Тестування стабільностіStability testing – перевірка працездатності додатку при тривалому тестуванні з очікуваним рівнем навантаження.
        2. Юзабіліті тестуванняUsability testing – дослідження для визначення зручності використання ПЗ.
        3. Тестування ефективностіEfficiency testing – перевірка необхідних обсягів коду і ресурсів QA, що використовуються програмою для виконання окремої функції.
        4. Тестування ремонтопридатностіMaintainability testing – цей підвид нефункціонального тестування визначає наскільки легко підтримувати працездатність системи.
        5. Перевірка портативностіPortability testing– тестування доступності перенесення окремого компонента або всього програмного забезпечення з одного оточення на інше (Windows 8.1 -> Windows 10, Windows -> MacOS).
        6. Тестування «пра-витоків»Baseline testing – перевірка документації та специфікації, за якою будуть написані тест-кейси. До цього підвиду тестування можна віднести й тестування вимог.
        7. Приймальне тестуванняCompliance/Acceptance testing – перевірка продукту на відповідність критеріям готовності.
        8. Тестування документаціїDocumentation testing – перевірка всієї створеної в рамках тестування документації (від майстер тест-плану до тест-кейсів).
        9. Тестування витривалості системиEndurance testing – тестування системи при високому навантаженні протягом тривалого періоду часу з метою вивчення її поведінки.
        10. Тестування навантаженняLoad testing – як правило, проводиться з метою визначення поведінки ПЗ під очікуваним рівнем навантаження.
        11. Тестування продуктивностіPerformance testing – перевірка швидкості роботи ПЗ або його окремих функцій.
        12. Тестування сумісностіCompatibility testing – тестування системи під час роботи в різних середовищах: «залізо», софт частина тощо.
        13. Тестування безпекиSecurity testing – проводиться для відповіді на питання «Чи є додаток безпечним/захищеним чи ні?».
        14. Об’ємне тестуванняVolume testing – тестування ПЗ з використанням баз даних певного розміру.
        15. Стрес тестуванняStress testing – це тестування в обмежених умовах, наприклад, перевірка поведінки системи (відсутність крешів) за умов нестачі ресурсів комп’ютера (оперативної пам’яті або місця на HDD/SSD дисках).
        16. Тестування швидкості відновленняRecovery testing – проводиться з метою визначення швидкості відновлення системи у разі софтверного креша (падіння програмного забезпечення) або помилки «заліза».
        17. Тестування локалізації, інтернаціоналізаціяLocalization testing – перевірка ПЗ на відповідність мовних, культурних та/або релігійних норм. Локалізація – перевірка відображення усіх перекладених текстів програмного забезпечення.

        Структурне тестування

        Структурне тестування направлено на тестування структури системи або компонента. Цей вид тестування, як правило, відносять до тестування «білого» та «сірого» ящиків, оскільки ми перевіряємо, що відбувається всередині системи або додатка.

        Методи структурного тестування:

        1. Строкове покриття (Statement Coverage) – перевірка застосування усіх операторів в програмі на використання (хоча б один раз).
        2. Покриття шляху (Path Coverage) – метод тестування, призначений для задоволення критеріїв охоплення кожного логічного шляху через програму.
        3. Покриття рішення (Branch Coverage) – перевіряє, чи має кожна умова розгалуження для програми дійсні чи хибні значення;
        4. Покриття умови (Condition Coverage) – метод, схожий на Branch Coverage, основна відмінність полягає в перевірці стану покриття для умовних і неумовних гілок.
        • можливість виявити та видалити «зайвий» код;
        • можливість виявлення потенційних помилок на ранній стадії;
        • забезпечує більш ретельне тестування ПЗ;
        • не потребує високих витрат людино-годин.

        Тестування змін

        При тестуванні змін в системі дуже важливо зрозуміти різницю та межу між поняттями регресійне тестування (Regression testing) та повторне тестування (Retesting).

        Регресійне тестування (Regression testing) проводиться з метою перевірки працездатності функціоналу, що існує, та перевірки на відсутність сторонніх помилок після оновлення білда (внесення правок або доповнень в систему).

        Повторне тестування (Retesting) – проводиться для підтвердження виправлення помилки та роботи даного функціоналу.