Всі види тестування програмного забезпечення, залежно від переслідуваних цілей, можна умовно розділити на наступні групи:
- Функціональні (Functional testing)
- Нефункціональні (Non-functional testing)
- Пов’язані зі змінами (Regression testing)
Функціональні види тестування
Функціональні тести базуються на функціях і особливостях, а також взаємодії з іншими системами, і можуть бути представлені на всіх рівнях тестування: компонентному або модульному (Component / Unit testing), інтеграційному (Integration testing), системному (System testing) і приймальному (Acceptance testing ).
Функціональні види тестування розглядають зовнішню поведінку системи. Далі перераховані одні з найпоширеніших видів функціональних тестів:
Функціональне тестування (Functional testing)
Тестування безпеки (Security and Access Control Testing)
Тестування взаємодії (Interoperability Testing)
Нефункціональні види тестування
Нефункціональне тестування описує тести, необхідні для визначення характеристик програмного забезпечення, які можуть бути виміряні різними величинами. В цілому, це тестування того, “Як” система працює. Далі перераховані основні види нефункціональних тестів:
Всі види тестування продуктивності:
тестування навантаження (Performance and Load Testing)
стресове тестування (Stress Testing)
тестування стабільності або надійності (Stability / Reliability Testing)
об’ємне тестування (Volume Testing)
Тестування установки (Installation testing)
Тестування зручності користування (Usability Testing)
Тестування на відмову і відновлення (Failover and Recovery Testing)
Конфігураційне тестування (Configuration Testing)
Тестування, пов’язане зі змінами
Після проведення необхідних змін, таких як виправлення бага / дефекту, програмне забезпечення повинне бути перетестоване для підтвердження того факту, що проблема була дійсно вирішена. Нижче перераховані види тестування, які необхідно проводити після установки програмного забезпечення, для підтвердження працездатності програми або правильності здійсненого виправлення дефекту:
Димове тестування (Smoke Testing)
Регресійне тестування (Regression Testing)
Тестування збірки (Build Verification Test)
Санітарне тестування або перевірка узгодженості / справності (Sanity Testing)
Функціональне тестування (Functional testing)
Тестування функціональності може проводиться у двох аспектах:
- вимоги
- бізнес-процеси
Тестування в аспекті «вимоги» використовує специфікацію функціональних вимог до системи як основу для дизайну тестових випадків (Test Cases). У цьому випадку необхідно зробити список того, що буде тестуватися, а що ні, пріоритезувати вимоги на основі ризиків (якщо це не зроблено в документі з вимогами), а на основі цього пріоритезувати тестові сценарії (test cases). Це дозволить сфокусуватися і не упустити при тестуванні найбільш важливий функціонал.
Тестування в сенсі «бізнес-процеси» використовує знання цих самих бізнес-процесів, які описують сценарії щоденного використання системи. У цьому випадку тестові сценарії (test scripts), як правило, ґрунтуються на випадках використання системи (use cases).
Переваги функціонального тестування:
імітує фактичне використання системи;
Недоліки функціонального тестування:
можливість упущення логічних помилок у програмному забезпеченні;
ймовірність надмірного тестування.
Досить поширеною є автоматизація функціонального тестування.
Тестування безпеки (Security and Access Control Testing) – це стратегія тестування, що використовується для перевірки безпеки системи, а також для аналізу ризиків, пов’язаних із забезпеченням цілісного підходу до захисту додатків, атак хакерів, вірусів, несанкціонованого доступу до конфіденційних даних.
Загальна стратегія безпеки ґрунтується на трьох основних принципах: конфіденційність, цілісність, доступність.
Конфіденційність – це приховування певних ресурсів або інформації. Під конфіденційністю можна розуміти обмеження доступу до ресурсу деякої категорії користувачів, або іншими словами, за яких умов користувач авторизований отримати доступ до даного ресурсу.
Цілісність – Існує два основних критерії при визначенні поняття цілісності:
Довіра – Очікується, що ресурс буде змінений тільки відповідним способом певною групою користувачів.
Пошкодження і відновлення – у разі коли дані пошкоджуються або неправильно змінюються авторизованим або авторизованим користувачем, потрібновизначити наскільки важливою є процедура відновлення даних.
Доступність являє собою вимоги про те, що ресурси повинні бути доступні авторизованому користувачеві, внутрішньому об’єкту або пристрою. Як правило, чим більш критичний ресурс тим вище рівень доступності.
Тестування взаємодії (Interoperability Testing) – це функціональне тестування, що перевіряє здатність програми взаємодіяти з одним і більше компонентами або системами і включає в себе тестування сумісності (compatibility testing) і інтеграційне тестування (integration testing).
Зміст: