Статичне тестування — це техніка тестування програмного забезпечення, яка використовується для перевірки дефектів програмного забезпечення без виконання коду.
Статичне тестування проводиться, щоб уникнути помилок на ранній стадії розробки, оскільки легше виявити помилки та вирішити їх.
Це також допомагає знаходити помилки, які не можуть бути знайдені динамічним тестуванням.
Основи статичного тестування
На відміну від динамічного тестування, яке вимагає запуск на виконання програмного забезпечення, що тестується, статичне тестування спирається на перевірку робочих продуктів вручну (тобто огляди) або керовану інструментами оцінку коду чи інших робочих продуктів (тобто статичний аналіз). Обидва типи статичного тестування оцінюють код або інший робочий продукт, що тестується, без фактичного виконання коду або робочого продукту, що тестується.
Статичний аналіз важливий для сейфті-крітікал комп’ютерних систем (наприклад, авіаційного, медичного або ядерного програмного забезпечення), але статичний аналіз також став важливим і поширеним в інших середовищах. Наприклад, статичний аналіз є важливою частиною тестування безпеки. Статичний аналіз також часто включається в автоматизовані інструменти створення та розповсюдження програмного забезпечення, наприклад, у гнучкій розробці, безперервній доставці та безперервному розгортанні.
Цінність статичного тестування
При застосуванні на ранніх стадіях життєвого циклу розробки програмного забезпечення статичне тестування дозволяє завчасно виявити дефекти до виконання динамічного тестування (наприклад, під час перегляду вимог або специфікацій дизайну, уточнення невиконаних завдань тощо).
Дефекти, виявлені на ранній стадії, часто набагато дешевше усунути, ніж дефекти, виявлені пізніше в життєвому циклі, особливо порівняно з дефектами, виявленими після розгортання програмного забезпечення та його активного використання.
Використання методів статичного тестування для пошуку дефектів і подальшого негайного усунення цих дефектів майже завжди набагато дешевше для організації, ніж використання динамічного тестування для пошуку дефектів в об’єкті тестування та їх подальшого усунення, особливо якщо враховувати додаткові витрати, пов’язані з оновленням інших робочих продуктів і проведення підтверджувального та регресійного тестування.
Переваги статичного тестування
До переваг статичного тестування відносять:
- Більш ефективне виявлення та виправлення дефектів до виконання динамічного тестування
- Виявлення дефектів, які нелегко виявити динамічним тестуванням
- Запобігання дефектам у дизайні чи кодуванні шляхом виявлення невідповідностей, двозначностей, протиріч, упущень, неточностей і надмірностей у вимогах
- Підвищення продуктивності розробки (наприклад, за рахунок покращеного дизайну, більш зручного обслуговування коду)
- Зменшення витрат і часу розробки
- Зменшення вартості та часу тестування
- Зменшення загальної вартості якості протягом усього терміну служби програмного забезпечення завдяки меншій кількості збоїв у подальшому життєвому циклі або після введення в експлуатацію
- Покращення комунікації між членами команди під час участі в оглядах
Статичне і динамічне тестування
Статичне тестування та динамічне тестування можуть мати однакові цілі, наприклад, забезпечити оцінку якості робочих продуктів і виявити дефекти якомога раніше. Статичне та динамічне тестування доповнюють одне одного, виявляючи різні типи дефектів.
Однією з головних відмінностей є те, що статичне тестування виявляє дефекти в робочих продуктах безпосередньо, а не визначає збої, викликані дефектами під час запуску програмного забезпечення. Дефект може існувати в робочому продукті протягом дуже тривалого часу, не викликаючи збою. Дефект у робочому продукті може тривалий час ніяк не проявлятися (наприклад через рідкісність набору умов, які можуть призвести до його прояву), тому буде непросто побудувати та виконати динамічний тест, який його виявить. Статичне тестування може виявити дефект із набагато меншими зусиллями.
Інша відмінність полягає в тому, що статичне тестування можна використовувати для покращення узгодженості та внутрішньої якості робочих продуктів, тоді як динамічне тестування зазвичай зосереджується на зовнішніх видимих поведінках.
Статичне тестування і дефекти
У порівнянні з динамічним тестуванням типові дефекти, які легше та дешевше знайти та виправити за допомогою статичного тестування, включають:
- Дефекти вимог (наприклад, невідповідності, двозначності, протиріччя, упущення, неточності та надмірності)
- Дефекти дизайну (наприклад, неефективні алгоритми або структури бази даних, високий зв’язок, низька зв’язність)
- Дефекти кодування (наприклад, змінні з невизначеними значеннями, змінні, які оголошені, але ніколи не використовуються, недоступний код, повторюваний код)
- Відхилення від стандартів (наприклад, недотримання стандартів кодування)
- Неправильні специфікації інтерфейсу (наприклад, інші одиниці вимірювання, що використовуються системою)
- Вразливості системи безпеки (наприклад, сприйнятливість до переповнення буфера)
- Прогалини або неточності в простежуваності бази тестів або покритті (наприклад, відсутність тестів для критерію прийнятності)
В цьому відео поговоримо про статичне тестування:
00:05 Статичне тестування
01:03 Основи Статичного тестування
02:31 Цінність статичного тестування
04:10 Переваги статичного тестування
05:20 Статичне і динамічне тестування
07:01 Статичне тестування і дефекти