Тестування шляхів та базове тестування шляхів у програмному забезпеченні з прикладами

⚡ Розумний підсумок

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

  • 🗺️ Основна ідея: Тестові випадки походять зі структури коду, а не з документа з вимогами.
  • 🔢 Чотири кроки: Намалюйте граф потоку керування, обчисліть цикломатичну складність, виведіть базисний набір, напишіть один тест на кожен шлях.
  • 📐 Кількість тестових випадків: Кількість незалежних шляхів дорівнює цикломатичній складності, що дає об'єктивну мету.
  • 🔄 Гібридний метод: Він поєднує тестування гілок та тестування шляхів для досягнення максимального покриття з мінімальною кількістю тестів.
  • Гарантія покриття: Виконання базисного набору виконує кожен оператор у модулі принаймні один раз.
  • ⚠️ Відома межа: Він не може знайти відсутні вимоги, оскільки тестує лише код, який вже існує.

Тестування базового шляху Тестування шляху

Що таке тестування шляху в тестуванні програмного забезпечення?

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

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

Тестування базового шляху в програмній інженерії

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

In розробка програмного забезпеченняТестування базового шляху передбачає виконання всіх можливих блоків у програмі та досягнення максимального покриття шляху з найменшою кількістю тестових випадків. Це гібридний метод тестування гілок і методів тестування шляху.

Простий приклад робить ідею конкретною.

Тестування базового шляху в програмній інженерії

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

  • Шлях 1: 1,2,3,5,6, 7
  • Шлях 2: 1,2,4,5,6, 7
  • Шлях 3: 1, 6, 7

Як намалювати графік потоку керування

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

  • Вузол: послідовність операторів, які завжди виконуються разом, зображена у вигляді кола. Серія операторів без розгалуження згортається в один вузол.
  • Край: передача керування від одного вузла до наступного, зображена стрілкою. Ребра — це єдиний спосіб переміщення керування.
  • Вузол-предикат: вузол, що містить умову, з якого виходять два або більше ребер. Ці фактори впливають на підрахунок складності.
  • Регіон: область, обмежена ребрами та вузлами. Кількість областей плюс один також дорівнює цикломатичній складності.

Розглянемо короткий модуль з двома рішеннями:

if (a > b) {          // node 1, predicate
    max = a;          // node 2
} else {
    max = b;          // node 3
}
if (max > limit) {    // node 4, predicate
    alert();          // node 5
}
return max;           // node 6

Граф має 6 вузлів і 6 ребер, що дає V(G) = 6 – 6 + 2 = 2 за формулою ребер. Кількість предикатів дає ту саму відповідь швидше: 2 рішення плюс 1 дорівнює 3 незалежним шляхам через дві гілки, взраховані разом. Використовуйте будь-яку форму, яку ви можете надійно обчислити, та перевірте з іншою.

Два правила, які запобігають більшості помилок. По-перше, складна умова, така як якщо (x > 0 && y > 0) вважається двома вузлами-предикатами, а не одним, оскільки коротке замикання створює друге рішення. По-друге, цикл додає один вузол-предикат незалежно від того, скільки разів він виконується.

Кроки для тестування базового шляху

Основні етапи тестування базового шляху включають:

  • Намалюйте контрольний графік (щоб визначити різні шляхи програми)
  • Обчислювати Цикломатична складність (метрики для визначення кількості незалежних шляхів)
  • Знайдіть базовий набір шляхів
  • Генерувати тестові справи здійснювати кожен шлях

Переваги та обмеження тестування базового шляху

Переваги тестування базового шляху

  • Це допомагає зменшити кількість зайвих тестів
  • Він акцентує увагу на логіці програми
  • Він замінює довільний вибір тестових випадків аналітичною основою
  • Тестові випадки, які виконують базовий набір, виконають кожен оператор у програмі принаймні один раз

Обмеження тестування базового шляху

  • Він не може знайти відсутній код. Вимога, яка ніколи не була реалізована, не має шляху, тому для неї не буде згенеровано жодного тесту. Тестування базового шляху має бути поєднане з тестуванням на основі вимог.
  • Кількість шляхів швидко зростає. Вкладені цикли та складені умови швидко збільшують складність, і модуль з V(G) вище 20 стає непрактичним для такого покриття.
  • Висвітлення — це не коректність. Виконання шляху доводить, що код працює, а не те, що він видає правильну відповідь. Кожен тест все ще потребує змістовного твердження.
  • Шляхи, що залежать від даних. Деякі шляхи досяжні лише за допомогою певних комбінацій вхідних даних, які може бути важко або неможливо побудувати.

Поширені запитання

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

Точно цикломатична складність модуля. Якщо V(G) дорівнює 4, то існує 4 незалежних шляхи, і для повного покриття гілок потрібно 4 тестові випадки.

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

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

Так. Інструменти статичного аналізу роками генерували графіки потоків керування та показники складності, а інструменти на основі штучного інтелекту тепер додають запропоновані тестові вхідні дані для кожного незалежного шляху.

Підсумуйте цей пост за допомогою: