Порівняння двох підходів до Unit-тестування Angular-додатків.
No Thumbnail Available
Date
2024
Journal Title
Journal ISSN
Volume Title
Publisher
СНУ ім. В. Даля
Abstract
В сучасному світі реактивні системи набирають все більшої популярності, при цьому в основі реактивно-сті є робота з асинхронними потоками даних. Тестування реактивних систем стоїть окремою задачею, в якій є низка відкритих питань, наприклад, вимірювання ефективності тестів, використовуючи той чи інший підхід до тестування. Для тестування Angular-додатків в роботі було об-рано два підходи: 1) з використанням зв’язки Jasmine+ Karma, що встановлюється за замовчуванням при створенні додатку; 2) з використанням Jest. В статті тестується Angular-додаток, який має 7тестів, 3 з яких – тести синхронних блоків коду і 4 –для асинхронних блоків. При тестуванні використовувались інструменти, що пропонує Angular із коробки та фреймворк Jest. Для вимірювання ефективності Unit-тестів, як правило, використовуються чотири критерії [2, 4]: за-хист від помилок (protection against bugs); стійкість до рефакторингу (resilience to refactoring); швидкість зворотнього зв’язку (fast feedback); простота підтримки (maintain ability). Порівнюючи різні підходи до тестування можна визначити як той чи інший підхід впливає на конкретний критерій ефективності Unit-тестів, підвищуючи його, або навпаки зменшуючи. Як відомо, на сьогодні не існує автоматичного способу вимірювання ефективності з отриманням значень для кожного критерію і тому кожен тест потрібно оцінювати окремо. Для отримання значення по критерію «швидкість зворотнього зв’язку» будемо використовувати час виконання тестів, в тому числі з визначенням відсотка покриття коду тестами при допомозі команди coverage. Цей критерій показує, що чим швидше виконується тест на етапі розробки, тим меньше часу витрачається на усунення знайдених помилок, тим самим, значно підвищуючи ефективність Unit-тестів. В результаті порівняння роботи двох фреймворків для тестування, можна зробити висновок, що при використанні Jest тести виконуються в середньому на 60% швидше за рахунок того, що система відстежує зміни файлів та не виконує непотрібних дій. При тестуванні асинхронного коду така ж тенденція (збільшення швидкості тестування на 60%) зберігається, тому Jest відмінно підходить для виконання тестування Angular-проектів, які містять багато асинхронного коду. Так як ефективність Unit-тестів залежить від швидкості зворотнього зв’язку (fast feedback), то, використовуючи Jest, ми, тим самим, значно підвищуємо ефективність Unit-тестування та всього проекту в цілому.
Description
Keywords
Unit-тестування, Angular-додаток, Jasmine, Karma, Jest, модульні тести, -test coverage, Angular CLI, ChromeHeadless, реактивність, синхронний та асинхронний код
Citation
Полупан Ю. В., Родіонов П. Ю., Дьомін М. К. Порівняння двох підходів до Unit-тестування Angular-додатків. Вісник Східноукраїнського національного університету імені Володимира Даля. 2024. № 5 (285). С. 5-9.