Перейти к содержанию
Типичный Социум
  • Совершенно свободно и бесплатно, Вы можете создавать свои Статьи, на различную тематику, делится опытом и знаниями с другими участниками и посетителями Типичного социума!
    Выделяйте свои Статьи, тегами и префиксами.
  • Что такое UNIT-тестирование?


    📌 Что такое 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
    Есть вопросы или нужен пример для твоего проекта? Пиши! 🚀


    AndrewPro

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

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

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



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

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

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

    ×   Вставлено с форматированием.   Вставить как обычный текст

      Разрешено использовать не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...

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

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