Розробка тестів для NodeJS-застосунків
Процес тестування
4 основні види тестування
Функціональне тестування
Елементи функціонального тестування
Функціональне тестування може бути проведено відповідно до специфікації, а також і на основі бізнес-процесу, тобто відповідно до знань системи.
Mocha - фреймворк для тестування JS-коду
Установка Mocha
Глобальна установка:
npm install --global mocha
Локальна установка:
npm install --save-dev mocha
Так як Mocha необхідний лише для тестування проекту, то він додається в файлі package.json в devDependencies завдяки атрибуту --save-dev.
Команда для запуску тестів
Для спрощення запуску тестів в package.json створимо команду:
Тести міститимуться в файлах з іменем *.test.js та запускатимуться командою npm test:
Приклад тестування функцій
Створимо файл functions.js і в ньому функцію додавання двох чисел:
Приклад використання. Створюємо тест
Створимо файл з тестами functions.test.js і в ньому додамо один тест:
Виконаємо тестування і отримуємо результат:
Специфікація тестів за методикою BDD (Behavior-driven development)
Test-driven development (розробка керована тестуванням)
Розробка, керована тестуванням, — це методологія розробки програмного забезпечення, яка, по суті, стверджує, що для кожної одиниці програмного забезпечення розробник програмного забезпечення повинен:
Behavior-driven development (керована поведінкою розробка)
методологія передбачає виконання тестів у вигляді запитів, наближених до природної мови. Результатом є більш тісний зв'язок з критеріями прийнятності для конкретної функції та тестами, які використовуються для перевірки цієї функціональності.
Організація коду. Для створення тестів Mocha, як правило використовує шаблон:
describe() - використовується для групування аналогічних тестів.
it() - містить код тесту: взаємодія з функціями, що тестуються. Використання бібліотеки assert
Модуль assert
Має набір функцій-підтверджень для перевірки тестових випадків
Методи модуля assert
Опис специфікації:
Що саме описується та використовується для групування блоків it
Опис тесту та функція, що виконує тестування
Перевірка рівності результату функції правильному значенню
Завдання 1.
Створити функцію isSimple(a), яка перевіряє чи є дане число a простим.
Розробити систему тестів для цієї функції для значень -1, -7, 1, 2, 3, 5, 9, 17, 18
Зробіть функцію неправильною (наприклад для значень 2, 3, вона вертає false). Перевірте роботу тестів
Виправте помилки в функції, після чого знову запустіть тестування. Всі тести повинні бути пройдені.
Тестування асинхронного коду
Після виконання тесту потрібно викликати функцію done, яку передаємо як параметр в колбек функції it():
або
Хуки
Якщо перед виконанням тестів потрібно здійснювати підготовчі дії (наприклад, очистити колекцію), знадобиться хук before:
Завдання 2. Тести для збереження даних
Дано модель User із структурою та правилами: https://gist.github.com/alexanderkuzmenko/922a683712aba0eb191b815e6f75bab5
Розробіть набір тестів для збереження даних користувачів.
Тести повинні використовувати дані з колекції із щонайменше 8-ми записів
Щонайменше 6 записів із колекції повинні містити помилки валідації
Провести тестування та зробити висновки про правильність роботи збереження даних моделі
Приклад даних для тестування: