Це відповідає на те, чому вам слід робити тестування одиниць.
Три відео нижче тестують блок тестування в JavaScript, але загальні принципи застосовуються для більшості мов.
Тестування одиниць: Хвилини зараз врятують години пізніше - Ерік Манн - https://www.youtube.com/watch?v=_UmmaPe8Bzc
Тестування модулів JS (дуже добре) - https://www.youtube.com/watch?v=-IYqgx8JxlU
Написання Testable JavaScript - https://www.youtube.com/watch?v=OzjogCFO4Zo
Тепер я просто вивчаю цю тему, тому я не можу бути на 100% правильним, і тут є більше, ніж те, що я тут описую, але моє основне розуміння одиничного тестування полягає в тому, що ви пишете якийсь тестовий код (який тримається окремо від вашого основний код), який викликає функцію у вашому головному коді з введенням (аргументами), необхідного для функції, а потім код перевіряє, чи повертає він дійсне значення повернення. Якщо вона поверне дійсне значення, рамка тестування одиниць, яку ви використовуєте для запуску тестів, показує зелене світло (все добре), якщо значення недійсне, ви отримуєте червоне світло, а потім зможете вирішити проблему безпосередньо перед вами випустити новий код у виробництво, без тестування ви, можливо, насправді не виявили помилку.
Отже, ви пишете тести для свого поточного коду і створюєте код, щоб він пройшов тест. Через кілька місяців вам або комусь іншому потрібно змінити функцію у вашому головному коді, тому що раніше ви вже писали тестовий код для цієї функції, ви тепер запускаєтеся знову, і тест може бути невдалим, оскільки кодер ввів логічну помилку у функцію або повертає щось повністю відрізняється від того, що повинна повернути ця функція. Знову ж без тестування цю помилку може бути важко відстежити, оскільки це може вплинути і на інший код, і він залишиться непоміченим.
Також той факт, що у вас є комп'ютерна програма, яка працює через ваш код і тестує його замість того, щоб ви вручну це робили на сторінці браузера за сторінкою, економить час (тестування одиниць на JavaScript). Скажімо, ви змінюєте функцію, яка використовується деяким сценарієм на веб-сторінці, і вона працює добре і добре для своєї нової мети. Але, скажімо також, для аргументів, що у вашому коді є ще одна функція, яка залежить від того, щоб нова модифікована функція працювала належним чином. Ця залежна функція може перестати працювати через зміни, які ви внесли до першої функції, однак без тестів, які автоматично виконуються на вашому комп'ютері, ви не помітите, що є проблема з цією функцією, поки вона фактично не буде виконана і ти'
Знову повторюю, що тести, які виконуються під час розробки вашої програми, вирішать подібні проблеми під час кодування. Не маючи тестів, вам доведеться вручну пройти всю програму, і навіть тоді помилку можна буде важко помітити, наївно ви надсилаєте її у виробництво і через деякий час добрий користувач надсилає вам звіт про помилку (який буде не так добре, як ваші повідомлення про помилки в тестовій рамці).
Це досить заплутано, коли ти вперше почуєш тему і думаєш собі, чи я вже не тестую свій код? І написаний вами код працює так, як це, як і передбачається, "навіщо мені потрібен інший фреймворк?" ... Так, ви вже тестуєте свій код, але комп'ютер краще це робити. Вам просто потрібно написати один раз досить хороші тести для функції / одиниці коду, а про інше подбає вас потужний процесор, замість того, щоб вам вручну перевірити, чи працює весь ваш код, коли ви вносите зміни в свій код.
Крім того, вам не доведеться перевіряти свій код, якщо ви цього не хочете, але він окупається, коли ваша база проекту / коду починає зростати, оскільки шанси на введення помилок зростають.