Типи тестування
Це доволі складне питання, оскільки існує більше сотні типів тестування. Тому наразі метою є отримати узагальнене та трохи спрощене розуміння з приводу цього питання (типи та рівні тестування). Метою є побачити узагальнену картину, якщо можна так сказати. Звісно запропонований підхід найімовірніше буде серйозно розкритикований.
Тип тестування — це група тестових дій, спрямованих на перевірку конкретних характеристик програмної системи або частини системи на основі конкретних цілей тестування. Такі цілі можуть включати:
- Оцінка характеристик функціональної якості, таких як повнота, правильність і відповідність
- Оцінка нефункціональних характеристик якості, таких як надійність, продуктивність, безпека, сумісність і зручність використання
- Оцінка того, чи структура або архітектура компонента чи системи є правильною, повною та відповідає вимогам
- Оцінка наслідків змін, як-от підтвердження того, що дефекти виправлено (підтверджувальне тестування) та пошук ненавмисних змін у поведінці внаслідок змін програмного забезпечення чи середовища (регресійне тестування)
Статичне тестування (Static) не передбачає запуск ПЗ на виконання. Динамічне тестування (Dynamic), навпаки, передбачає запуск ПЗ на виконання. До статичного тестування відносять техніки перегляду (неформальні перегляди, наскрізні проходження, технічні огляди, інспекції), а також статичний аналіз (контроль потоку та потоки даних). У динамічному тестування виділено чотири великі групи тестування: білої скриньки, чорної скриньки, тестування засноване на досвіді та тестування пов’язане зі змінами.
Тестування білої скриньки (White-Box) базується на структурі та виводить тести з реалізації або внутрішньої структури системи (наприклад, коду, архітектури, робочих процесів і потоків даних). Основна мета тестування білої скриньки – охопити базову структуру тестами до прийнятного рівня.
Тестування чорної скриньки (Black-box) базується на специфікаціях і одержує тести з зовнішньої документації щодо об’єкта тестування. Основна мета тестування чорної скриньки – перевірити поведінку системи на відповідність її специфікаціям.
Функціональне тестування (Functional) оцінює функції, які повинен виконувати компонент або система. Функції – це «те, що» повинен робити тестовий об’єкт. Основною метою функціонального тестування є перевірка функціональної повноти, функціональної правильності та функціональної відповідності.
Нефункціональне тестування (Non-functional) оцінює атрибути, відмінні від функціональних характеристик компонента або системи. Нефункціональне тестування — це перевірка того, “наскільки добре поводиться система”. Основною метою нефункціонального тестування є перевірка характеристик якості нефункціонального програмного забезпечення (продуктивність, зручність використання, відновлення, сумісність, безпека).
Тестування засноване на досвіді (Experience-based). При застосуванні методів тестування, заснованих на досвіді, тестові випадки створюються на основі навичок та інтуїції тестувальника, а також його досвіду роботи з подібними програмами та технологіями. Ці методи можуть бути корисними для виявлення тестів, які нелегко ідентифікувати за допомогою інших більш систематичних методів. Залежно від підходу та досвіду тестувальника, ці методи можуть досягти різного ступеня охоплення та ефективності. Покриття може бути важко оцінити, і його неможливо виміряти за допомогою цих методів.
Тестування пов’язане зі змінами (Change-related). Коли в систему вносяться зміни або для виправлення дефекту, або через нову чи змінну функціональність, слід провести тестування, щоб підтвердити, що зміни виправили дефект або реалізували функціональні можливості належним чином і не спричинили жодних непередбачуваних несприятливих наслідків.
Рівні тестування
Рівні тестування – це групи тестових дій, які організовуються та управляються разом. Кожен рівень тестування – це екземпляр процесу тестування, що виконується стосовно програмного забезпечення на даному рівні розробки, від окремих одиниць або компонентів до повних систем.
Тестування компонентів (також відоме як модульне тестування) зосереджується на тестуванні компонентів окремо. Для цього часто потрібна спеціальна підтримка, наприклад тестові пакети або фреймворки модульного тестування. Тестування компонентів зазвичай виконується розробниками у своїх середовищах розробки.
Тестування інтеграції компонентів (також відоме як тестування інтеграції модулів) зосереджується на тестуванні інтерфейсів і взаємодії між компонентами. Тестування інтеграції компонентів значною мірою залежить від підходів стратегії інтеграції, таких як «знизу вгору», «зверху вниз» або «великий вибух».
Тестування системи зосереджується на загальній поведінці та можливостях усієї системи або продукту, часто включаючи наскрізне функціональне тестування і нефункціональне тестування характеристик якості. Для деяких нефункціональних характеристик якості бажано тестувати їх на повній системі в репрезентативному тестовому середовищі (наприклад, зручність використання). Також можливе використання моделювання підсистем. Тестування системи може виконуватися незалежною групою тестувальників і пов’язане зі специфікаціями системи.
Тестування системної інтеграції зосереджено на тестуванні інтерфейсів тестованої системи та інших систем і зовнішніх сервісів. Тестування системної інтеграції вимагає відповідних тестових середовищ, бажано подібних до робочого середовища.
Приймальне тестування зосереджено на перевірці та демонстрації готовності до розгортання, що означає, що система відповідає бізнес-потребам користувача. В ідеалі приймальне тестування має виконуватися користувачами. Основними формами приймального тестування є: приймальне тестування користувача (UAT), операційне приймальне тестування, договірне та нормативне приймальне тестування, альфа-тестування та бета-тестування.
В цьому відео поговоримо про типи та рівні тестування
00:05 Типи тестування
19:59 Рівні тестування