Автотесты - 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"
- HTTP (порт 80) → ожидается строка
- Ожидаемый результат: Для каждого случая функция возвращает корректное имя протокола.
2. ProtocolNameFromPacket - UDP variants
- Назначение: Проверяет определение протокола для UDP-пакетов.
- Входные данные: Искусственно созданные UDP-пакеты с разными портами.
- Проверки:
- DNS (порт 53) → ожидается строка
"DNS"
- Прочие UDP (порт 1234) → ожидается строка
"UDP"
- DNS (порт 53) → ожидается строка
- Ожидаемый результат: Для каждого случая функция возвращает корректное имя протокола.
3. ProtocolNameFromPacket - ARP, ICMP, IPv4, IPv6
- Назначение: Проверяет определение протокола для специальных и fallback-пакетов.
- Входные данные: Искусственно созданные пакеты ARP, ICMP, IPv4 (без TCP/UDP/ICMP), IPv6.
- Проверки:
- ARP → ожидается строка
"ARP"
- ICMP → ожидается строка
"ICMP"
- IPv4 (fallback) → ожидается строка
"IPv4"
- IPv6 (fallback) → ожидается строка
"IPv6"
- ARP → ожидается строка
- Ожидаемый результат: Для каждого случая функция возвращает корректное имя протокола.
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!