Warning: Parameter 1 to wp_default_scripts() expected to be a reference, value given in /home/qalight/qalight.com.ua/lviv/wp-includes/plugin.php on line 601

Warning: Parameter 1 to wp_default_styles() expected to be a reference, value given in /home/qalight/qalight.com.ua/lviv/wp-includes/plugin.php on line 601
Статичне і динамічне тестування - QALight

База знань

Статичне і динамічне тестування

static

За критерієм запуску програми (виконується чи ні програмний код) виділяють два типи тестування: статичне і динамічне.

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

Статичне тестування починається на ранніх етапах життєвого циклу ПЗ і є, відповідно, частиною процесу верифікації. Для цього типу тестування в деяких випадках навіть не потрібен комп’ютер – наприклад, при перевірці вимог.

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

Слід зазначити, що навіть статичне тестування може бути автоматизовано – наприклад, можна використовувати автоматичні засоби перевірки синтаксису програмного коду. Інструменти статичного аналізу повідомляють розробників програмного забезпечення про такі недоліки як непридатний для використання програмний код, неописані змінні і т.д. Конкретні приклади інструментальних засобів статичного тестування для Java: Checkstyle, FindBugs, PMD; для Javascript: JSLint. Приклади помилок, які потенційно можна виявити за допомогою автоматичного статичного тестування: витік пам’яті та інших ресурсів; можливість переповнення буфера (buffer overflows); ситуації часткової (неповної) обробки помилок.

Більшість статичних технік можуть бути використані для «тестування» будь-яких форм документації, наприклад:

  • вичитування і аналіз самими розробниками вихідного або скомпільованого коду на предмет помилок (code review);
  • інспекцію проектної документації, функціональної специфікації і вимог (software inspection);
  • вивчення продуктивності (code profiling);
  • software walkthrough;
  • peer review і т.д.

Підсумовуючи, виділимо два основних види статичного тестування:

  1. Перевірка коду програми.
  2. Перевірка документації.

 

Динамічне тестування – тип тестування, який передбачає запуск програмного коду для аналізу поведінки програми під час її роботи.

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

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

Динамічне тестування є частиною процесу валідації програмного забезпечення.

Як уже згадувалося, типів динамічного тестування дуже багато. Воно може включати різні підвиди, кожен з яких залежить від:

  • доступу до коду (тестування “чорним”,” білим” і “сірим” ящиками);
  • рівня тестування (модульне, інтеграційне, системне і приймальне тестування);
  • сфери використання програми (функціональне, навантажувальне, тестування безпеки та ін.).

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

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

Набагато більше інформації на курсі базовий модуль тестування