Автотесты - KJrTT/Indive_project GitHub Wiki

Автоматические тесты

В проекте реализованы автотесты с помощью библиотеки doctest. Все тесты находятся в файле tests/unit_tests.cpp.

Описание автотестов

1. ProtocolNameFromPacket - TCP variants

  • Назначение: Проверяет определение протокола для TCP-пакетов.
  • Входные данные: Искусственно созданные TCP-пакеты с разными портами.
  • Проверки:
    • HTTP (порт 80) → ожидается строка "HTTP"
    • HTTPS (порт 443) → ожидается строка "HTTPS"
    • Прочие TCP (порт 1234) → ожидается строка "TCP"
  • Ожидаемый результат: Для каждого случая функция возвращает корректное имя протокола.

2. ProtocolNameFromPacket - UDP variants

  • Назначение: Проверяет определение протокола для UDP-пакетов.
  • Входные данные: Искусственно созданные UDP-пакеты с разными портами.
  • Проверки:
    • DNS (порт 53) → ожидается строка "DNS"
    • Прочие UDP (порт 1234) → ожидается строка "UDP"
  • Ожидаемый результат: Для каждого случая функция возвращает корректное имя протокола.

3. ProtocolNameFromPacket - ARP, ICMP, IPv4, IPv6

  • Назначение: Проверяет определение протокола для специальных и fallback-пакетов.
  • Входные данные: Искусственно созданные пакеты ARP, ICMP, IPv4 (без TCP/UDP/ICMP), IPv6.
  • Проверки:
    • ARP → ожидается строка "ARP"
    • ICMP → ожидается строка "ICMP"
    • IPv4 (fallback) → ожидается строка "IPv4"
    • IPv6 (fallback) → ожидается строка "IPv6"
  • Ожидаемый результат: Для каждого случая функция возвращает корректное имя протокола.

4. GetLengthIndicator - all categories

  • Назначение: Проверяет функцию-индикатор размера пакета.
  • Входные данные: Различные значения длины пакета.
  • Проверки:
    • 1500 байт → ожидается строка "Large packet"

    • 1001-1500 байт → ожидается строка "Medium packet"
    • 100-1000 байт → ожидается строка "Normal"
    • <100 байт → ожидается строка "Small packet"
  • Ожидаемый результат: Для каждого случая функция возвращает корректный индикатор.

Пример запуска автотестов

cmake --build build --config Release
./build/tests/Release/unit_tests.exe --success

Пример вывода:

[doctest] test cases: 4 | 4 passed | 0 failed | 0 skipped
[doctest] assertions: 20 | 20 passed | 0 failed |
[doctest] Status: SUCCESS!

UnitTest

Назад