Основи Linux
Командний рядок з нуля: файли, права, процеси, мережа, bash-скрипти і SSH — у терміналі навчальної Ubuntu.
Курс за підпискою
Пишіть тести, які ловлять справжні помилки, — і код, якому можна довіряти
Отримати доступ до курсу
Курс за підпискою · Навчання у власному темпі
Про курс
Курс для тих, хто вже пише на JavaScript і хоче перестати перевіряти програму вручну після кожної зміни. Ви навчитеся писати автоматичні тести вбудованими інструментами Node.js — node:test і node:assert, — підбирати граничні випадки, працювати за TDD, підміняти залежності заглушками, шпигунами й фейковими таймерами та відрізняти тест, який справді захищає код, від тесту, який лише «зеленіє».
Аудиторія
Перевіряєте код вручну
Напишете автоматичні тести вбудованими node:test і node:assert, які повторюватимуть перевірки за вас.
Тести «зеленіють», а баги проходять
Навчитеся підбирати граничні випадки й писати тести, які падають на прихованих версіях коду з типовими помилками.
Код залежить від мережі й таймерів
Підмінятимете залежності заглушками, шпигунами й mock.fn, а час — фейковими таймерами, щоб тести були швидкими й стабільними.
Курс спирається на знання, позначені нижче як обов’язкові.
Потрібно знати
Курс «Основи програмування на JavaScript» — функції, масиви, об'єкти, методи масивів, try/catch.
require, пояснено в першому розділі.async/await), але потрібний мінімум ми нагадаємо.Якщо цих знань ще немає — пройдіть курси за порядком:
Результат
писати перевірки assert.equal, deepEqual, throws, rejects і знати, коли яку
організовувати тести через test, describe і хуки, тестувати асинхронний код
знаходити граничні випадки й класи еквівалентності, писати табличні тести
працювати в циклі red → green → refactor
використовувати заглушки, шпигуни, фейки й mock.fn / mock.method
тестувати код із таймерами й датами через фейковий час
проєктувати код так, щоб його було легко тестувати (впровадження залежностей)
оцінювати якість тестів: покриття, мутації, крихкі тести
Формат
У більшості завдань ви пишете тести до готового коду. Перевірка запускає ваші тести не лише на правильній реалізації, а й на прихованих версіях із типовими помилками: тест зараховано, якщо він проходить на правильному коді й падає на кожній версії з помилкою. Так само працює мутаційне тестування в реальних командах. В інших завданнях — навпаки: тести дано, і ви пишете код, щоб вони пройшли, як у справжньому TDD.
17 уроків з прикладами
25+ завдань з автоматичною перевіркою
9 тестів для самоперевірки
Онлайн на my.prog.academy, без встановлення програм
AI-помічник
На сторінках курсу, уроків і завдань є кнопка «Запитати AI». Помічник знає матеріали саме цього курсу й урок, на якому ви зараз, тому відповідає по темі й показує, у яких уроках про це йдеться.
Не зрозуміли урок з першого разу — попросіть пояснити простіше або дати ще один приклад.
Застрягли — підкаже, з чого почати, і допоможе знайти помилку у вашому рішенні. Готового рішення не дає.
Запитайте, де пояснювали поняття, — і отримаєте посилання на потрібні уроки курсу.
Уточнюйте без повторів: помічник пам’ятає розмову, а нещодавні розмови курсу зберігаються.
Входить у кожен тариф оплаченої підписки — Basic і Premium. У Premium ліміти використання AI-помічника вищі — ним можна користуватися активніше. Це помічник у навчанні, а не генератор готових відповідей: він пояснює й підказує, а завдання ви розв’язуєте самі.
Програма
9 модулів, 25+ практичних завдань з автоматичною перевіркою і 9 тестів. Відкрийте модуль, щоб побачити всі теми.
Що таке автоматичний тест і що він захищає, модулі require, node:assert/strict: equal, deepEqual, ok, throws.
test і describe, хуки beforeEach/afterEach і before/after, skip і todo, звіт про запуск; Promise і async/await у тестах, assert.rejects.
Як вибирати вхідні дані для тестів: класи еквівалентності, граничні значення, порожнє/одне/багато, особливі значення; табличні тести й очікування, записані вручну.
Цикл red → green → refactor, найменший крок, «fake it», тріангуляція, рефакторинг під зеленими тестами, тест як виконувана специфікація; коли TDD допомагає, а коли ні.
Навіщо ізолювати код від мережі, пошти й платежів; stub, spy, fake і mock; mock.fn, mock.method і перевірка викликів у node:test; залежності як параметри.
Чому справжній час робить тести повільними й нестабільними, mock.timers: enable, tick, runAll, setTime, керування Date, таймери разом із промісами, впровадження годинника.
Жорстко зашиті залежності проти впровадження залежностей, фабрики з колабораторами, фейковий репозиторій у пам'яті, заглушки для fetch, шпигуни лише для взаємодій, граничні й помилкові шляхи.
Покриття рядків і гілок, мутаційне тестування, крихкі й нестабільні тести, поведінка замість реалізації, хороші назви тестів.
Тестування цілого модуля: список поведінок, вибір випадків, двійники, структура describe, перевірка, що кожне правило покрито. Склад, бібліотека з годинником, обмежувач запитів за TDD.
Стек
Код пишете й запускаєте в браузері на платформі — встановлювати нічого не потрібно.
Доступ
Заповніть коротку форму на цій сторінці.
Після заявки перейдіть у Telegram-бот Prog Academy — він надішле подальші інструкції щодо доступу.
Уроки, практика й тести — на my.prog.academy, у зручному для вас темпі.
Контакт
Залиште контакти — надішлемо деталі доступу до курсу «Тестування JavaScript: unit-тести, TDD і моки».
Командний рядок з нуля: файли, права, процеси, мережа, bash-скрипти і SSH — у терміналі навчальної Ubuntu.
Шлях запиту від URL до готової сторінки: DNS, TCP, TLS, HTTP, кеш, cookies, API і захист вебзастосунків.
Захист від сучасних атак для нетехнічних фахівців: фішинг, паролі й MFA, інциденти, дипфейки і безпечна робота з ШІ.
Залиште запитання — підкажемо, чи підходить вам курс і з чого краще почати.