Підручник з модульного тестування: Що таке, типи, інструменти та підсилювач; ПРИКЛАД тесту

Зміст:

Anonim

Що таке одиничне тестування?

ТЕСТУВАННЯ ОДИНИЦЬ - це тип тестування програмного забезпечення, де тестуються окремі блоки або компоненти програмного забезпечення. Метою є перевірити, що кожна одиниця програмного коду працює належним чином. Тестування модулів проводиться під час розробки (фази кодування) програми розробниками. Модульні тести ізолюють розділ коду та перевіряють його правильність. Одиницею може бути окрема функція, метод, процедура, модуль або об’єкт.

У SDLC, STLC, V Model, модульне тестування - це перший рівень тестування, проведений перед тестуванням інтеграції. Модульне тестування - це техніка тестування WhiteBox, яку зазвичай виконує розробник. Хоча в практичному світі через нестачу часу чи небажання розробників тестувати інженери QA також проводять модульне тестування.

У цьому підручнику ви дізнаєтесь-

  • Чому одиничне тестування?
  • Як зробити модульне тестування
  • Методи модульного тестування
  • Засоби модульного тестування
  • Тестова розробка (TDD) та модульне тестування
  • Одиничне тестування міфу
  • Перевага модульного тестування
  • Недоліки модульного тестування
  • Найкращі практики модульного тестування

Чому одиничне тестування?

Модульне тестування важливо, оскільки розробники програмного забезпечення іноді намагаються економити час, виконуючи мінімальне модульне тестування, і це міф, оскільки невідповідне модульне тестування призводить до дорогого виправлення дефектів під час тестування системи, інтеграційного тестування та навіть бета-тестування після побудови програми. Якщо належне тестування модулів проводиться на початку розробки, це в кінцевому підсумку економить час і гроші.

Ось основні причини для проведення модульного тестування в програмній інженерії:

Рівні одиничного тестування
  1. Модульні тести допомагають виправити помилки на початку циклу розробки та заощадити витрати.
  2. Це допомагає розробникам зрозуміти базу коду тестування та дозволяє швидко вносити зміни
  3. Хороші модульні тести служать проектною документацією
  4. Модульні тести допомагають повторно використовувати код. Перенесіть як свій код, так і свої тести на новий проект. Налаштовуйте код, поки тести не запустяться знову.

Як зробити модульне тестування

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

Одиничне тестування буває двох видів

  • Вручну
  • Автоматизований

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

За автоматизованого підходу -

  • Розробник пише розділ коду в програмі лише для тестування функції. Пізніше вони коментуватимуть і нарешті видалятимуть тестовий код під час розгортання програми.
  • Розробник також може ізолювати функцію, щоб перевірити її більш ретельно. Це більш ретельна практика модульного тестування, яка передбачає копіювання та вставлення коду у власне середовище тестування, ніж його природне середовище. Виділення коду допомагає виявити непотрібні залежності між тестуваним кодом та іншими одиницями або просторами даних у продукті. Потім ці залежності можна усунути.
  • Кодер зазвичай використовує UnitTest Framework для розробки автоматизованих тестових кейсів. Використовуючи структуру автоматизації, розробник кодує критерії в тесті, щоб перевірити правильність коду. Під час виконання тестових кейсів фреймворк реєструє невдалі тестові кейси. Багато фреймворків також автоматично повідомлятимуть про ці невдалі тестові випадки та повідомлятимуть їх. Залежно від тяжкості несправності, фреймворк може зупинити подальше тестування.
  • Робочий процес модульного тестування: 1) Створення тестових справ 2) Перегляд / переробка 3) Базова лінія 4) Виконання тестових справ.

Методи модульного тестування

У Techniques Unit Testing в основному поділяється на три частини , які є чорним випробуванням вікна , яке включає в себе тестування користувальницького інтерфейсу разом з входом і виходом, тестуванням вікна White , який включає в себе тестування функціонального поведінки програми та тестування програмного забезпечення коробки Грея , який використовується для виконання тесту набори, методи випробувань, кейси та проведення аналізу ризиків.

Методи охоплення коду, що використовуються в модульному тестуванні, перелічені нижче:

  • Покриття заяви
  • Висвітлення рішень
  • Покриття філії
  • Покриття стану
  • Покриття остаточного автомата

