Code Інструмент покриття: тестування операторів, розгалужень та рішень
⚡ Розумний підсумок
Code покриття — це вимірювання білої скриньки, яке показує ступінь, до якої вихідний код був використаний набором тестів, helping команди знаходять непротестовані оператори, гілки, умови та шляхи, які можуть займати приховані дефекти.

Що таке Code Покриття?
Code охоплення — це міра, яка описує ступінь тестування вихідного коду програми. Це одна з форм тестування білої скриньки який знаходить області програми, що не охоплені набором тестових випадків. Це також допомагає створювати додаткові тестові випадки для збільшення покриття та визначення кількісної міри покриття коду.
У більшості випадків система покриття коду збирає інформацію про запущену програму. Потім вона поєднує її з інформацією про вихідний код, щоб створити звіт про покриття коду набору тестів.
Навіщо використовувати Code Тестування покриття?
Ось кілька головних причин використання покриття коду:
- Це допомагає вам оцінити ефективність реалізації тестів.
- Він пропонує кількісне вимірювання тестування.
- Він визначає ступінь перевірки вихідного коду.
Code Методи покриття
Нижче наведено основні методи покриття коду:
- Покриття заяви
- Покриття рішень
- Покриття філій
- Toggle Покриття
- Покриття FSM
Покриття заяви
Покриття заяви – це метод тестування «білої скриньки», за якого всі виконувані оператори у вихідному коді виконуються принаймні один раз. Він використовується для обчислення кількості виконаних операторів у вихідному коді. Основна мета покриття операторів – охопити всі можливі шляхи, рядки та оператори у вихідному коді.
Покриття операторів використовується для отримання сценаріїв на основі структури тестованого коду.
У тестуванні білої скриньки тестер зосереджується на тому, як працює програмне забезпечення. Іншими словами, тестер зосереджується на внутрішній роботі вихідного коду, що стосується графіків потоку керування або блок-схем.
Зазвичай у будь-якому програмному забезпеченні, якщо подивитися на вихідний код, буде широкий спектр елементів, таких як оператори, функції, looping, обробники винятків тощо. Залежно від вхідних даних програми, деякі оператори коду можуть не виконуватися. Метою покриття операторів є охоплення всіх можливих шляхів, рядків та операторів у коді.
Давайте розглянемо це на прикладі розрахунку покриття виписки. Тут ми розглянемо два різні сценарії, щоб перевірити відсоток покриття виписки для кожного сценарію.
Source Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Сценарій 1: Якщо A = 3, B = 9
Жовтим кольором позначені оператори, які виконуються відповідно до сценарію. Кількість виконаних операторів = 5, загальна кількість операторів = 7, отже, покриття операторів = 5/7 = 71%.
Сценарій 2: Якщо A = -3, B = -9
Жовтим кольором позначені оператори, які виконуються відповідно до сценарію. Кількість виконаних операторів = 6, загальна кількість операторів = 7, отже, покриття операторів = 6/7 = 85%.
Але загалом, якщо бачите, всі твердження охоплені обома сценаріями. Тож можна зробити висновок, що загальне покриття твердження становить 100%.
Що охоплює Statement Coverage?
- Невикористані заяви
- померлі Code
- Невикористані гілки
- Відсутні твердження
Тестування покриття рішень
Покриття рішень — це метод тестування білої скриньки, який повідомляє про істинні або хибні результати кожного логічного виразу у вихідному коді. Метою тестування покриття рішень є охоплення та валідація всього доступного вихідного коду шляхом перевірки та забезпечення того, щоб кожна гілка кожної можливої точки прийняття рішення виконувалася принаймні один раз.
У цьому типі покриття вирази можуть стати складними, що ускладнює досягнення 100% покриття. Саме тому для звітності про цю метрику використовуються різні методи. Ці методи надають пріоритет найважливішим комбінаціям. Хоча це схоже на покриття розгалуженнями, воно забезпечує більшу чутливість до потоку керування.
Приклад охоплення рішень
Розглянемо такий код:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Сценарій 1: Значення a дорівнює 2. Результат рішення «Ні». Якщо позначено (a>5), то покриття рішень = 50%.
Сценарій 2: Значення a дорівнює 6. Результат рішення «Так». Якщо позначено (a>5), то покриття рішень = 50%.
| Тестовий випадок | Значення А | Вихід | Покриття рішень |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Тестування охоплення філій
Покриття філій – це метод тестування білої скриньки, в якому перевіряється кожен результат з модуля коду (оператора або циклу). Мета покриття гілок полягає в тому, щоб забезпечити виконання кожної умови рішення з кожної гілки принаймні один раз. Це допомагає виміряти частку незалежних сегментів коду та знайти розділи, які не мають гілок.
Наприклад, якщо результати є двійковими, вам потрібно перевірити як True, так і False результати.
Формула для розрахунку покриття філії:
Приклад покриття філії
Щоб вивчити покриття гілок, розглянемо той самий приклад, що й раніше. Покриття гілок також враховуватиме безумовне переміщення.
| Тестовий випадок | Значення А | Вихід | Покриття рішень | Покриття філій |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Переваги покриття відділення:
- Дозволяє перевірити всі гілки в коді.
- Допомагає вам переконатися, що жодне розгалуження не призводить до жодних аномалій у роботі програми.
- Вирішує проблеми, що виникають через тестування покриття операторів.
- Дозволяє знаходити області, які не перевіряються іншими методами тестування.
- Дозволяє знайти кількісну міру покриття коду.
- Покриття гілок ігнорує гілки всередині логічних виразів.
Тестування покриття умов
Покриття умовПокриття умов, або покриття виразів, – це метод тестування, який використовується для перевірки та оцінки змінних або підвиразів в умовному операторі. Метою покриття умов є перевірка окремих результатів для кожної логічної умови. Покриття умов пропонує кращу чутливість до потоку керування, ніж покриття рішень. У цьому покритті розглядаються лише вирази з логічними операндами.
Наприклад, якщо вираз містить логічні операції, такі як І, АБО або XOR, це вказує на загальну кількість можливих варіантів. Покриття умов не гарантує повного покриття рішень.
Формула для розрахунку покриття умов:
Для виразу з двома операндами існують чотири можливі комбінації: TT, FF, TF та FT. Розглянемо вхідні дані X=3, Y=4 (x b) ХИБНІСТЬ, що дає Покриття Умови 1/4 = 25%.
Покриття кінцевого автомата
Покриття кінцевим автоматом, безумовно, є найскладнішим типом методу покриття коду. Це пояснюється тим, що він працює на поведінці проекту. У цьому методі покриття потрібно звернути увагу на те, скільки разів певні стани відвідуються або проходять через них. Він також перевіряє, скільки послідовностей включено до кінцевого автомата.
Який тип Code Покриття на вибір
Це, безумовно, найскладніша відповідь. Щоб вибрати метод покриття, тестеру потрібно перевірити, чи:
- код, що тестується, має один або кілька невиявлених дефектів,
- вартість потенційного штрафу,
- ціна втраченої репутації,
- вартість втрачених продажів тощо.
Чим вища ймовірність того, що дефекти призведуть до дорогих збоїв у виробництві, тим суворіший рівень покриття потрібно вибрати.
Code Покриття проти функціонального покриття
| Code Покриття | Функціональне покриття |
|---|---|
| Показує, наскільки добре вихідний код був протестований на вашому тестовому стенді. | Вимірює, наскільки добре функціональність конструкції була охоплена вашим тестовим стендом. |
| Ніколи не використовує специфікацію дизайну. | Використовує специфікацію проекту. |
| Зроблено розробниками. | Зроблено тестувальниками. |
Code Інструменти покриття
Ось список важливих інструментів для покриття коду:
| Назва інструменту | Опис |
|---|---|
| Cobertura | Інструмент для оцінки покриття тестами з відкритим вихідним кодом. Він вимірює покриття тестами, використовуючи базу коду та аналізуючи, які рядки коду виконуються, а які ні під час запуску набору тестів. |
| Клевер | Конюшина (OpenClover) також скорочує час тестування, запускаючи лише ті тести, які охоплюють код програми, змінений з моменту попередньої збірки. |
| DevPartner | DevPartner дозволяє розробникам аналізувати Java код для якості та складності коду. |
| Емма | EMMA підтримує покриття класів, методів, рядків та базових блоків, агрегованих на рівнях вихідного файлу, класу та методу. |
| Калістик | Kalistick — це сторонній застосунок, який аналізує код з різних точок зору. |
| CoView і CoAnt | Інструмент покриття коду для метрик, створення макетів об'єктів, тестування коду, покриття шляхів та гілок тощо. |
| Яблучко для C++ | BullseyeCoverage – це інструмент для покриття коду C++ і C. |
| Сонар | Sonar — це інструмент для охоплення відкритого коду, який допомагає керувати якістю коду. |
Переваги та недоліки використання Code Покриття
| Переваги | Недоліки |
|---|---|
| Корисно для оцінки кількісного показника покриття коду. | Навіть коли певна функція не реалізована в дизайні, покриття коду все одно показує 100% покриття. |
| Дозволяє створювати додаткові тестові випадки для збільшення покриття. | Неможливо визначити, чи всі можливі значення функції були перевірені за допомогою покриття коду. |
| Дозволяє знайти області програми, які не були випробувані набором тестових випадків. | Code охоплення не показує, наскільки добре ви охопили свою логіку. |






