Підручник з охоплення коду: відділення, заява, рішення, FSM

Зміст:

Anonim

Що таке охоплення кодом?

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

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

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

  • Що таке охоплення кодом?
  • Навіщо використовувати Покриття коду?
  • Методи покриття коду
  • Покриття заяви
  • Висвітлення рішень
  • Покриття філії
  • Покриття стану
  • Покриття остаточного автомата
  • Який тип покриття коду вибрати
  • Покриття коду проти функціонального покриття
  • Інструменти покриття коду
  • Переваги та недоліки використання покриття коду

Навіщо використовувати Покриття коду?

Ось кілька основних причин використання покриття коду:

  • Це допоможе вам виміряти ефективність впровадження тесту
  • Він пропонує кількісне вимірювання.
  • Він визначає ступінь перевірки вихідного коду.

Методи покриття коду

Нижче наведено основні методи охоплення коду

  • Покриття заяви
  • Висвітлення рішень
  • Покриття філії
  • Переключити покриття
  • Покриття FSM

Покриття заяви

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

Покриття виписки використовується для виведення сценарію на основі структури тестованого коду.

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

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

Давайте розберемося в цьому на прикладі, як розрахувати охоплення виписки.

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

Вихідний код:

Відбитки (int a, int b) {------------ Printsum - це функціяint результат = a + b;Якщо (результат> 0)Друк ("Позитив", результат)ІнакшеДрук ("Негативний", результат)} ----------- Кінець вихідного коду

Сценарій 1:

Якщо A = 3, B = 9

Оператори, позначені жовтим кольором, це ті, які виконуються відповідно до сценарію

Кількість виконаних операторів = 5, загальна кількість операторів = 7

Покриття заяви: 5/7 = 71%

Так само ми побачимо сценарій 2,

Сценарій 2:

Якщо A = -3, B = -9

Оператори, позначені жовтим кольором, - це ті, які виконуються відповідно до сценарію.

Кількість виконаних операторів = 6

Загальна кількість тверджень = 7

Покриття заяви: 6/7 = 85%

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

Що поширюється на висвітлення виписки?

  1. Невикористані заяви
  2. Мертвий код
  3. Невикористані гілки
  4. Відсутні заяви

Висвітлення рішень

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

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

Приклад висвітлення рішення

Розглянемо наступний код -

Демонстрація (int a) {Якщо (a> 5)a = a * 3Друк (а)}

Сценарій 1:

Значення a дорівнює 2

Код, виділений жовтим кольором, буде виконаний. Тут перевіряється "Ні" результат рішення Якщо (a> 5).

Покриття рішення = 50%

Сценарій 2:

Значення a дорівнює 6

Код, виділений жовтим кольором, буде виконаний. Тут перевіряється результат "Так", якщо (a> 5).

Покриття рішення = 50%

Тестовий кейс Значення A Вихідні дані Висвітлення рішень
1 2 2 50%
2 6 18 50%

Покриття філії

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

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

Формула для розрахунку охоплення галузі:

Приклад охоплення галузі

Щоб дізнатися про охоплення філій, давайте розглянемо той самий приклад, який використовувався раніше

Розглянемо наступний код

Демонстрація (int a) {Якщо (a> 5)a = a * 3Друк (а)}

Покриття філій також розглядатиме безумовну галузь

Тестовий кейс Значення A Вихідні дані Висвітлення рішень Покриття філії
1 2 2 50% 33%
2 6 18 50% 67%

Переваги покриття філії:

Тестування охоплення філій пропонує наступні переваги:

  • Дозволяє перевірити всі гілки в коді
  • Допомагає вам переконатися, що жодні розгалужені не призводять до будь-яких відхилень у роботі програми
  • Метод охоплення філій усуває проблеми, які трапляються через тестування покриття виписки
  • Дозволяє знайти ті області, які не перевіряються іншими методами тестування
  • Це дозволяє знайти кількісний показник охоплення коду
  • Покриття гілок ігнорує гілки всередині булевих виразів

Покриття стану

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

Наприклад, якщо вираз має булеві операції типу AND, OR, XOR, що вказує на загальні можливості.

Покриття за умовами не дає гарантії повного покриття рішення.

Формула для розрахунку покриття стану:

Приклад:

Для наведеного вище виразу ми маємо 4 можливі комбінації

  • ТТ
  • FF
  • TF
  • FT

Розглянемо наступний вхід

Х = 3

Y = 4

(x

ІСТИНА

Стан покриття is = 25%

A = 3

B = 4

(a> b)

ПОМИЛКОВИЙ

Покриття остаточного автомата

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

Який тип покриття коду вибрати

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

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

Чим вища ймовірність того, що дефекти спричинять дорогі виробничі збої, тим серйозніший рівень покриття вам потрібно вибрати.

Покриття коду проти функціонального покриття

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

Інструменти покриття коду

Ось список важливих інструментів охоплення коду:

Назва інструменту Опис
Кобутура Це інструмент покриття з відкритим вихідним кодом. Він вимірює охоплення тестуванням, вимірюючи основу коду, та аналізує, які рядки коду виконуються, а які не виконуються під час запуску набору тестів.
Конюшина Clover також зменшує час тестування, лише запускаючи тести, які охоплюють код програми, який був змінений з попередньої збірки.
DevPartner DevPartner дозволяє розробникам аналізувати код Java на предмет якості та складності коду.
Емма EMMA підтримує охоплення класів, методів, рядків та базових блоків, агрегований вихідний файл, клас та метод.
Калістік Kalistick - це стороння програма, яка аналізує коди з різних точок зору.
CoView та CoAnt Програмне забезпечення для кодування - це інструмент охоплення коду для метрик, створення макетних об’єктів, перевірки коду, охоплення шляхів та гілок тощо
Буллсай для C ++ BulseyeCoverage - це інструмент охоплення коду для C ++ та C.
Гідролокатор Sonar - це відкритий інструмент покриття коду, який допомагає управляти якістю коду.

Переваги використання покриття коду

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

Недоліки використання покриття коду

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

Резюме

  • Покриття коду - це міра, яка описує ступінь перевірки вихідного коду програми
  • Це допоможе вам виміряти ефективність впровадження тесту
  • П'ять методів кодового покриття - це 1.) Покриття заяви 2.) Покриття стану 3) Покриття філії 4) Покриття покриття 5) Покриття FSM
  • Покриття висловлювання передбачає виконання всіх виконуваних операторів у вихідному коді принаймні один раз
  • Покриття рішень повідомляє про справжні або хибні результати кожного булевого виразу
  • При охопленні філій перевіряються всі результати модуля коду
  • Умовний покаже, як оцінюються змінні або підвирази в умовному висловлюванні
  • Покриття кінцевого автомата, безумовно, є найскладнішим типом методу покриття коду
  • Для того, щоб вибрати метод покриття, тестувальник повинен перевірити вартість потенційного штрафу, втрату репутації, втрату продажу тощо.
  • Покриття коду говорить вам про те, наскільки добре використовувався вихідний код вашим тестовим стендом, тоді як функціональне покриття вимірює, наскільки добре було охоплено функціональність дизайну
  • Cobertura, JTest, Clover, Emma, ​​Kalistick - це кілька важливих інструментів охоплення коду
  • Покриття коду дозволяє створювати додаткові тестові кейси для збільшення охоплення
  • Покриття коду не допомагає вам визначити, чи протестували ми всі можливі значення функції