Детальніше див. На веб-сторінці https://www.guru99.com/code-coverage.html

Приклад юніт-тесту: Макет об’єктів

Модульне тестування покладається на створені макетні об’єкти для тестування розділів коду, які ще не є частиною повної програми. Фіктивні об’єкти заповнюють відсутні частини програми.

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

Засоби модульного тестування

Існує кілька програм автоматизованого модульного тестування, які допоможуть у модульному тестуванні. Нижче ми наведемо кілька прикладів:

  1. Junit: Junit - це безкоштовний засіб тестування, що використовується для мови програмування Java. Він містить твердження для визначення методу випробування. Цей інструмент спочатку перевіряє дані, а потім вставляє в шматок коду.
  2. NUnit: NUnit широко використовується в рамках модульного тестування для всіх мов .net. Це інструмент з відкритим кодом, який дозволяє писати сценарії вручну. Він підтримує тести, керовані даними, які можуть працювати паралельно.
  3. JMockit: JMockit - це інструмент модульного тестування з відкритим кодом. Це інструмент охоплення коду з метриками ліній та шляхів. Це дозволяє знущатися над API із синтаксисом запису та перевірки. Цей інструмент пропонує покриття ліній, покриття шляху та покриття даних.
  4. EMMA: EMMA - це інструментарій з відкритим кодом для аналізу та звітування коду, написаного мовою Java. Емма підтримує такі типи покриття, як метод, лінія, базовий блок. Він заснований на Java, тому він не має залежностей від зовнішніх бібліотек і може отримати доступ до вихідного коду.
  5. PHPUnit: PHPUnit - це інструмент модульного тестування для програміста PHP. Потрібні невеликі порції коду, які називаються одиницями, і перевіряйте кожну з них окремо. Інструмент також дозволяє розробникам використовувати попередньо визначені методи твердження, щоб стверджувати, що система поводиться певним чином.

Це лише декілька доступних інструментів модульного тестування. Є набагато більше, особливо для мов C та Java, але ви обов’язково знайдете інструмент модульного тестування для своїх потреб програмування, незалежно від мови, якою ви користуєтесь.

Тестова розробка (TDD) та модульне тестування

Модульне тестування в TDD передбачає широке використання платформ тестування. Структура модульного тестування використовується для створення автоматизованих модульних тестів. Модулі модульного тестування не є унікальними для TDD, але вони є для нього важливими. Нижче ми розглянемо, що TDD вносить у світ модульного тестування:

  • Тести пишуться перед кодом
  • Покладається на тестування фреймворків
  • Всі класи в додатках тестуються
  • Швидка та проста інтеграція

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

Міф: Це вимагає часу, і я завжди перепланований. Мій код твердий! Мені не потрібні модульні тести.

Міфи за своєю природою є хибними припущеннями. Ці припущення ведуть до порочного кола наступним чином -

Правда - модульне тестування збільшує швидкість розвитку.

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

Перевага модульного тестування

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

Недоліки модульного тестування

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

Рекомендується застосовувати модульне тестування разом із іншими тестовими заходами.

Найкращі практики модульного тестування

  • Тестові випадки повинні бути незалежними. У разі будь-яких покращень або зміни вимог, це не повинно впливати на тестові випадки.
  • Перевіряйте лише один код за раз.
  • Дотримуйтесь чітких та послідовних правил іменування для своїх модульних тестів
  • У разі зміни коду в будь-якому модулі, переконайтеся, що для модуля є відповідний блок тестів, і модуль проходить тести перед зміною реалізації
  • Помилки, виявлені під час модульного тестування, повинні бути виправлені перед переходом до наступного етапу в SDLC
  • Прийміть підхід "тест як ваш код". Чим більше коду ви пишете без тестування, тим більше шляхів вам доведеться перевірити на наявність помилок.

Резюме

  • ТЕСТУВАННЯ ОДИНИЦІВ визначається як тип тестування програмного забезпечення, де тестуються окремі блоки або компоненти програмного забезпечення.
  • Як бачите, у модульному тестуванні може бути багато залученого. Це може бути складним або досить простим залежно від програми, що тестується, та стратегій тестування, інструментів та філософії, що використовуються. Модульне тестування завжди потрібно на якомусь рівні. Це певність.