Статичне тестування є методикою тестування програмного забезпечення, при якій ПЗ тестується без запуску коду. Воно являє собою процес або техніку, які виконуються для пошуку потенційних дефектів в програмному забезпеченні. Це також процес виявлення і усунення помилок і дефектів в різних супровідних документах, таких як специфікації вимог до програмного забезпечення і т. ін.
Можна поділити статичне тестування на 2 типи:
- Рев’ю (Review);
- Статичний аналіз (Static Analysis).
Рев'ю (Review) – перевірка зазвичай використовується для виявлення і усунення несправностей або неясностей в документах. Це можуть бути вимоги, дизайн, тестові випадки і так далі.
У свою чергу рев’ю діляться на:
- Неформальні. При неофіційному розгляді творець документів показує вміст документів аудиторії. Кожен присутній висловлює свою думку, що дозволяє виявити недоліки на ранній стадії.
- Наскрізні перегляди (Walkthroughs). Виконуються досвідченою людиною або експертом для перевірки відсутності дефектів, з метою попередження виникнення проблем на етапі розробки або тестування.
- Експертна оцінка. Означає перевірку документів для виявлення і виправлення дефектів. В основному це виконується у команді.
- Інспектування ПЗ. Це, в більшості випадків, перевірка документу вищим органом, наприклад, перевірка вимог до програмного забезпечення.
Статичний аналіз (Static Analysis) – код, написаний розробниками, аналізується на наявність структурних дефектів,які можуть призвести до помилок.
Статичний аналіз включає в себе оцінку якості коду, написаного розробниками. Для аналізу коду і порівняння його зі стандартом використовуються різні інструменти. Статичний аналіз добре допомагає знайти такі помилки, як:
- змінні,які не використовуються;
- мертвий код;
- нескінченні цикли;
- змінні з невизначеними значеннями;
- неправильний синтаксис.
Статичний аналіз складається з 3-ох частин:
- Потік даних (потік даних пов'язаний з обробкою потоку);
- Контроль потоку (як виконуються оператори або інструкції);
- Цикломатична складність (вимір складності програми, яке в основному пов'язано з кількістю незалежних шляхів в графі потоків управління програми).
Аналіз може проводитися як вручну, так і за допомогою спеціальних інструментів.
Метою аналізу є найбільш раннє виявлення помилок і потенційних проблем в програмному продукті. Як правило, код рев'ю виконується самим розробником.
Переваги статичного тестування
- Знижує вартість фіксу знайдених багів, оскільки виявляє баги на ранніх етапах циклу розробки програмного забезпечення.
- Відгуки, отримані в ході цього тестування, допомагають покращити функціонування процесу, що також допомагає команді уникнути подібних дефектів і багів.
- Підвищує інформованість про різні проблеми якості програмного забезпечення.
- Покращує обмін критичної і важливої інформації між членами команди.
- Істотно скорочуються зусилля по виправленню помилок, що ще більше сприяє продуктивності розробки.
Недоліки статичного тестування
- Процес статичного тестування може займати багато часу, так як в основному він виконується вручну.
- Перешкоджає виявленню вразливостей, представлених в середовищі виконання.