Перейти к содержанию

📌 Что такое UNIT-тестирование?

UNIT-тестирование (модульное тестирование) — это процесс проверки отдельных частей (модулей) кода на корректность.

Модуль (unit) — это минимальная тестируемая часть кода (например, функция, метод, класс).
Цель: убедиться, что каждый модуль работает изолированно и правильно.
Кто пишет: разработчики, QA-инженеры.


🔹 Пример UNIT-теста (на TypeScript с Jest)

Допустим, у нас есть функция сложения:

export function sum(a: number, b: number): number {
  return a + b;
}

📌 Пишем UNIT-тест с Jest:

import { sum } from './math';

test('Сложение чисел', () => {
  expect(sum(2, 3)).toBe(5);
  expect(sum(-1, 1)).toBe(0);
});

✔️ Как это работает?

  • expect(sum(2, 3)).toBe(5); — проверяем, что sum(2,3) возвращает 5.
  • Если результат не совпадает с ожидаемым, тест провалится.

🔥 Зачем нужны UNIT-тесты?

Легко находить ошибки на ранних этапах
Помогают рефакторить код без страха что-то сломать
Ускоряют разработку (меньше багов в продакшене)
Повышают доверие к коду

📌 Важно! UNIT-тест проверяет только один модуль, но не связь с другими модулями (для этого есть интеграционные тесты).


🚀 Как запускать UNIT-тесты?

  1. Установить Jest (для TypeScript):
    npm install --save-dev jest ts-jest @types/jest

     

  2. Добавить команду в package.json:
    "scripts": {
      "test": "jest"
    }

     

  3. Запустить тесты:
    npm test

     


Другие инструменты для UNIT-тестирования в TS

  • Jest — самый популярный
  • Mocha + Chai — гибкий подход
  • Vitest — быстрый аналог Jest
  • AVA — минималистичный

 

📌 Подробный разбор UNIT-тестов

🔹 Что такое UNIT-тестирование?

UNIT-тестирование (модульное тестирование) — это процесс проверки отдельных частей (модулей) кода на корректность в изоляции от других частей программы.

UNIT (модуль) — это небольшая независимая часть кода:

  • Функция
  • Метод класса
  • Компонент (в случае фронтенда)

Цель: проверить, что каждый модуль работает правильно сам по себе, без внешних зависимостей (например, базы данных, API, файловой системы).

📌 Где используются UNIT-тесты?

  • Backend (проверка функций, API, бизнес-логики)
  • Frontend (тестирование компонентов UI, логики)
  • Мобильная разработка (проверка сервисов и логики приложения)
  • GameDev (тестирование геймплейных механик)
  • DevOps/SRE (тестирование инфраструктурных скриптов)

🔥 Какие инструменты и фреймворки используют для UNIT-тестов?

В зависимости от языка программирования существуют разные инструменты:

Язык программирования Фреймворки/Библиотеки для UNIT-тестирования
JavaScript / TypeScript Jest, Mocha, Jasmine, AVA, Vitest
Python unittest, pytest, nose2
Java JUnit, TestNG, Mockito
C# (.NET) NUnit, xUnit, MSTest
PHP PHPUnit
Go testing package, Testify
Ruby RSpec, Minitest
Swift (iOS) XCTest
Kotlin JUnit, Kotest
C++ Google Test (gtest), Catch2

🚀 Как писать UNIT-тесты?

1. UNIT-тест на TypeScript (Jest)

📌 Простая функция для тестирования:

export function sum(a: number, b: number): number {
  return a + b;
}

📌 Тест с Jest:

import { sum } from './math';

test('Функция сложения работает правильно', () => {
  expect(sum(2, 3)).toBe(5);
  expect(sum(-1, 1)).toBe(0);
});

📌 Запуск тестов:

npm test

2. UNIT-тест на Python (pytest)

📌 Функция:

def sum(a: int, b: int) -> int:
    return a + b

📌 Тест с pytest:

from math_operations import sum

def test_sum():
    assert sum(2, 3) == 5
    assert sum(-1, 1) == 0

📌 Запуск тестов:

pytest

3. UNIT-тест на Java (JUnit)

📌 Класс для тестирования:

public class Calculator {
    public int sum(int a, int b) {
        return a + b;
    }
}

📌 Тест с JUnit:

import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;

public class CalculatorTest {
    @Test
    void testSum() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.sum(2, 3));
        assertEquals(0, calc.sum(-1, 1));
    }
}

📌 Запуск тестов:

mvn test

Где применяются UNIT-тесты?

  1. Backend

    • Проверка бизнес-логики
    • Тестирование API-эндпоинтов
    • Проверка обработки данных
  2. Frontend

    • Тестирование UI-компонентов (React, Vue, Angular)
    • Проверка функций и утилит
    • Тестирование взаимодействия с API
  3. Мобильные приложения

    • Проверка сервисов (Android, iOS)
    • Тестирование ViewModel и бизнес-логики
  4. Игровая индустрия (GameDev)

    • Проверка игровых механик
    • Тестирование AI
  5. DevOps / SRE

    • Тестирование инфраструктурных скриптов
    • Проверка CI/CD процессов

📊 Плюсы и минусы UNIT-тестов

Плюсы:

✔ Позволяют раньше находить ошибки
✔ Упрощают рефакторинг кода
✔ Улучшают качество кода
✔ Повышают надежность системы
✔ Облегчают автоматизацию тестирования

Минусы:

Требуют времени на написание
Не покрывают интеграционные ошибки
Трудно тестировать сложные модули с зависимостями


🎯 Best Practices (Лучшие практики UNIT-тестирования)

Принцип FIRST (Fast, Independent, Repeatable, Self-validating, Timely)
Писать тесты до или во время написания кода (TDD)
Каждый тест проверяет только ОДНУ функцию
Имена тестов должны быть понятны (например, testSumReturnsCorrectResult)
Mock-зависимости (например, базы данных)
Генерировать отчёты о тестах


🎯 Вывод

UNIT-тестирование — это важный инструмент, который помогает делать код надежнее, предотвращать баги и ускорять разработку.

Если хочешь попробовать написать UNIT-тесты для своего проекта — могу помочь! 🚀


test_automation_process_piramid.webp
Есть вопросы или нужен пример для твоего проекта? Пиши! 🚀

Обратная связь

Рекомендуемые комментарии

Комментариев нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Добавить комментарий...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.Политика конфиденциальности